<?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:media="http://search.yahoo.com/mrss"
	>

<channel>
	<title>Josh Smith on WPF</title>
	<atom:link href="http://joshsmithonwpf.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://joshsmithonwpf.wordpress.com</link>
	<description>Thoughts about the Windows Presentation Foundation</description>
	<pubDate>Sat, 10 May 2008 05:27:41 +0000</pubDate>
	<generator>http://wordpress.org/?v=MU</generator>
	<language>en</language>
			<item>
		<title>Panel3D now supports transparency</title>
		<link>http://joshsmithonwpf.wordpress.com/2008/05/10/panel3d-now-supports-transparency/</link>
		<comments>http://joshsmithonwpf.wordpress.com/2008/05/10/panel3d-now-supports-transparency/#comments</comments>
		<pubDate>Sat, 10 May 2008 05:21:46 +0000</pubDate>
		<dc:creator>Josh Smith</dc:creator>
		
		<category><![CDATA[3D]]></category>

		<category><![CDATA[WPF Disciples]]></category>

		<category><![CDATA[panel3D]]></category>

		<category><![CDATA[wpf]]></category>

		<guid isPermaLink="false">http://joshsmithonwpf.wordpress.com/?p=505</guid>
		<description><![CDATA[Not too long ago I created a WPF panel that lays out its child elements in 3D space, called Panel3D.  When playing around with it, I never could figure out a way to make the 3D models in the panel support transparency, such that you could see models lower in the z-order &#8220;through&#8221; models [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Not too long ago I created a WPF panel that lays out its child elements in 3D space, called <a href="http://www.codeproject.com/KB/WPF/panel3d.aspx" target="_blank">Panel3D</a>.  When playing around with it, I never could figure out a way to make the 3D models in the panel support transparency, such that you could see models lower in the z-order &#8220;through&#8221; models higher in the z-order.  The models higher in the z-order (i.e. those appearing closer to the viewer) were always opaque, thus covering up models behind them.</p>
<p>Someone left a comment on that article, asking how to create semi-transparent items in Panel3D.  I didn&#8217;t know the answer, but luckily <a href="http://www.codeproject.com/KB/WPF/panel3d.aspx?msg=2544187#xx2544187xx" target="_blank">someone else did</a>.  It turns out that I was adding the 3D models to the Viewport3D&#8217;s Children collection in the wrong order.  Panel3D was putting the front-most model at the beginning of the Children collection (technically, the scene&#8217;s light source is the very first child).  The index of a model in the Children collection matched its visible index, meaning that the element furthest away from the viewer was the last child in the Viewport3D.  This was completely wrong!</p>
<p>It turns out that transparency of 3D models in a Viewport3D is a little more tricky than working with transparency of 2D elements living in a 2D world.  For transparency to work correctly in a Viewport3D, you must add the models into the Children collection in the opposite order than which we see them (relative to the scene&#8217;s camera).  If you want to learn more about this issue, go to <a href="http://blogs.msdn.com/pantal/archive/2007/07/23/sorting-for-wpf-3d-transparency.aspx" target="_blank">this blog post</a>, which explains the issue quite well.  Unfortunately, the utility method offered in that post does not work in Panel3D.</p>
<p>I modified Panel3D so that it arranges the models in the correct order.  The updated source code is not yet available, since I want to give it some time to marinate in my head before I revise the CodeProject article.  I did, however, update the WPF Disciples Blog Viewer 3D (with audio) application so that it takes advantage of this new feature.</p>
<p>Download the app here: <a href="http://joshsmithonwpf.files.wordpress.com/2008/05/wpf_disciples_blog_viewer3dzip.doc">WPF Disciples Blog Viewer 3D (with audio!)</a></p>
<p>NOTE: Be sure to change the file extension from <strong>.DOC to .ZIP</strong> and then decompress it.</p>
<p>Here is a &#8220;before&#8221; picture, of what the app used to look like (click to view full size image):</p>
<p><a href="http://joshsmithonwpf.files.wordpress.com/2008/04/blogroll3d_screenshot_large.png"><img class="alignnone size-thumbnail wp-image-461" src="http://joshsmithonwpf.files.wordpress.com/2008/04/blogroll3d_screenshot_small.png?w=128&h=79" alt="" width="128" height="79" /></a></p>
<p>Here is the &#8220;after&#8221; picture, showing how the transparency looks:</p>
<p><a href="http://joshsmithonwpf.files.wordpress.com/2008/05/blogroll3d-transparency.png"><img class="alignnone size-thumbnail wp-image-507" src="http://joshsmithonwpf.files.wordpress.com/2008/05/blogroll3d-transparency.png?w=126&h=96" alt="" width="126" height="96" /></a></p>
<p>I also added two new dependency properties to Panel3D.</p>
<p><strong>AllowTransparency</strong> must be set to true if you want the models to be &#8220;truly&#8221; transparent.  If you leave it to false, the old behavior is honored, where the items become more &#8220;dim&#8221; when their opacity is lowered.  The new WPF Disciples Blog Viewer 3D app, seen above, sets this to true, which is why you can see through the items.</p>
<p><strong>AutoAdjustOpacity</strong> can be set to false if you do not want Panel3D to automatically set the opacity of each element displayed in the scene.  The new WPF Disciples Blog Viewer 3D app, seen above, sets this to false, which is why the items do not seem to fade away as they move into the distance.</p>
<p>I will release the new source code and update the CodeProject article soon&#8230;I promise! <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/joshsmithonwpf.wordpress.com/505/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/joshsmithonwpf.wordpress.com/505/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/joshsmithonwpf.wordpress.com/505/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/joshsmithonwpf.wordpress.com/505/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/joshsmithonwpf.wordpress.com/505/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/joshsmithonwpf.wordpress.com/505/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/joshsmithonwpf.wordpress.com/505/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/joshsmithonwpf.wordpress.com/505/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/joshsmithonwpf.wordpress.com/505/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/joshsmithonwpf.wordpress.com/505/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/joshsmithonwpf.wordpress.com/505/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/joshsmithonwpf.wordpress.com/505/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=joshsmithonwpf.wordpress.com&blog=737883&post=505&subd=joshsmithonwpf&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://joshsmithonwpf.wordpress.com/2008/05/10/panel3d-now-supports-transparency/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/joshsmith-128.jpg" medium="image">
			<media:title type="html">Josh Smith</media:title>
		</media:content>

		<media:content url="http://joshsmithonwpf.files.wordpress.com/2008/04/blogroll3d_screenshot_small.png?w=128" medium="image" />

		<media:content url="http://joshsmithonwpf.files.wordpress.com/2008/05/blogroll3d-transparency.png?w=126" medium="image" />
	</item>
		<item>
		<title>IdentityMine Sweetens the Pot</title>
		<link>http://joshsmithonwpf.wordpress.com/2008/05/07/identitymine-sweetens-the-pot/</link>
		<comments>http://joshsmithonwpf.wordpress.com/2008/05/07/identitymine-sweetens-the-pot/#comments</comments>
		<pubDate>Wed, 07 May 2008 14:36:52 +0000</pubDate>
		<dc:creator>Josh Smith</dc:creator>
		
		<category><![CDATA[General Info]]></category>

		<category><![CDATA[Podder]]></category>

		<guid isPermaLink="false">http://joshsmithonwpf.wordpress.com/?p=504</guid>
		<description><![CDATA[The Podder Skinning Competition is really starting to heat up now!  IdentityMine is now giving away their awesome blendables product as a prize to the winners.  The list of prizes has grown quite a bit since the competition first began, and this latest addition definitely cranks it up a notch.  Thanks a lot, IdentityMine!  [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>The <a href="http://joshsmithonwpf.wordpress.com/podder-skinning-competition/" target="_blank">Podder Skinning Competition</a> is really starting to heat up now!  <a href="http://www.identitymine.com/" target="_blank">IdentityMine</a> is now giving away their awesome <a href="http://blendables.com/" target="_blank">blendables</a> product as a prize to the winners.  The list of prizes has grown quite a bit since the competition first began, and this latest addition definitely cranks it up a notch.  Thanks a lot, IdentityMine! <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> </p>
<p>I have already received a few e-mails and comments from people who are creating a Podder skin for the competition.  I can&#8217;t wait to see what they come up with.  Also, <a href="http://karlshifflett.wordpress.com/" target="_blank">Karl</a> told me that he is locked onto winning the steak dinner at Smith &amp; Wollensky prize like a heat-seeking missile.  <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/joshsmithonwpf.wordpress.com/504/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/joshsmithonwpf.wordpress.com/504/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/joshsmithonwpf.wordpress.com/504/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/joshsmithonwpf.wordpress.com/504/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/joshsmithonwpf.wordpress.com/504/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/joshsmithonwpf.wordpress.com/504/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/joshsmithonwpf.wordpress.com/504/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/joshsmithonwpf.wordpress.com/504/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/joshsmithonwpf.wordpress.com/504/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/joshsmithonwpf.wordpress.com/504/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/joshsmithonwpf.wordpress.com/504/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/joshsmithonwpf.wordpress.com/504/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=joshsmithonwpf.wordpress.com&blog=737883&post=504&subd=joshsmithonwpf&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://joshsmithonwpf.wordpress.com/2008/05/07/identitymine-sweetens-the-pot/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/joshsmith-128.jpg" medium="image">
			<media:title type="html">Josh Smith</media:title>
		</media:content>
	</item>
		<item>
		<title>Cider improvements in SP1</title>
		<link>http://joshsmithonwpf.wordpress.com/2008/05/06/cider-improvements-in-sp1/</link>
		<comments>http://joshsmithonwpf.wordpress.com/2008/05/06/cider-improvements-in-sp1/#comments</comments>
		<pubDate>Tue, 06 May 2008 09:34:28 +0000</pubDate>
		<dc:creator>Josh Smith</dc:creator>
		
		<category><![CDATA[Announcements]]></category>

		<category><![CDATA[Cider]]></category>

		<category><![CDATA[sp1]]></category>

		<category><![CDATA[wpf]]></category>

		<guid isPermaLink="false">http://joshsmithonwpf.wordpress.com/?p=503</guid>
		<description><![CDATA[Microsoft has announced the updates to Cider (the WPF designer in Visual Studio 2008 ) that will be part of SP1.  Some of these improvements sound great! You can check out the entire announcement, but I&#8217;ve pasted the really interesting part below:
Features and functionalities that are new, changed, or improved
New features and new functionalities



•
The [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Microsoft has announced the updates to Cider (the WPF designer in Visual Studio 2008 ) that will be part of SP1.  Some of these improvements sound great! You can check out the <a href="http://support.microsoft.com/default.aspx?scid=kb;en-us;950265&amp;sd=rss&amp;spid=12913" target="_blank">entire announcement</a>, but I&#8217;ve pasted the really interesting part below:</p>
<h3>Features and functionalities that are new, changed, or improved</h3>
<h4>New features and new functionalities</h4>
<table class="list ul" border="0">
<tbody>
<tr>
<td class="bullet">•</td>
<td class="text">The Properties window now contains the <strong>Events</strong> tab. The <strong>Events</strong> tab lets you create events, assign events, and review events.</td>
</tr>
<tr>
<td class="bullet">•</td>
<td class="text">The Properties window now includes a category sort option and an alphabetical sort option to allow for faster property location.</td>
</tr>
<tr>
<td class="bullet">•</td>
<td class="text">Code changes have been made to the XAML Refactor/Rename definition and to the Go to definition. These changes allow XAML rename operations to occur automatically. Additionally, you can navigate the XAML definition by pressing F12.</td>
</tr>
<tr>
<td class="bullet">•</td>
<td class="text">You can now drag controls or create controls from the toolbox in XAML view or in Design view. You can do this even if you use a split view configuration.</td>
</tr>
<tr>
<td class="bullet">•</td>
<td class="text">Snaplines are now implemented for control margins. This lets the designer control a fixed distance from other controls, from container edges, or from gridlines.</td>
</tr>
<tr>
<td class="bullet">•</td>
<td class="text">Tab controls now support TabItem activation and TabItem design. To do this, click the tab that you want to design.</td>
</tr>
<tr>
<td class="bullet">•</td>
<td class="text">The Expander control now expands conditionally based on what is selected. You can design the contents of the Expander control at design time with affecting the <strong>IsExpanded</strong> attribute of the runtime.</td>
</tr>
</tbody>
</table>
<h4>Improved features and improved functionalities</h4>
<table class="list ul" border="0">
<tbody>
<tr>
<td class="bullet">•</td>
<td class="text">Many stability improvements have been added to Visual Studio 2008 SP1. These include improvements to document loading in the designer and to error reporting. Because of these improvements, you will be able to load more documents in the designer.</td>
</tr>
</tbody>
</table>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/joshsmithonwpf.wordpress.com/503/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/joshsmithonwpf.wordpress.com/503/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/joshsmithonwpf.wordpress.com/503/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/joshsmithonwpf.wordpress.com/503/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/joshsmithonwpf.wordpress.com/503/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/joshsmithonwpf.wordpress.com/503/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/joshsmithonwpf.wordpress.com/503/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/joshsmithonwpf.wordpress.com/503/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/joshsmithonwpf.wordpress.com/503/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/joshsmithonwpf.wordpress.com/503/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/joshsmithonwpf.wordpress.com/503/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/joshsmithonwpf.wordpress.com/503/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=joshsmithonwpf.wordpress.com&blog=737883&post=503&subd=joshsmithonwpf&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://joshsmithonwpf.wordpress.com/2008/05/06/cider-improvements-in-sp1/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/joshsmith-128.jpg" medium="image">
			<media:title type="html">Josh Smith</media:title>
		</media:content>
	</item>
		<item>
		<title>Article about aggregating WPF commands</title>
		<link>http://joshsmithonwpf.wordpress.com/2008/05/04/article-about-aggregating-wpf-commands/</link>
		<comments>http://joshsmithonwpf.wordpress.com/2008/05/04/article-about-aggregating-wpf-commands/#comments</comments>
		<pubDate>Sun, 04 May 2008 21:31:57 +0000</pubDate>
		<dc:creator>Josh Smith</dc:creator>
		
		<category><![CDATA[Reading Material]]></category>

		<category><![CDATA[commands]]></category>

		<category><![CDATA[wpf]]></category>

		<guid isPermaLink="false">http://joshsmithonwpf.wordpress.com/?p=502</guid>
		<description><![CDATA[I just published yet another article about WPF this weekend on CodeProject.  This one is about my new CommandGroup class, which allows you to create a &#8220;composite command.&#8221;  The article explains the problem that this class solves, but also explains that the solution has uses outside of just that one problem.  If you are interested [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I just published yet another article about WPF this weekend on CodeProject.  This one is about my new CommandGroup class, which allows you to create a &#8220;composite command.&#8221;  The article explains the problem that this class solves, but also explains that the solution has uses outside of just that one problem.  If you are interested in checking it out, here is the link:</p>
<p><a href="http://www.codeproject.com/KB/WPF/commandgroup.aspx" target="_blank">http://www.codeproject.com/KB/WPF/commandgroup.aspx</a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/joshsmithonwpf.wordpress.com/502/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/joshsmithonwpf.wordpress.com/502/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/joshsmithonwpf.wordpress.com/502/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/joshsmithonwpf.wordpress.com/502/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/joshsmithonwpf.wordpress.com/502/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/joshsmithonwpf.wordpress.com/502/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/joshsmithonwpf.wordpress.com/502/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/joshsmithonwpf.wordpress.com/502/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/joshsmithonwpf.wordpress.com/502/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/joshsmithonwpf.wordpress.com/502/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/joshsmithonwpf.wordpress.com/502/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/joshsmithonwpf.wordpress.com/502/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=joshsmithonwpf.wordpress.com&blog=737883&post=502&subd=joshsmithonwpf&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://joshsmithonwpf.wordpress.com/2008/05/04/article-about-aggregating-wpf-commands/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/joshsmith-128.jpg" medium="image">
			<media:title type="html">Josh Smith</media:title>
		</media:content>
	</item>
		<item>
		<title>Article comparing WinForms and WPF</title>
		<link>http://joshsmithonwpf.wordpress.com/2008/05/03/article-comparing-winforms-and-wpf/</link>
		<comments>http://joshsmithonwpf.wordpress.com/2008/05/03/article-comparing-winforms-and-wpf/#comments</comments>
		<pubDate>Sun, 04 May 2008 03:06:24 +0000</pubDate>
		<dc:creator>Josh Smith</dc:creator>
		
		<category><![CDATA[Reading Material]]></category>

		<category><![CDATA[winforms]]></category>

		<category><![CDATA[wpf]]></category>

		<guid isPermaLink="false">http://joshsmithonwpf.wordpress.com/?p=501</guid>
		<description><![CDATA[I just published an article on CodeProject called &#8216;Creating the Same Program in Windows Forms and WPF&#8216;.  I think it provides some interesting information on the similarities and differences of WinForms and WPF, by showing how to implement the same simple application using both platforms.  It is not a means of parading WPF [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I just published an article on CodeProject called &#8216;<a href="http://www.codeproject.com/KB/WPF/winforms2wpf.aspx" target="_blank">Creating the Same Program in Windows Forms and WPF</a>&#8216;.  I think it provides some interesting information on the similarities and differences of WinForms and WPF, by showing how to implement the same simple application using both platforms.  It is not a means of parading WPF and shunning WinForms.  I tried to be as objective and down-to-earth as possible when discussing the relative merits of the two platforms.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/joshsmithonwpf.wordpress.com/501/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/joshsmithonwpf.wordpress.com/501/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/joshsmithonwpf.wordpress.com/501/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/joshsmithonwpf.wordpress.com/501/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/joshsmithonwpf.wordpress.com/501/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/joshsmithonwpf.wordpress.com/501/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/joshsmithonwpf.wordpress.com/501/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/joshsmithonwpf.wordpress.com/501/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/joshsmithonwpf.wordpress.com/501/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/joshsmithonwpf.wordpress.com/501/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/joshsmithonwpf.wordpress.com/501/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/joshsmithonwpf.wordpress.com/501/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=joshsmithonwpf.wordpress.com&blog=737883&post=501&subd=joshsmithonwpf&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://joshsmithonwpf.wordpress.com/2008/05/03/article-comparing-winforms-and-wpf/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/joshsmith-128.jpg" medium="image">
			<media:title type="html">Josh Smith</media:title>
		</media:content>
	</item>
		<item>
		<title>Microsoft Sweetens the Pot</title>
		<link>http://joshsmithonwpf.wordpress.com/2008/04/29/microsoft-sweetens-the-pot/</link>
		<comments>http://joshsmithonwpf.wordpress.com/2008/04/29/microsoft-sweetens-the-pot/#comments</comments>
		<pubDate>Wed, 30 Apr 2008 00:18:02 +0000</pubDate>
		<dc:creator>Josh Smith</dc:creator>
		
		<category><![CDATA[Announcements]]></category>

		<guid isPermaLink="false">http://joshsmithonwpf.wordpress.com/?p=499</guid>
		<description><![CDATA[My Podder Skinning Competition is officially one notch cooler now.  Microsoft has offered to give each of the winners an 8 GB green Zune!  That was a nice surprise!!  

By the way, the most sought-after prize seems to be the steak dinner at Smith &#38; Wollensky.  Three people have already sent [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>My <a href="http://joshsmithonwpf.wordpress.com/podder-skinning-competition/" target="_blank">Podder Skinning Competition</a> is officially one notch cooler now.  Microsoft has offered to give each of the winners an 8 GB green Zune!  That was a nice surprise!! <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p style="text-align:center;"><img class="size-full wp-image-500" src="http://joshsmithonwpf.files.wordpress.com/2008/04/green-zune.png?w=245&h=532" alt="" width="245" height="532" /></p>
<p>By the way, the most sought-after prize seems to be the steak dinner at Smith &amp; Wollensky.  Three people have already sent me e-mails saying that they are going to submit a skin into the competition just so that they can have me buy them a steak dinner.  LOL!  If you&#8217;ve ever been to Smith and Wollensky, I&#8217;m sure you understand&#8230;</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/joshsmithonwpf.wordpress.com/499/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/joshsmithonwpf.wordpress.com/499/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/joshsmithonwpf.wordpress.com/499/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/joshsmithonwpf.wordpress.com/499/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/joshsmithonwpf.wordpress.com/499/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/joshsmithonwpf.wordpress.com/499/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/joshsmithonwpf.wordpress.com/499/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/joshsmithonwpf.wordpress.com/499/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/joshsmithonwpf.wordpress.com/499/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/joshsmithonwpf.wordpress.com/499/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/joshsmithonwpf.wordpress.com/499/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/joshsmithonwpf.wordpress.com/499/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=joshsmithonwpf.wordpress.com&blog=737883&post=499&subd=joshsmithonwpf&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://joshsmithonwpf.wordpress.com/2008/04/29/microsoft-sweetens-the-pot/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/joshsmith-128.jpg" medium="image">
			<media:title type="html">Josh Smith</media:title>
		</media:content>

		<media:content url="http://joshsmithonwpf.files.wordpress.com/2008/04/green-zune.png" medium="image" />
	</item>
		<item>
		<title>Announcing the Podder Skinning Competition</title>
		<link>http://joshsmithonwpf.wordpress.com/2008/04/27/announcing-the-podder-skinning-competition/</link>
		<comments>http://joshsmithonwpf.wordpress.com/2008/04/27/announcing-the-podder-skinning-competition/#comments</comments>
		<pubDate>Sun, 27 Apr 2008 15:33:17 +0000</pubDate>
		<dc:creator>Josh Smith</dc:creator>
		
		<category><![CDATA[Announcements]]></category>

		<category><![CDATA[Podder]]></category>

		<category><![CDATA[skinning]]></category>

		<category><![CDATA[wpf]]></category>

		<guid isPermaLink="false">http://joshsmithonwpf.wordpress.com/?p=494</guid>
		<description><![CDATA[
I am excited to announce that I am hosting a new WPF competition!!  This contest allows you to create and submit your own skin for Podder, the WPF podcast player application.  Since Podder was built to support &#8220;structural skinning&#8221; it can use any UI that you dream up to display its data and [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="text-align:center;"><img class="size-full wp-image-485" src="http://joshsmithonwpf.files.wordpress.com/2008/04/slide-trumpet.jpg?w=257&h=257" alt="" width="257" height="257" /></p>
<p>I am excited to announce that I am hosting a new WPF competition!!  This contest allows you to create and submit your own skin for <a href="http://www.codeproject.com/KB/WPF/podder2.aspx" target="_blank">Podder</a>, the WPF podcast player application.  Since Podder was built to support &#8220;structural skinning&#8221; it can use any UI that you dream up to display its data and behavior.  This contest will allow participants to focus on using WPF to create an awesome user experience, without needing to worry about writing the underlying application functionality.</p>
<p>The Podder Skinning Competition, along with all the rules, prizes, and dates, is fully explained on <a href="http://joshsmithonwpf.wordpress.com/podder-skinning-competition/" target="_blank">this page</a> of my blog.  I also put together a step-by-step walkthrough of getting started with creating your own Podder skin, which you can check out <a href="http://joshsmithonwpf.wordpress.com/podder-skinning-competition/creating-a-podder-skin/" target="_blank">here</a>.</p>
<p>I look forward to seeing the creative Podder skins that people submit.  This is a very exciting time to be a WPF developer or designer!</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/joshsmithonwpf.wordpress.com/494/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/joshsmithonwpf.wordpress.com/494/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/joshsmithonwpf.wordpress.com/494/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/joshsmithonwpf.wordpress.com/494/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/joshsmithonwpf.wordpress.com/494/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/joshsmithonwpf.wordpress.com/494/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/joshsmithonwpf.wordpress.com/494/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/joshsmithonwpf.wordpress.com/494/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/joshsmithonwpf.wordpress.com/494/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/joshsmithonwpf.wordpress.com/494/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/joshsmithonwpf.wordpress.com/494/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/joshsmithonwpf.wordpress.com/494/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=joshsmithonwpf.wordpress.com&blog=737883&post=494&subd=joshsmithonwpf&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://joshsmithonwpf.wordpress.com/2008/04/27/announcing-the-podder-skinning-competition/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/joshsmith-128.jpg" medium="image">
			<media:title type="html">Josh Smith</media:title>
		</media:content>

		<media:content url="http://joshsmithonwpf.files.wordpress.com/2008/04/slide-trumpet.jpg" medium="image" />
	</item>
		<item>
		<title>Joe Rattz to the Rescue</title>
		<link>http://joshsmithonwpf.wordpress.com/2008/04/24/joe-rattz-to-the-rescue/</link>
		<comments>http://joshsmithonwpf.wordpress.com/2008/04/24/joe-rattz-to-the-rescue/#comments</comments>
		<pubDate>Thu, 24 Apr 2008 12:10:52 +0000</pubDate>
		<dc:creator>Josh Smith</dc:creator>
		
		<category><![CDATA[Praxis]]></category>

		<category><![CDATA[linq]]></category>

		<category><![CDATA[wpf]]></category>

		<guid isPermaLink="false">http://joshsmithonwpf.wordpress.com/?p=479</guid>
		<description><![CDATA[In my previous post, I showed a simple way to create animations in WPF using a sequence of images.  That demo app used a LINQ query to get a sequence of BitmapImage objects based on the PNG files in a certain folder.  Joe Rattz, the LINQ guru, dropped a comment on that post [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>In my <a href="http://joshsmithonwpf.wordpress.com/2008/04/23/good-old-fashion-image-animations-in-wpf/" target="_blank">previous post</a>, I showed a simple way to create animations in WPF using a sequence of images.  That demo app used a LINQ query to get a sequence of BitmapImage objects based on the PNG files in a certain folder.  <a href="http://www.linqdev.com/PublicPortal/publicportal/blog.aspx" target="_blank">Joe Rattz</a>, the LINQ guru, dropped a comment on that post and also included his e-mail address.  Big mistake!! <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>I sent him an e-mail, asking if the BitmapImage objects in that LINQ query are created every time a new enumerator is created and iterated over.  When I send an expert an e-mail I never expect to hear back.  I certainly don&#8217;t reply to all of the questions that people send me!  There are only 24 hours in a day. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>Luckily, Joe replied.  Thanks Joe!  It turns out that the answer is yes, the LINQ query is creating new BitmapImage objects for each new enumerator, as the enumerator is iterated.  This is not a good thing.  Since my demo app repeats the animation indefinitely, a potentially huge number of unnecessary BitmapImage objects were being created by the LINQ query.</p>
<p>The reason for all this is the fact that my LINQ query was only using <em>deferred</em> query operators.  LINQ has deferred and non-deferred operators, as Joe&#8217;s book explains.  If you use all deferred operators, the query&#8217;s results are not cached.  Every time you iterate the resultset the query creates new objects for you.  In some cases that is what you want.  In my case, it is undesirable.</p>
<p>Working around this turned out to be easy, especially since Joe e-mailed me the answer. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>I needed to apply a non-deferred operator to the query.  This would cause the results of the query to be cached, so that all enumerators created against the query iterate the same set of objects.  Here is the new code-behind for the demo app:</p>
<p><img class="alignnone size-full wp-image-481" src="http://joshsmithonwpf.files.wordpress.com/2008/04/image-animation-tolist.png?w=449&h=656" alt="" width="449" height="656" /></p>
<p>Notice how the entire LINQ query is wrapped in parenthesis and then a call to the ToList extension method is placed at the end.  ToList is a non-deferred query operator, which is the magic that fixes the issue.</p>
<p>If you want the source code for this app, download it <a href="http://joshsmithonwpf.files.wordpress.com/2008/04/wpfimageanimation2zip.doc">here</a>.  Be sure to change the file extension from <strong>.DOC to .ZIP</strong> and then decompress the file.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/joshsmithonwpf.wordpress.com/479/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/joshsmithonwpf.wordpress.com/479/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/joshsmithonwpf.wordpress.com/479/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/joshsmithonwpf.wordpress.com/479/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/joshsmithonwpf.wordpress.com/479/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/joshsmithonwpf.wordpress.com/479/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/joshsmithonwpf.wordpress.com/479/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/joshsmithonwpf.wordpress.com/479/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/joshsmithonwpf.wordpress.com/479/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/joshsmithonwpf.wordpress.com/479/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/joshsmithonwpf.wordpress.com/479/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/joshsmithonwpf.wordpress.com/479/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=joshsmithonwpf.wordpress.com&blog=737883&post=479&subd=joshsmithonwpf&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://joshsmithonwpf.wordpress.com/2008/04/24/joe-rattz-to-the-rescue/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/joshsmith-128.jpg" medium="image">
			<media:title type="html">Josh Smith</media:title>
		</media:content>

		<media:content url="http://joshsmithonwpf.files.wordpress.com/2008/04/image-animation-tolist.png" medium="image" />
	</item>
		<item>
		<title>Good old fashion image animations in WPF</title>
		<link>http://joshsmithonwpf.wordpress.com/2008/04/23/good-old-fashion-image-animations-in-wpf/</link>
		<comments>http://joshsmithonwpf.wordpress.com/2008/04/23/good-old-fashion-image-animations-in-wpf/#comments</comments>
		<pubDate>Wed, 23 Apr 2008 05:39:47 +0000</pubDate>
		<dc:creator>Josh Smith</dc:creator>
		
		<category><![CDATA[Intermezzo]]></category>

		<category><![CDATA[Praxis]]></category>

		<category><![CDATA[animation]]></category>

		<category><![CDATA[image]]></category>

		<category><![CDATA[wpf]]></category>

		<guid isPermaLink="false">http://joshsmithonwpf.wordpress.com/?p=476</guid>
		<description><![CDATA[As I tried in vain to fall asleep at a reasonable hour tonight, it dawned on me that something is missing from the standard WPF literature.  Most of the animation examples show off the awesome built-in support for animations, which means changing a property&#8217;s value over time.  What I felt was missing is [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>As I tried in vain to fall asleep at a reasonable hour tonight, it dawned on me that something is missing from the standard WPF literature.  Most of the animation examples show off the awesome built-in support for animations, which means changing a property&#8217;s value over time.  What I felt was missing is an example of how to create an animation by showing a sequence of images in rapid succession.  Ya know, like Mickey Mouse.   So I got out of bed and made one!</p>
<p>I opened SnagIt, created 37 separate images, saved each one with a name like &#8220;001.png&#8221;, and then dropped them all into a new project in Visual Studio.  All of the image files are copied to the project&#8217;s output directory, instead of saving them as resources in the assembly.  After assigning the Window&#8217;s Content an Image element in XAML, I wrote the following code:</p>
<p><a href="http://joshsmithonwpf.files.wordpress.com/2008/04/image-animation-code.png"><img class="alignnone size-full wp-image-477" src="http://joshsmithonwpf.files.wordpress.com/2008/04/image-animation-code.png?w=444&h=658" alt="" width="444" height="658" /></a></p>
<p>I just love using LINQ!  It makes data processing so much easier.  If you haven&#8217;t already done so, I highly recommend you read Joseph Rattz&#8217;s &#8220;<a href="http://www.amazon.com/Pro-LINQ-Language-Integrated-Query/dp/1590597893" target="_blank">Pro LINQ - Language Integrated Query in C# 2008</a>&#8220;.</p>
<p>When I run the app, it looks like this:</p>
<p><span style="text-align:center; display: block;"><a href="http://joshsmithonwpf.wordpress.com/2008/04/23/good-old-fashion-image-animations-in-wpf/"><img src="http://img.youtube.com/vi/2qbet8Ali14/2.jpg" alt="" /></a></span></p>
<p>If you want the source code, you can download it <a href="http://joshsmithonwpf.files.wordpress.com/2008/04/wpfimageanimationzip.doc">here</a>.  Be sure to change the file extension from <strong>.DOC to .ZIP</strong> and then decompress the file.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/joshsmithonwpf.wordpress.com/476/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/joshsmithonwpf.wordpress.com/476/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/joshsmithonwpf.wordpress.com/476/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/joshsmithonwpf.wordpress.com/476/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/joshsmithonwpf.wordpress.com/476/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/joshsmithonwpf.wordpress.com/476/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/joshsmithonwpf.wordpress.com/476/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/joshsmithonwpf.wordpress.com/476/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/joshsmithonwpf.wordpress.com/476/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/joshsmithonwpf.wordpress.com/476/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/joshsmithonwpf.wordpress.com/476/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/joshsmithonwpf.wordpress.com/476/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=joshsmithonwpf.wordpress.com&blog=737883&post=476&subd=joshsmithonwpf&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://joshsmithonwpf.wordpress.com/2008/04/23/good-old-fashion-image-animations-in-wpf/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/joshsmith-128.jpg" medium="image">
			<media:title type="html">Josh Smith</media:title>
		</media:content>

		<media:content url="http://joshsmithonwpf.files.wordpress.com/2008/04/image-animation-code.png" medium="image" />

		<media:content url="http://img.youtube.com/vi/2qbet8Ali14/2.jpg" medium="image" />
	</item>
		<item>
		<title>Why use WPF if it is not RAD yet?</title>
		<link>http://joshsmithonwpf.wordpress.com/2008/04/21/why-use-wpf-if-it-is-not-rad-yet/</link>
		<comments>http://joshsmithonwpf.wordpress.com/2008/04/21/why-use-wpf-if-it-is-not-rad-yet/#comments</comments>
		<pubDate>Tue, 22 Apr 2008 00:49:20 +0000</pubDate>
		<dc:creator>Josh Smith</dc:creator>
		
		<category><![CDATA[Intermezzo]]></category>

		<category><![CDATA[rad]]></category>

		<category><![CDATA[wpf]]></category>

		<guid isPermaLink="false">http://joshsmithonwpf.wordpress.com/?p=473</guid>
		<description><![CDATA[
I have been heavily involved with WPF for years now.  When I first started out with &#8220;Avalon&#8221; it was hardly a blip on the .NET radar.  After just a couple of years the crickets have been replaced by a rock concert, and the intensity just keeps growing.  For a WPF geek, such [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="text-align:center;"><a href="http://joshsmithonwpf.files.wordpress.com/2008/04/rad.jpg"><img class="alignnone size-medium wp-image-474 aligncenter" src="http://joshsmithonwpf.files.wordpress.com/2008/04/rad.jpg?w=230&h=300" alt="rad" width="230" height="300" /></a></p>
<p>I have been heavily involved with WPF for years now.  When I first started out with &#8220;Avalon&#8221; it was hardly a blip on the .NET radar.  After just a couple of years the crickets have been replaced by a rock concert, and the intensity just keeps growing.  For a WPF geek, such as me, this is great news!</p>
<p>My numerous encounters with people using WPF have lead to me to conclude that the platform is finally gaining traction in the .NET universe.  WPF has been picking up momentum for a while in the financial services world, in particular.  I have also met quite a few people using WPF in the state/local government sector, the retail sector, entertainment sector, and quite a few others.</p>
<p>But, wait a minute&#8230;why are people moving to WPF?  Visual Studio 2008 offers rather weak design-time support for WPF.  The lack of drag-and-drop magic in VS2008 essentially kills any hope of the rapid application development (RAD) that so many software shops hold near and dear.  Why are people leaving RAD for MAD (manual application development)?  In this blog post, we will discuss why WinForms and ASP.NET developers have decided to move on to WPF.  Note, everything in this post is based on discussions I have had with people, but is certainly not the &#8220;definitive&#8221; explanation by any means.</p>
<p>The most obvious reason that people are now moving to WPF is that Visual Studio 2008 natively supports WPF development without requiring any extensions to be installed (i.e. the Orcas extensions for VS2005).  Even though the WPF design-time experience still leaves much to be desired, the fact that it is part of VS2008 is important for many software shops.  Most companies simply will not base their software development on pre-release bits; and I do not blame them.</p>
<p>In the previous paragraph, I mentioned that Cider (the WPF designer in Visual Studio) leaves much to be desired.  Compared to the high-productivity RAD tooling support to which Windows Forms and ASP.NET developers are accustomed, it might seem surprising that anyone would drift away into the not-so-RAD world of WPF.  Let&#8217;s take a closer look at exactly what this means.</p>
<p>Moving from ASP.NET to WPF is not too radical of a shift (so I&#8217;ve heard), in terms of tooling.  Both platforms involve a markup file with an associated code-behind file.  In both ASP.NET and WPF, the developer expects to go into the markup file and tweak the tags by hand.  The design surface can only get you so far.  From a tooling perspective, the shift from ASP.NET to WPF is not as radical of a change as for WinForms developers.</p>
<p>For those of us who approach WPF with a strong background in Windows Forms, however, you are pretty much required to remove your brain from your skull, rotate it 180 degrees, and put it back in.</p>
<p style="text-align:center;"><a href="http://joshsmithonwpf.files.wordpress.com/2008/04/brain.gif"><img class="alignnone size-medium wp-image-475 aligncenter" src="http://joshsmithonwpf.files.wordpress.com/2008/04/brain.gif?w=300&h=251" alt="brain" width="300" height="251" /></a></p>
<p>This stems from the fact that WinForms developers are trained to never look at the designer-generated muck that is written for the Forms that they whip together in VS.  The idea of working with markup that represents a UI is foreign to most WinFormers.  Trying to move from a world where the serialization format used by Visual Studio to represent a UI is irrelevant, into a world where you are hand-coding XAML to get a UI together represents a significant mental shift.</p>
<p>This brings us back to the original question.  Why are people moving to WPF at an increasing rate?  I have heard several recurring themes when I ask people this question.  Below I summarize each theme, and try to explain the rationale behind them.</p>
<p>Many people who moved from WinForms to WPF have told me that they are concerned about Microsoft gradually phasing out WinForms and concentrating their new developments and customer support into WPF.   Many people feel that sticking with WinForms is just asking to be left in the dust.  That is a very forward thinking idea, though I obviously have no idea how long it will be before WinForms is retired.</p>
<p>Another common theme I have noticed is that people are leaving WinForms for WPF because they want to incorporate advanced data visualizations in their programs.  There seems to be quite a lot of interest in the possibilities of charts and graphs that a vector-based rendering system, which supports 3D, has to offer.  Creating animated 3D data visualizations in WinForms is not exactly something that the average developer can do, but in WPF the barrier to entry is significantly lower.  In my mind, that&#8217;s a very good thing (unless you happen to be making excellent money by creating advanced 3D data visualizations via GDI+).</p>
<p>The other common thread I&#8217;ve noticed is that people move from WinForms to WPF because they find certain aspects of the platform appealing.  For example, many folks I meet tell me that the WPF data binding system alone was compelling enough for them to make the switch.  I completely understand that!!  From a developer&#8217;s perspective, things like triggers, routed events, rich data binding, and commands are extremely useful and addictive.</p>
<p>The last thing I have heard people say, but not quite as often, is that they want to have an easier way to involve a Visual Designer in their project.  People who say that are typically working on a product, as opposed to an internal application for a company.  For them, the idea that their aesthetically-challenged developers will not be responsible for designing the user experience is a powerful selling point for WPF adoption.  Once again, I completely understand that! <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>The reasons why ASP.NET folks are moving to WPF overlap with the reasons listed above, for WinFormers.  In addition, I have heard that some Web developers are just plain sick and tired of dealing with browser-incompatible HTML and CSS.  I have met Web devs who originally got into Web programming because it made the deployment of their applications much simpler.  They soon discovered that they traded the simplicity of development for simplicity of deployment.  Pick your evil&#8230;</p>
<p>The other major reason that I hear of ASP.NET developers getting into WPF is so that they can get a jumpstart on Silverlight.  Since Silverlight is planned to be a subset of WPF, many people find value in learning WPF now, so that they can apply that knowledge to Silverlight once it is officially released.  I think that is a very wise plan.</p>
<p>What about you?  Why have you started using WPF, or not?  What are the key factors in your rationale for adopting or avoiding WPF?</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/joshsmithonwpf.wordpress.com/473/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/joshsmithonwpf.wordpress.com/473/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/joshsmithonwpf.wordpress.com/473/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/joshsmithonwpf.wordpress.com/473/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/joshsmithonwpf.wordpress.com/473/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/joshsmithonwpf.wordpress.com/473/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/joshsmithonwpf.wordpress.com/473/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/joshsmithonwpf.wordpress.com/473/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/joshsmithonwpf.wordpress.com/473/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/joshsmithonwpf.wordpress.com/473/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/joshsmithonwpf.wordpress.com/473/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/joshsmithonwpf.wordpress.com/473/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=joshsmithonwpf.wordpress.com&blog=737883&post=473&subd=joshsmithonwpf&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://joshsmithonwpf.wordpress.com/2008/04/21/why-use-wpf-if-it-is-not-rad-yet/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/joshsmith-128.jpg" medium="image">
			<media:title type="html">Josh Smith</media:title>
		</media:content>

		<media:content url="http://joshsmithonwpf.files.wordpress.com/2008/04/rad.jpg?w=230" medium="image">
			<media:title type="html">rad</media:title>
		</media:content>

		<media:content url="http://joshsmithonwpf.files.wordpress.com/2008/04/brain.gif?w=300" medium="image">
			<media:title type="html">brain</media:title>
		</media:content>
	</item>
	</channel>
</rss>