<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>.net Basteleien</title>
	<atom:link href="http://dotnetbastelei.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://dotnetbastelei.wordpress.com</link>
	<description>Just another WordPress.com weblog</description>
	<lastBuildDate>Fri, 06 Feb 2009 17:21:24 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='dotnetbastelei.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>.net Basteleien</title>
		<link>http://dotnetbastelei.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://dotnetbastelei.wordpress.com/osd.xml" title=".net Basteleien" />
	<atom:link rel='hub' href='http://dotnetbastelei.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Extension Methods, find’ ich cool</title>
		<link>http://dotnetbastelei.wordpress.com/2009/02/06/extension-methods-find-ich-cool/</link>
		<comments>http://dotnetbastelei.wordpress.com/2009/02/06/extension-methods-find-ich-cool/#comments</comments>
		<pubDate>Fri, 06 Feb 2009 15:27:59 +0000</pubDate>
		<dc:creator>contrequarte</dc:creator>
				<category><![CDATA[.net 3.0]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[extension method]]></category>

		<guid isPermaLink="false">http://dotnetbastelei.wordpress.com/2009/02/06/extension-methods-find-ich-cool/</guid>
		<description><![CDATA[Vor Kurzem bestand die Notwendigkeit mehrfach zu prüfen, ob der jeweilige Wert, den die Variable innehat, in der Binärdarstellung ein bestimmtes bit gesetzt hat oder nicht. In dem beschriebenen Anwendungsfall ging es um das im “DragEvent” enthaltene integer Property “KeyState”. Das zu überprüfen ist an sich keine Heldentat und kann natürlich mit einer geeigneten Funktion [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dotnetbastelei.wordpress.com&amp;blog=6295979&amp;post=22&amp;subd=dotnetbastelei&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Vor Kurzem bestand die Notwendigkeit mehrfach zu prüfen, ob der jeweilige Wert, den die Variable innehat, in der Binärdarstellung ein bestimmtes bit gesetzt hat oder nicht. In dem beschriebenen Anwendungsfall ging es um das im “DragEvent” enthaltene integer Property “KeyState”. Das zu überprüfen ist an sich keine Heldentat und kann natürlich mit einer geeigneten Funktion geleistet werden. <a href="http://dotnetbastelei.files.wordpress.com/2009/02/codeextmeth1.png"><img style="border-right:0;border-top:0;display:inline;margin-left:0;border-left:0;margin-right:0;border-bottom:0;" title="codeExtMeth1" src="http://dotnetbastelei.files.wordpress.com/2009/02/codeextmeth1-thumb.png?w=644&#038;h=265" border="0" alt="codeExtMeth1" width="644" height="265" align="left" /></a> Und weil manchmal was neues auch interessant ist, hier eine Lösung mittels einer “extension method”, die es neuerdings unter .net gibt. Die “Erweiterungsmethoden” werden, wenn sie verfügbar sind, in der Visual Studio Umgebung bequem mittels Intellisense bei den Typen für die sie erstellt wurden angezeigt (Siehe die nebenstehende Abbildung). Eine recht bequeme Lösung, weil man so “seine Methoden” immer direkt zur Hand hat.</p>
<p>Wie erstellt man jetzt Erweiterungsmethoden? Ziemlich einfach, prinzipiell sind Erweiterungsmethoden statische Methoden, die in einer statischen Klasse “beheimatet” sein müssen. Der Datentyp, für den sie gelten/wirken sollen wird als erstes Argument mit vorangestelltem Schlüsselwort “this” in der Parametersammlung der zu erstellenden Methode angegeben. Das folgende Beispiel zeigt die Erweiterungsmethode, die für ein Feststellen, ob ein bit gesetzt ist oder nicht, dienen kann. Für negative Integer Werte ist die Funktion nicht zu gebrauchen, das ist aber beim Entwickeln auch nicht unbedingt nötig, weil bei über bits codierten Zuständen sowieso nur positive Werte genutzt werden.</p>
<p><img style="border-right:0;border-top:0;display:inline;border-left:0;border-bottom:0;" title="codeExtMeth" src="http://dotnetbastelei.files.wordpress.com/2009/02/codeextmeth.png?w=644&#038;h=337" border="0" alt="codeExtMeth" width="644" height="337" /></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dotnetbastelei.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dotnetbastelei.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dotnetbastelei.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dotnetbastelei.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dotnetbastelei.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dotnetbastelei.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dotnetbastelei.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dotnetbastelei.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dotnetbastelei.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dotnetbastelei.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dotnetbastelei.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dotnetbastelei.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dotnetbastelei.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dotnetbastelei.wordpress.com/22/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dotnetbastelei.wordpress.com&amp;blog=6295979&amp;post=22&amp;subd=dotnetbastelei&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dotnetbastelei.wordpress.com/2009/02/06/extension-methods-find-ich-cool/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/92768470cfe177f963bc51d7919f9121?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">contrequarte</media:title>
		</media:content>

		<media:content url="http://dotnetbastelei.files.wordpress.com/2009/02/codeextmeth1-thumb.png" medium="image">
			<media:title type="html">codeExtMeth1</media:title>
		</media:content>

		<media:content url="http://dotnetbastelei.files.wordpress.com/2009/02/codeextmeth.png" medium="image">
			<media:title type="html">codeExtMeth</media:title>
		</media:content>
	</item>
		<item>
		<title>Ein erster Versuch mit WPF und Silverlight</title>
		<link>http://dotnetbastelei.wordpress.com/2009/01/28/ein-erster-versuch-mit-wpf-und-silverlight/</link>
		<comments>http://dotnetbastelei.wordpress.com/2009/01/28/ein-erster-versuch-mit-wpf-und-silverlight/#comments</comments>
		<pubDate>Wed, 28 Jan 2009 22:59:13 +0000</pubDate>
		<dc:creator>contrequarte</dc:creator>
				<category><![CDATA[.net 3.0]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[WPF]]></category>
		<category><![CDATA[XAML]]></category>

		<guid isPermaLink="false">http://dotnetbastelei.wordpress.com/2009/01/28/ein-erster-versuch-mit-wpf-und-silverlight/</guid>
		<description><![CDATA[WPF ist die kommende Art zum Bau von Benutzeroberflächen und hat starke Gemeinsamkeiten mit Silverlight, das früher unter dem Codenamen WPF/E das Licht der Welt erblickt hat. Daher habe ich mal ein einfaches Schiebespielchen zuerst als Windows (WPF) Anwendung erstellt und es danach auf Silverlight angepasst. Die 15 orangefarbigen Buttons in der links abgebildeten GUI [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dotnetbastelei.wordpress.com&amp;blog=6295979&amp;post=13&amp;subd=dotnetbastelei&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://dotnetbastelei.files.wordpress.com/2009/01/image.png"><img style="display:inline;margin-left:0;margin-right:0;border-width:0;" title="image" src="http://dotnetbastelei.files.wordpress.com/2009/01/image-thumb.png?w=208&#038;h=244" border="0" alt="image" width="208" height="244" align="left" /></a></p>
<p>WPF ist die kommende Art zum Bau von Benutzeroberflächen und hat starke Gemeinsamkeiten mit Silverlight, das früher unter dem Codenamen <a href="http://msdn.microsoft.com/de-de/library/bb978954.aspx">WPF/E</a> das Licht der Welt erblickt hat. Daher habe ich mal ein einfaches Schiebespielchen zuerst als Windows (WPF) Anwendung erstellt und es danach auf Silverlight angepasst.</p>
<p>Die 15 orangefarbigen Buttons in der links abgebildeten GUI werden durch einen Klick auf “Mischen” durchgemischt und sollen durch anklicken von gegeigneten Buttons wieder in die Ausgangssortierung zurück geordnet werden. Im linken Bild wären die Buttons 4, 8, 12, 13, 14 sowie 15 anklickbar, weil bei Ihnen in der Spalte bzw. Zeile Platz zum Verschieben vorhanden ist. Das Spielchen habe ich schon in allen möglichen Programmierumgebungen “gebastelt”, echt benutzbar ist es aber nur bei Anwendungen, die mit grafischen Oberflächen umgehen.</p>
<p>Der XAML-Code dafür:</p>
<pre>
<pre style="font-size:12px;width:100%;"><span style="color:#0000ff;">&lt;</span><span style="color:#800000;">Window</span> <span style="color:#ff0000;">x</span>:<span style="color:#ff0000;">Class</span>=<span style="color:#0000ff;">"testWPF.Window1"</span></pre>
<pre style="font-size:12px;width:100%;">    <span style="color:#ff0000;">xmlns</span>=<span style="color:#0000ff;">"http://schemas.microsoft.com/winfx/2006/xaml/presentation"</span></pre>
<pre style="font-size:12px;width:100%;">    <span style="color:#ff0000;">xmlns</span>:<span style="color:#ff0000;">x</span>=<span style="color:#0000ff;">"http://schemas.microsoft.com/winfx/2006/xaml"</span></pre>
<pre style="font-size:12px;width:100%;">    <span style="color:#ff0000;">Title</span>=<span style="color:#0000ff;">"Schieber"</span> <span style="color:#ff0000;">Height</span>=<span style="color:#0000ff;">"410"</span> <span style="color:#ff0000;">Width</span>=<span style="color:#0000ff;">"313"</span><span style="color:#0000ff;">&gt;</span></pre>
<pre style="font-size:12px;width:100%;">    <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">StackPanel</span> <span style="color:#ff0000;">Orientation</span>=<span style="color:#0000ff;">"Vertical"</span><span style="color:#0000ff;">&gt;</span></pre>
<pre style="font-size:12px;width:100%;">        <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">Button</span> <span style="color:#ff0000;">x</span>:<span style="color:#ff0000;">Name</span>=<span style="color:#0000ff;">"btnMix"</span> <span style="color:#ff0000;">Height</span>=<span style="color:#0000ff;">"40"</span> <span style="color:#ff0000;">Click</span>=<span style="color:#0000ff;">"btnMix_Click"</span><span style="color:#0000ff;">&gt;</span>Mischen<span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">Button</span><span style="color:#0000ff;">&gt;</span></pre>
<pre style="font-size:12px;width:100%;">        <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">Grid</span> <span style="color:#ff0000;">x</span>:<span style="color:#ff0000;">Name</span>=<span style="color:#0000ff;">"grd"</span> <span style="color:#ff0000;">ShowGridLines</span>=<span style="color:#0000ff;">"False"</span> <span style="color:#ff0000;">Height</span>=<span style="color:#0000ff;">"300"</span> <span style="color:#ff0000;">Width</span>=<span style="color:#0000ff;">"300"</span><span style="color:#0000ff;">&gt;</span></pre>
<pre style="font-size:12px;width:100%;">            <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">Grid.RowDefinitions</span><span style="color:#0000ff;">&gt;</span></pre>
<pre style="font-size:12px;width:100%;">                <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">RowDefinition</span><span style="color:#0000ff;">&gt;</span><span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">RowDefinition</span><span style="color:#0000ff;">&gt;</span></pre>
<pre style="font-size:12px;width:100%;">                <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">RowDefinition</span><span style="color:#0000ff;">&gt;</span><span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">RowDefinition</span><span style="color:#0000ff;">&gt;</span></pre>
<pre style="font-size:12px;width:100%;">                <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">RowDefinition</span><span style="color:#0000ff;">&gt;</span><span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">RowDefinition</span><span style="color:#0000ff;">&gt;</span></pre>
<pre style="font-size:12px;width:100%;">                <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">RowDefinition</span><span style="color:#0000ff;">&gt;</span><span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">RowDefinition</span><span style="color:#0000ff;">&gt;</span></pre>
<pre style="font-size:12px;width:100%;">            <span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">Grid.RowDefinitions</span><span style="color:#0000ff;">&gt;</span></pre>
<pre style="font-size:12px;width:100%;">            <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">Grid.ColumnDefinitions</span><span style="color:#0000ff;">&gt;</span></pre>
<pre style="font-size:12px;width:100%;">                <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">ColumnDefinition</span><span style="color:#0000ff;">&gt;</span><span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">ColumnDefinition</span><span style="color:#0000ff;">&gt;</span></pre>
<pre style="font-size:12px;width:100%;">                <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">ColumnDefinition</span><span style="color:#0000ff;">&gt;</span><span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">ColumnDefinition</span><span style="color:#0000ff;">&gt;</span></pre>
<pre style="font-size:12px;width:100%;">                <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">ColumnDefinition</span><span style="color:#0000ff;">&gt;</span><span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">ColumnDefinition</span><span style="color:#0000ff;">&gt;</span></pre>
<pre style="font-size:12px;width:100%;">                <span style="color:#0000ff;">&lt;</span><span style="color:#800000;">ColumnDefinition</span><span style="color:#0000ff;">&gt;</span><span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">ColumnDefinition</span><span style="color:#0000ff;">&gt;</span></pre>
<pre style="font-size:12px;width:100%;">            <span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">Grid.ColumnDefinitions</span><span style="color:#0000ff;">&gt;</span></pre>
<pre style="font-size:12px;width:100%;">        <span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">Grid</span><span style="color:#0000ff;">&gt;</span></pre>
<pre style="font-size:12px;width:100%;">    <span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">StackPanel</span><span style="color:#0000ff;">&gt;</span></pre>
<pre style="font-size:12px;width:100%;"><span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">Window</span><span style="color:#0000ff;">&gt;</span></pre>
</pre>
<p>In der XAML-Datei wird hier nur das Raster (Grid) zur Aufnahme der Buttons aufgenommen. Die Buttons werden via Programmcode erzeugt und ins Grid eingefügt. Hier die entsprechenden Ausschnitte</p>
<pre>
<pre style="font-size:12px;width:100%;">        <span style="color:#0000ff;">private</span> <span style="color:#0000ff;">void</span> generateButtons(Grid grdContainer)</pre>
</pre>
<pre>
<pre style="font-size:12px;width:100%;">        {</pre>
</pre>
<pre>
<pre style="font-size:12px;width:100%;">            <span style="color:#0000ff;">for</span> (<span style="color:#0000ff;">int</span> zeile = 0; zeile &lt; grdContainer.RowDefinitions.Count; zeile++)</pre>
</pre>
<pre>
<pre style="font-size:12px;width:100%;">                <span style="color:#0000ff;">for</span> (<span style="color:#0000ff;">int</span> spalte = 0; spalte &lt; grdContainer.ColumnDefinitions.Count; spalte++)</pre>
</pre>
<pre>
<pre style="font-size:12px;width:100%;">                    addButton(grdContainer, zeile, spalte);</pre>
</pre>
<pre>
<pre style="font-size:12px;width:100%;">            emptyButton.Opacity = 0;</pre>
</pre>
<pre>
<pre style="font-size:12px;width:100%;">        }</pre>
</pre>
<pre>
<pre style="font-size:12px;width:100%;">        <span style="color:#0000ff;">private</span> <span style="color:#0000ff;">void</span> addButton(Grid grdC, <span style="color:#0000ff;">int</span> rowToFill, <span style="color:#0000ff;">int</span> colToFill)</pre>
</pre>
<pre>
<pre style="font-size:12px;width:100%;">        {</pre>
</pre>
<pre>
<pre style="font-size:12px;width:100%;">            emptyButton = <span style="color:#0000ff;">new</span> Button();</pre>
</pre>
<pre>
<pre style="font-size:12px;width:100%;">            emptyButton.Background = <span style="color:#0000ff;">new</span> SolidColorBrush(Colors.Orange);</pre>
</pre>
<pre>
<pre style="font-size:12px;width:100%;">            emptyButton.Content = (4 * rowToFill + colToFill + 1).ToString();</pre>
</pre>
<pre>
<pre style="font-size:12px;width:100%;">            emptyButton.Click += <span style="color:#0000ff;">new</span> RoutedEventHandler(btnClicked);</pre>
</pre>
<pre>
<pre style="font-size:12px;width:100%;">            Grid.SetColumn(emptyButton, colToFill);</pre>
</pre>
<pre>
<pre style="font-size:12px;width:100%;">            Grid.SetRow(emptyButton, rowToFill);</pre>
</pre>
<pre>
<pre style="font-size:12px;width:100%;">            grdC.Children.Add(emptyButton);</pre>
</pre>
<pre>
<pre style="font-size:12px;width:100%;">        }</pre>
</pre>
<p>Das komplette WPF Projekt kann <a href="http://www.staufenbiel.net/downloads/wpfshuffle.zip">hier</a> herunter geladen werden.</p>
<p>Interessant ist jetzt die Umsetzung des Miniprojektes als Silverlight Applikation. Das sollte, da hier keine speziellen WPF-only Features genutzt werden, relativ simpel ablaufen.</p>
<p>Und tatsächlich waren zum Umbau nur zwei Anpassungen notwendig. Die in der WPF-Anwendung genutzte Deklaration des Buttons zum Mischen:</p>
<pre>
<pre style="font-size:12px;width:53.55%;"><span style="color:#0000ff;">&lt;</span><span style="color:#800000;">Button</span> <span style="color:#ff0000;">x</span>:<span style="color:#ff0000;">Name</span>=<span style="color:#0000ff;">"btnMix"</span> <span style="color:#ff0000;">Height</span>=<span style="color:#0000ff;">"40"</span> <span style="color:#ff0000;">Click</span>=<span style="color:#0000ff;">"btnMix_Click"</span><span style="color:#0000ff;">&gt;</span>Mischen<span style="color:#0000ff;">&lt;/</span><span style="color:#800000;">Button</span><span style="color:#0000ff;">&gt;</span></pre>
</pre>
<p>wird in Silverlight so nicht akzeptiert. Die Beschriftung des Buttons muss bei Silverlight als “Content”-Attribut wie folgt spezifiziert werden:</p>
<pre>
<pre style="font-size:12px;width:100%;"><span style="color:#0000ff;">&lt;</span><span style="color:#800000;">Button</span> <span style="color:#ff0000;">x</span>:<span style="color:#ff0000;">Name</span>=<span style="color:#0000ff;">"btnMix"</span> <span style="color:#ff0000;">Height</span>=<span style="color:#0000ff;">"40"</span> <span style="color:#ff0000;">Click</span>=<span style="color:#0000ff;">"btnMix_Click"</span> <span style="color:#ff0000;">Content</span>=<span style="color:#0000ff;">"Mischen"</span> <span style="color:#ff0000;">FontSize</span>=<span style="color:#0000ff;">"24"</span><span style="color:#0000ff;">/&gt;</span></pre>
</pre>
<p>Zur “optischen Aufbereitung” wurde hier die Schriftgröße noch auf 24 hochgesetzt.</p>
<p>Die zweite Anpassung betrifft eine Funktion, die einen mittels Zeile und Spalte spezifizierten Button zurückliefern soll:</p>
<pre>
<pre style="font-size:12px;width:100%;">        <span style="color:#0000ff;">private</span> Button getButton(Grid grdC, <span style="color:#0000ff;">int</span> rowPos, <span style="color:#0000ff;">int</span> colPos)</pre>
<pre style="font-size:12px;width:100%;">        {</pre>
<pre style="font-size:12px;width:100%;">            <span style="color:#008000;">//in WPF: foreach (UIElement uiE in grdC.Children)</span></pre>
<pre style="font-size:12px;width:100%;">            <span style="color:#0000ff;">foreach</span> (FrameworkElement uiE <span style="color:#0000ff;">in</span> grdC.Children)</pre>
<pre style="font-size:12px;width:100%;">                <span style="color:#0000ff;">if</span> (uiE <span style="color:#0000ff;">is</span> Button)</pre>
<pre style="font-size:12px;width:100%;">                {</pre>
<pre style="font-size:12px;width:100%;">                    <span style="color:#0000ff;">if</span> ((Grid.GetRow(uiE) == rowPos) &amp;&amp; (Grid.GetColumn(uiE) == colPos))</pre>
<pre style="font-size:12px;width:100%;">                        <span style="color:#0000ff;">return</span> (uiE <span style="color:#0000ff;">as</span> Button);</pre>
<pre style="font-size:12px;width:100%;">                }</pre>
<pre style="font-size:12px;width:100%;">            <span style="color:#0000ff;">throw</span> <span style="color:#0000ff;">new</span> Exception("<span style="color:#8b0000;">Illegal coordinates row: </span>" + rowPos.ToString() + "<span style="color:#8b0000;"> col: </span>" + colPos.ToString() + "<span style="color:#8b0000;">!</span>");</pre>
<pre style="font-size:12px;width:100%;">        }</pre>
</pre>
<p>In der oben dargestellten Funktion entnommen aus der Silverlight Applikation (die <a href="http://www.staufenbiel.net/downloads/silvershuffle.zip">hier</a> heruntergeladen werden kann) erkennt man, dass die statische Grid-Methoden GetRow() und GetColumn() bei WPF ein Objekt vom Typ “UIElement” erwarten, unter Silverlight aber ein Objekt des Typs “FrameworkElement” haben wollen. Das ist aus der jeweils zugehörigen Help-Eintrag oder via Intellisense auch leicht feststellbar. Warum es bei Silverlight und WPF unterschiedlich implementiert wurde erschliesst sich mir allerdings nicht so ganz.</p>
<p><a href="http://dotnetbastelei.files.wordpress.com/2009/01/image1.png"><img style="border-right:0;border-top:0;display:block;float:none;margin-left:auto;border-left:0;margin-right:auto;border-bottom:0;" title="image" src="http://dotnetbastelei.files.wordpress.com/2009/01/image-thumb1.png?w=894&#038;h=681" border="0" alt="image" width="894" height="681" /></a></p>
<p>Wie zu sehen ist sind zwar bei WPF weit mehr Klassen von UIElement abgeleitet, aber das gibt auch noch keinen Hinweis darauf, warum die beiden Methoden beim Grid-Control Objekte unterschiedlicher Objekttypen erwarten. Interessieren würde es mich schon, warum die in der Wirkweise identische Methode so unterschiedlich in den beiden Klassenbibliotheken eingebaut wurde.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dotnetbastelei.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dotnetbastelei.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dotnetbastelei.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dotnetbastelei.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dotnetbastelei.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dotnetbastelei.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dotnetbastelei.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dotnetbastelei.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dotnetbastelei.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dotnetbastelei.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dotnetbastelei.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dotnetbastelei.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dotnetbastelei.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dotnetbastelei.wordpress.com/13/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dotnetbastelei.wordpress.com&amp;blog=6295979&amp;post=13&amp;subd=dotnetbastelei&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dotnetbastelei.wordpress.com/2009/01/28/ein-erster-versuch-mit-wpf-und-silverlight/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/92768470cfe177f963bc51d7919f9121?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">contrequarte</media:title>
		</media:content>

		<media:content url="http://dotnetbastelei.files.wordpress.com/2009/01/image-thumb.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://dotnetbastelei.files.wordpress.com/2009/01/image-thumb1.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>
	</item>
		<item>
		<title>Blogging, mal sehen, ob ich das mag</title>
		<link>http://dotnetbastelei.wordpress.com/2009/01/24/blogging-mal-sehen-ob-ich-das-mag/</link>
		<comments>http://dotnetbastelei.wordpress.com/2009/01/24/blogging-mal-sehen-ob-ich-das-mag/#comments</comments>
		<pubDate>Sat, 24 Jan 2009 11:30:03 +0000</pubDate>
		<dc:creator>contrequarte</dc:creator>
				<category><![CDATA[Blogging]]></category>

		<guid isPermaLink="false">http://dotnetbastelei.wordpress.com/2009/01/24/3/</guid>
		<description><![CDATA[Immer mehr Menschen bloggen. Warum tut man das? Scheint ja ‚in&#8217; zu sein, also mach&#8217; ich es auch mal! Mal sehen ob ich es auf Dauer auch mag. Da es über mich nichts spektakuläres zu berichten gibt, werd&#8217; ich mal versuchen ein paar Sachen zum Thema Programmieren im .net-Umfeld zu bloggen. Vielleicht kommen mir da, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dotnetbastelei.wordpress.com&amp;blog=6295979&amp;post=3&amp;subd=dotnetbastelei&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Immer mehr Menschen bloggen. Warum tut man das? Scheint ja ‚in&#8217; zu sein, also mach&#8217; ich es auch mal! Mal sehen ob ich es auf Dauer auch mag. Da es über mich nichts spektakuläres zu berichten gibt, werd&#8217; ich mal versuchen ein paar Sachen zum Thema Programmieren im .net-Umfeld zu bloggen. Vielleicht kommen mir da, weil ich beruflich auch mit IT-Kram zu tun habe, ja ein paar Ideen mehr, die ich in die Welt rausbloggen will.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dotnetbastelei.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dotnetbastelei.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dotnetbastelei.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dotnetbastelei.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dotnetbastelei.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dotnetbastelei.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dotnetbastelei.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dotnetbastelei.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dotnetbastelei.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dotnetbastelei.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dotnetbastelei.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dotnetbastelei.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dotnetbastelei.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dotnetbastelei.wordpress.com/3/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dotnetbastelei.wordpress.com&amp;blog=6295979&amp;post=3&amp;subd=dotnetbastelei&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dotnetbastelei.wordpress.com/2009/01/24/blogging-mal-sehen-ob-ich-das-mag/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/92768470cfe177f963bc51d7919f9121?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">contrequarte</media:title>
		</media:content>
	</item>
	</channel>
</rss>
