<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:blogChannel="http://backend.userland.com/blogChannelModule" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>SlickThought.Net</title>
    <description>Thoughts, rants and a few useful tidbits</description>
    <link>http://www.slickthought.net/</link>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>BlogEngine.Net Syndication Generator 1.0.0.0 (http://dotnetblogengine.net/)</generator>
    <language>en-GB</language>
    <blogChannel:blogRoll>http://www.slickthought.net/opml.axd</blogChannel:blogRoll>
    <blogChannel:blink>http://www.dotnetblogengine.net/syndication.axd?format=rss</blogChannel:blink>
    <dc:title>SlickThought.Net</dc:title>
    <geo:lat>0.000000</geo:lat>
    <geo:long>0.000000</geo:long>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/Slickthought" type="application/rss+xml" /><item>
      <title>Design For Developers</title>
      <description>&lt;p&gt;If you are a developer and have been working wit WPF and/or Silverlight, you may have wished you had a better sense of design to really take advantage of XAML and create a visually compelling app.&amp;#160; A new Design for Developer series has been started and you can &lt;a href="http://www.microsoft.com/video/en/us/details/fa37131b-90e5-4360-b481-eb3aa905108a"&gt;watch the first installment here&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Slickthought/~4/80zXv7aJMJw" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Slickthought/~3/80zXv7aJMJw/post.aspx</link>
      <author>jab</author>
      <comments>http://www.slickthought.net/post/2009/06/Design-For-Developers.aspx#comment</comments>
      <guid isPermaLink="false">http://www.slickthought.net/post.aspx?id=9d08bbe9-89fd-4b5a-ab26-9474b73278e5</guid>
      <pubDate>Mon, 15 Jun 2009 13:55:30 -0700</pubDate>
      <category>Headlines</category>
      <dc:publisher>jab</dc:publisher>
      <pingback:server>http://www.slickthought.net/pingback.axd</pingback:server>
      <pingback:target>http://www.slickthought.net/post.aspx?id=9d08bbe9-89fd-4b5a-ab26-9474b73278e5</pingback:target>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://www.slickthought.net/trackback.axd?id=9d08bbe9-89fd-4b5a-ab26-9474b73278e5</trackback:ping>
      <wfw:comment>http://www.slickthought.net/post/2009/06/Design-For-Developers.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.slickthought.net/syndication.axd?post=9d08bbe9-89fd-4b5a-ab26-9474b73278e5</wfw:commentRss>
    <feedburner:origLink>http://www.slickthought.net/post.aspx?id=9d08bbe9-89fd-4b5a-ab26-9474b73278e5</feedburner:origLink></item>
    <item>
      <title>Journey Into Peer-to-Peer Begins</title>
      <description>&lt;p&gt;
With some recent announcements from a big Internet company whose name cannot be mentioned, I went off on my own expedition into the dark corners of the .NET and Windows platform to see what cool technology treasures may be lurking there.&amp;nbsp; If you are like me, you may have heard something about P2P technologies being delivered for Windows.&amp;nbsp; And if you were like me, you didn&amp;rsquo;t really pay much attention to it at the time since only file sharing, music stealing people cared about peer to peer technologies.
&lt;/p&gt;
&lt;p&gt;
Well, let me tell you, my friend, that was a very wrong assumption!&amp;nbsp; There is a ton of amazing P2P technologies in Windows and .NET, and they make the creation of amazing new applications possible.&amp;nbsp; Ever had an idea where your app would need to dynamically find another computer and communicate with it but both computers might be around the world, not registered with DNS, and hiding behind a NAT device? PNRP in Windows makes that easy! Every thought of having a global hashtable to store all kinds of data that could be retrieved by your app&amp;rsquo;s users &amp;ndash; DRT to the rescue!
&lt;/p&gt;
&lt;p&gt;
What are PNRP and DRT you ask?&amp;nbsp; That, dear reader, will be what I will cover in a series of blog posts and screencasts in the coming weeks to show you how to leverage and exploit this cool technology.&amp;nbsp; Want to get a head start?&amp;nbsp; Check out the &lt;a href="http://blogs.msdn.com/p2p"&gt;P2P team&amp;rsquo;s blog&lt;/a&gt; and the &lt;a href="http://technet.microsoft.com/en-us/network/bb545868.aspx"&gt;Microsoft Peer-to-Peer Reference page&lt;/a&gt;.
&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Slickthought/~4/-igCNnxZQTg" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Slickthought/~3/-igCNnxZQTg/post.aspx</link>
      <author>JAB</author>
      <comments>http://www.slickthought.net/post/2009/06/Journey-Into-Peer-to-Peer-Begins.aspx#comment</comments>
      <guid isPermaLink="false">http://www.slickthought.net/post.aspx?id=5c9c925d-5cbf-4542-bcbf-67392344f041</guid>
      <pubDate>Fri, 12 Jun 2009 08:07:00 -0700</pubDate>
      <category>Peer2Peer</category>
      <dc:publisher>JAB</dc:publisher>
      <pingback:server>http://www.slickthought.net/pingback.axd</pingback:server>
      <pingback:target>http://www.slickthought.net/post.aspx?id=5c9c925d-5cbf-4542-bcbf-67392344f041</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.slickthought.net/trackback.axd?id=5c9c925d-5cbf-4542-bcbf-67392344f041</trackback:ping>
      <wfw:comment>http://www.slickthought.net/post/2009/06/Journey-Into-Peer-to-Peer-Begins.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.slickthought.net/syndication.axd?post=5c9c925d-5cbf-4542-bcbf-67392344f041</wfw:commentRss>
    <feedburner:origLink>http://www.slickthought.net/post.aspx?id=5c9c925d-5cbf-4542-bcbf-67392344f041</feedburner:origLink></item>
    <item>
      <title>Building a Composite WPF Application Part 9: Intro to Event Publishing and Subscribing</title>
      <description>In this installment, we take a look at using PRISM events to publish and subscribe to events. Previous versions of the application have used .NET events and event handlers to communicate UI events between presenters. We know use PRISM events in conjunction with WPF Commands (introduced earlier) to notify various parts of the application that something important has happened.   &lt;p&gt;&lt;iframe style="width: 500px; height: 375px" src="http://silverlight.services.live.com/invoke/29367/WPFCAL9/iframe.html" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://silverlight.services.live.com/29367/WPFCAL9/video.wmv"&gt;Download video here&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://slickthought.net/download/code/northwindwpf.zip"&gt;Download source code here&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Slickthought/~4/F8kSjvLHOfY" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Slickthought/~3/F8kSjvLHOfY/post.aspx</link>
      <author>jab</author>
      <comments>http://www.slickthought.net/post/2009/06/Building-a-Composite-WPF-Application-Part-9-Intro-to-Event-Publishing-and-Subscribing.aspx#comment</comments>
      <guid isPermaLink="false">http://www.slickthought.net/post.aspx?id=4d43d53b-c996-42ef-8f90-6acb91b3c33b</guid>
      <pubDate>Fri, 05 Jun 2009 08:05:49 -0700</pubDate>
      <category>WPF Composite App</category>
      <dc:publisher>jab</dc:publisher>
      <pingback:server>http://www.slickthought.net/pingback.axd</pingback:server>
      <pingback:target>http://www.slickthought.net/post.aspx?id=4d43d53b-c996-42ef-8f90-6acb91b3c33b</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.slickthought.net/trackback.axd?id=4d43d53b-c996-42ef-8f90-6acb91b3c33b</trackback:ping>
      <wfw:comment>http://www.slickthought.net/post/2009/06/Building-a-Composite-WPF-Application-Part-9-Intro-to-Event-Publishing-and-Subscribing.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.slickthought.net/syndication.axd?post=4d43d53b-c996-42ef-8f90-6acb91b3c33b</wfw:commentRss>
    <feedburner:origLink>http://www.slickthought.net/post.aspx?id=4d43d53b-c996-42ef-8f90-6acb91b3c33b</feedburner:origLink></item>
    <item>
      <title>Wicked Cool Silverlight App</title>
      <description>&lt;p&gt;Hanging at the .NET UG and Scott Davis pointed me to this Silverlight app by some French Microsofties - &lt;a title="http://www.microsoft.com/france/entreprises/centre-des-usages/" href="http://www.microsoft.com/france/entreprises/centre-des-usages/"&gt;http://www.microsoft.com/france/entreprises/centre-des-usages/&lt;/a&gt;&amp;#160; WOW!!!!!!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Slickthought/~4/-Op4soPlLCA" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Slickthought/~3/-Op4soPlLCA/post.aspx</link>
      <author>jab</author>
      <comments>http://www.slickthought.net/post/2009/06/Wicked-Cool-Silverlight-App.aspx#comment</comments>
      <guid isPermaLink="false">http://www.slickthought.net/post.aspx?id=01e55f38-b9ba-4399-a549-8a2a253f1cb5</guid>
      <pubDate>Thu, 04 Jun 2009 09:20:52 -0700</pubDate>
      <category>Headlines</category>
      <dc:publisher>jab</dc:publisher>
      <pingback:server>http://www.slickthought.net/pingback.axd</pingback:server>
      <pingback:target>http://www.slickthought.net/post.aspx?id=01e55f38-b9ba-4399-a549-8a2a253f1cb5</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.slickthought.net/trackback.axd?id=01e55f38-b9ba-4399-a549-8a2a253f1cb5</trackback:ping>
      <wfw:comment>http://www.slickthought.net/post/2009/06/Wicked-Cool-Silverlight-App.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.slickthought.net/syndication.axd?post=01e55f38-b9ba-4399-a549-8a2a253f1cb5</wfw:commentRss>
    <feedburner:origLink>http://www.slickthought.net/post.aspx?id=01e55f38-b9ba-4399-a549-8a2a253f1cb5</feedburner:origLink></item>
    <item>
      <title>Wish Me Luck</title>
      <description>&lt;p&gt;Totally off normal topic (if there every really is such a thing on this blog), but I’ve signed up to take motorcycle riding lessons in a couple weeks.&amp;#160; I am still on the fence about getting a bike, but this seems like a logical first step.&amp;#160; I’m looking forward to it.&amp;#160; No idea what to do for a first bike should I decide to pursue it.&amp;#160; All the bikes I really like are much more than likely to be way to much bike for a first time rider.&amp;#160; Admittedly, that takes away some of the allure – not getting to ride a cool bike. ;-)&amp;#160; I get the feeling I need to stick to 600cc or less and that does not leave a lot of cool factor in the choices that remain!&amp;#160; ;-)&amp;#160; I’ve even heard some say to not get anything over 500cc but that is just not an option – I can afford a bike now so I kinda need to get something that I can grow into ‘cause I am not sure an upgrade option will exist in a year or two. Anyone with recommendations/experiences as a first time rider, please leave a comment.&amp;#160; And no, I am refuting the notion that this is some kind of mid-life act out!!! ;-)&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Slickthought/~4/EveFwiShW08" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Slickthought/~3/EveFwiShW08/post.aspx</link>
      <author>jab</author>
      <comments>http://www.slickthought.net/post/2009/06/Wish-Me-Luck.aspx#comment</comments>
      <guid isPermaLink="false">http://www.slickthought.net/post.aspx?id=b9611167-fd16-4699-b4e5-c19f84736edb</guid>
      <pubDate>Mon, 01 Jun 2009 05:42:56 -0700</pubDate>
      <category>Junk</category>
      <dc:publisher>jab</dc:publisher>
      <pingback:server>http://www.slickthought.net/pingback.axd</pingback:server>
      <pingback:target>http://www.slickthought.net/post.aspx?id=b9611167-fd16-4699-b4e5-c19f84736edb</pingback:target>
      <slash:comments>6</slash:comments>
      <trackback:ping>http://www.slickthought.net/trackback.axd?id=b9611167-fd16-4699-b4e5-c19f84736edb</trackback:ping>
      <wfw:comment>http://www.slickthought.net/post/2009/06/Wish-Me-Luck.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.slickthought.net/syndication.axd?post=b9611167-fd16-4699-b4e5-c19f84736edb</wfw:commentRss>
    <feedburner:origLink>http://www.slickthought.net/post.aspx?id=b9611167-fd16-4699-b4e5-c19f84736edb</feedburner:origLink></item>
    <item>
      <title>Building a Composite WPF Application Part 8: Custom Commands and Non-Command UI Elements</title>
      <description>&lt;p&gt;This installment looks at extending the Command concept to controls in WPF that do not natively support Commands.&amp;#160; This allows developers to work inside of the WPF Composite App Framework (PRISM) to connect Commands to controls other than just ICommandSource controls (Button being the prime example).&lt;/p&gt; &lt;iframe style="width: 500px; height: 375px" src="http://silverlight.services.live.com/invoke/29367/WPFCAL8/iframe.html" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;  &lt;p&gt;&lt;a href="http://silverlight.services.live.com/29367/WPFCAL8/video.wmv"&gt;Download video here&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://slickthought.net/download/code/northwindwpf.zip"&gt;Download source code here&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Slickthought/~4/JA95Pwl0gmA" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Slickthought/~3/JA95Pwl0gmA/post.aspx</link>
      <author>jab</author>
      <comments>http://www.slickthought.net/post/2009/05/Building-a-Composite-WPF-Application-Part-8-Custom-Commands-and-Non-Command-UI-Elements.aspx#comment</comments>
      <guid isPermaLink="false">http://www.slickthought.net/post.aspx?id=b092cb01-9af9-4999-9bc7-148dff8cbc6a</guid>
      <pubDate>Thu, 28 May 2009 08:26:02 -0700</pubDate>
      <category>WPF Composite App</category>
      <dc:publisher>jab</dc:publisher>
      <pingback:server>http://www.slickthought.net/pingback.axd</pingback:server>
      <pingback:target>http://www.slickthought.net/post.aspx?id=b092cb01-9af9-4999-9bc7-148dff8cbc6a</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.slickthought.net/trackback.axd?id=b092cb01-9af9-4999-9bc7-148dff8cbc6a</trackback:ping>
      <wfw:comment>http://www.slickthought.net/post/2009/05/Building-a-Composite-WPF-Application-Part-8-Custom-Commands-and-Non-Command-UI-Elements.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.slickthought.net/syndication.axd?post=b092cb01-9af9-4999-9bc7-148dff8cbc6a</wfw:commentRss>
    <feedburner:origLink>http://www.slickthought.net/post.aspx?id=b092cb01-9af9-4999-9bc7-148dff8cbc6a</feedburner:origLink></item>
    <item>
      <title>Building a Composite WPF Application Part 7: Intro to Commands</title>
      <description>&lt;p&gt;This installment looks at using Commands inside of your WPF Composite App using PRISM.&amp;#160; This is a very simple example of how to use Commands and leveraging the DelegateCommand that the PRISM framework provides.&amp;#160; &lt;/p&gt; &lt;iframe style="width: 500px; height: 375px" src="http://silverlight.services.live.com/invoke/29367/WPFCAL7/iframe.html" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;  &lt;p&gt;&lt;a href="http://silverlight.services.live.com/29367/WPFCAL7/video.wmv"&gt;Download video here&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://slickthought.net/download/code/northwindwpf.zip"&gt;Download source code here&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Slickthought/~4/XUvbhTft2u8" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Slickthought/~3/XUvbhTft2u8/post.aspx</link>
      <author>jab</author>
      <comments>http://www.slickthought.net/post/2009/05/Building-a-Composite-WPF-Application-Part-7-Intro-to-Commands.aspx#comment</comments>
      <guid isPermaLink="false">http://www.slickthought.net/post.aspx?id=1779754b-3937-40cf-868b-35771ec2086b</guid>
      <pubDate>Thu, 28 May 2009 08:18:14 -0700</pubDate>
      <category>WPF Composite App</category>
      <dc:publisher>jab</dc:publisher>
      <pingback:server>http://www.slickthought.net/pingback.axd</pingback:server>
      <pingback:target>http://www.slickthought.net/post.aspx?id=1779754b-3937-40cf-868b-35771ec2086b</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.slickthought.net/trackback.axd?id=1779754b-3937-40cf-868b-35771ec2086b</trackback:ping>
      <wfw:comment>http://www.slickthought.net/post/2009/05/Building-a-Composite-WPF-Application-Part-7-Intro-to-Commands.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.slickthought.net/syndication.axd?post=1779754b-3937-40cf-868b-35771ec2086b</wfw:commentRss>
    <feedburner:origLink>http://www.slickthought.net/post.aspx?id=1779754b-3937-40cf-868b-35771ec2086b</feedburner:origLink></item>
    <item>
      <title>Why Can't This Be Fixed?</title>
      <description>&lt;p&gt;
I&amp;rsquo;ve been running some flavor of Win 7 for awhile now.&amp;nbsp; My problem still exists.&amp;nbsp; In fact, it has existed for as long as you have been able use plug-in-play drive devices.&amp;nbsp; You&amp;rsquo;ve probably experienced as well.&amp;nbsp; It has probably driven you a bit batty like it has me (along with a myriad of other things, many of which are not PC related).&amp;nbsp; I&amp;rsquo;ve submitted complaints, suggestions, bitches&amp;hellip; you name it, but the problem remains the same.&amp;nbsp; You might have done the same.
&lt;/p&gt;
&lt;p&gt;
What am I talking about? That FREAKIN&amp;rsquo; (I would use another word that begins with F but this is a family blog) dialog box that pops up when you want to disconnect a removable hard dive that says that you can&amp;rsquo;t remove the device because some other process/application is using that drive.&amp;nbsp; Well, that is nice to know, but you you please tell me what F&amp;rsquo;ING application is so I can close it.&amp;nbsp; When I have 20 different windows open, and some may or may not or maybe did but are not currently using that drive, it is a PIA figuring out which one it is.&amp;nbsp; God forbid the app is actually a system tray app that Win 7 now conveniently hides the icon for.&amp;nbsp; ARGHHHHH!!!!!!!!!!!!!!
&lt;/p&gt;
&lt;p&gt;
Can&amp;rsquo;t the OS say something like, &amp;ldquo;Sorry, but the DoofinSchwark application is currently using this device.&amp;nbsp; Close this application if you wish to remove the device.&amp;rdquo; or something equally helpful.&amp;nbsp; It&amp;rsquo;s the little things&amp;hellip;.. like knowing how to merge onto a busy highway.&amp;nbsp; Yeah, I&amp;rsquo;m talking to you jack @$$!!!!
&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Slickthought/~4/_L1t81lu0Tw" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Slickthought/~3/_L1t81lu0Tw/post.aspx</link>
      <author>JAB</author>
      <comments>http://www.slickthought.net/post/2009/05/Why-Canrsquo3bt-This-Be-Fixed.aspx#comment</comments>
      <guid isPermaLink="false">http://www.slickthought.net/post.aspx?id=5fa25c5d-1eb9-433b-aa26-c227faab6d49</guid>
      <pubDate>Thu, 28 May 2009 02:45:00 -0700</pubDate>
      <category>Rant</category>
      <dc:publisher>JAB</dc:publisher>
      <pingback:server>http://www.slickthought.net/pingback.axd</pingback:server>
      <pingback:target>http://www.slickthought.net/post.aspx?id=5fa25c5d-1eb9-433b-aa26-c227faab6d49</pingback:target>
      <slash:comments>8</slash:comments>
      <trackback:ping>http://www.slickthought.net/trackback.axd?id=5fa25c5d-1eb9-433b-aa26-c227faab6d49</trackback:ping>
      <wfw:comment>http://www.slickthought.net/post/2009/05/Why-Canrsquo3bt-This-Be-Fixed.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.slickthought.net/syndication.axd?post=5fa25c5d-1eb9-433b-aa26-c227faab6d49</wfw:commentRss>
    <feedburner:origLink>http://www.slickthought.net/post.aspx?id=5fa25c5d-1eb9-433b-aa26-c227faab6d49</feedburner:origLink></item>
    <item>
      <title>New Spaghetti Code Podcast: Javier Lozano and Code Frameworks</title>
      <description>&lt;p&gt;
Spaghetti Code Talks Code Frameworks with Javier Lozano about the various open source code frameworks he used in the application he is currently developing.&amp;nbsp; Covering things like nHibernate, Windsor and more, Jav talks about the frameworks he used, the rationale for picking them, and how they helped him create his application fast and with more flexibility and reliability.
&lt;/p&gt;
&lt;li&gt;Direct Download - &lt;a href="http://www.slickthought.net/spaghetticode/podcast/spaghetticode-codeframeworks.mp3"&gt;click here&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Subscribe - &lt;a href="http://feeds2.feedburner.com/SpaghettiCodePodcasts"&gt;click here&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;iTunes - &lt;a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=276543733"&gt;click here&lt;/a&gt;&lt;/li&gt;&lt;img src="http://feeds.feedburner.com/~r/Slickthought/~4/8qA1bgpGLcg" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Slickthought/~3/8qA1bgpGLcg/post.aspx</link>
      <author>JAB</author>
      <comments>http://www.slickthought.net/post/2009/05/New-Spaghetti-Code-Podcast-ndash3b-Javier-Lozano-and-Code-Frameworks.aspx#comment</comments>
      <guid isPermaLink="false">http://www.slickthought.net/post.aspx?id=7d3ff8ed-ab8f-4267-8b5e-0269aa3be8c9</guid>
      <pubDate>Wed, 27 May 2009 01:29:00 -0700</pubDate>
      <dc:publisher>JAB</dc:publisher>
      <pingback:server>http://www.slickthought.net/pingback.axd</pingback:server>
      <pingback:target>http://www.slickthought.net/post.aspx?id=7d3ff8ed-ab8f-4267-8b5e-0269aa3be8c9</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.slickthought.net/trackback.axd?id=7d3ff8ed-ab8f-4267-8b5e-0269aa3be8c9</trackback:ping>
      <wfw:comment>http://www.slickthought.net/post/2009/05/New-Spaghetti-Code-Podcast-ndash3b-Javier-Lozano-and-Code-Frameworks.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.slickthought.net/syndication.axd?post=7d3ff8ed-ab8f-4267-8b5e-0269aa3be8c9</wfw:commentRss>
    <feedburner:origLink>http://www.slickthought.net/post.aspx?id=7d3ff8ed-ab8f-4267-8b5e-0269aa3be8c9</feedburner:origLink></item>
    <item>
      <title>Visual Tree Printing in WPF Applications</title>
      <description>&lt;p&gt;&lt;a href="http://www.slickthought.net/image.axd?picture=WindowsLiveWriter/VisualTreePrintinginWPFApplications/06CC1992/HorseCalc.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 15px 15px; display: inline; border-top: 0px; border-right: 0px" title="HorseCalc" border="0" alt="HorseCalc" align="right" src="http://www.slickthought.net/image.axd?picture=WindowsLiveWriter/VisualTreePrintinginWPFApplications/13C5F9A3/HorseCalc_thumb.png" width="290" height="177" /&gt;&lt;/a&gt; It’s been a while since I have posted, so I thought I would whip out a quick nugget while I work on a longer technical post.&amp;#160; I have been hacking away at a side project and experimenting with Prism 2 and MVC/MVP/MVVM/et al design patterns and came upon the need to print some of the output from that was already on the screen.&amp;#160; This seemed like a somewhat common occurrence for Composite style applications – think “print THAT widget”. The screenshot shows an application I have been working on in my spare time and the red area shows the portion of the screen I would like to print.&amp;#160; I quick, and admittedly cursory, examination of the SDK provided lots of examples on generating custom output to the WPF XPS infrastructure, but it was all about dynamically generating the print content.&amp;#160; I already had the content I wanted to print, why did I need to go through a lot of hoops and additional code just to print something I had already created?&lt;/p&gt;  &lt;p&gt;What I was really looking for was a way to print WYSIWYG style.&amp;#160; I wanted to take just the chart portion of the UI and send it to the printer.&amp;#160; A web search got me close - “&lt;a href="http://a2zdotnet.com/View.aspx?id=66"&gt;Printing WPF window(visual) to printer and fit on a page&lt;/a&gt;”. The problem was that Pankaj’s solution was printing the entire window, and not just a smaller part of the overall visual tree.&amp;#160; Fortunately, the solution is pretty straightforward but I thought I would post it anyway.&amp;#160; So standing on the shoulder of giants, let me show you what I did.&lt;/p&gt;  &lt;p&gt;First, Horse.NET is built on a flavor of MVP, so I have a button on the screen (actually the View for the SummaryPresenter) that initiates the printing process.&amp;#160; Here is the XAML for that button.&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Button&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Content&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Print&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Command&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;{Binding Path=PrintCommand}&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;CommandParameter&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;{Binding ElementName=ReportPanel}&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Button&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;There are two important things to note here. First, I am using a WPF command to start the printing process.&amp;#160;&amp;#160; You don’t have to do it this way, but it lets me tie the presenter to the UI pretty cleanly.&amp;#160; The second thing is the CommandParameter.&amp;#160; It is passing in a reference to the the ReportPanel.&amp;#160; ReportPanel is just a WPF Grid control that wraps the title&amp;#160; TextBlock and a Listbox that contains the actual charts.&amp;#160; The simplified XAML is below:&lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Grid&lt;/span&gt; &lt;span style="color: #ff0000"&gt;x:Name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;ReportPanel&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Grid.RowDefinitions&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;RowDefinition&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Height&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Auto&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;RowDefinition&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Height&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;*&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Grid.RowDefinitions&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;TextBlock&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ListBox&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Grid&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;With that UI established, lets jump to the code.&amp;#160; When the user clicks the Print button, the following WPF command is executed:&lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.PrintCommand = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; SimpleCommand&amp;lt;Grid&amp;gt; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; { &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;     CanExecuteDelegate = execute =&amp;gt; &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;, &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;     ExecuteDelegate = grid =&amp;gt; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;         { &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;             PrintCharts(grid); &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt;         } &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt; };&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;This is pretty simple stuff.&amp;#160; SimpleCommand implements the ICommand interface and lets me pass in some lambda expressions defining the code I want to run when this command is fired.&amp;#160; Clearly, the magic happens in the PrintCharts(grid) call.&amp;#160; The code shown below is basically the same code you would find in Pankaj’s article with a couple of modification highlighted in red.&amp;#160; &lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; PrintCharts(Grid grid) &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; { &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;     PrintDialog print = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; PrintDialog(); &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (print.ShowDialog() == &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;) &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;     { &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;         PrintCapabilities capabilities = print.PrintQueue.GetPrintCapabilities(print.PrintTicket); &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;double&lt;/span&gt; scale = Math.Min(capabilities.PageImageableArea.ExtentWidth / &lt;font color="#ff0000"&gt;grid.ActualWidth&lt;/font&gt;, &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt;                                 capabilities.PageImageableArea.ExtentHeight / &lt;font color="#ff0000"&gt;grid.ActualHeight&lt;/font&gt;); &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt;  10:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum11"&gt;  11:&lt;/span&gt;         &lt;font color="#ff0000"&gt;Transform oldTransform = grid.LayoutTransform;&lt;/font&gt; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum12"&gt;  12:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum13"&gt;  13:&lt;/span&gt;         &lt;font color="#ff0000"&gt;grid&lt;/font&gt;.LayoutTransform = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ScaleTransform(scale, scale); &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum14"&gt;  14:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum15"&gt;  15:&lt;/span&gt;         &lt;font color="#ff0000"&gt;Size oldSize = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Size(grid.ActualWidth, grid.ActualHeight);&lt;/font&gt; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum16"&gt;  16:&lt;/span&gt;         Size sz = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Size(capabilities.PageImageableArea.ExtentWidth, capabilities.PageImageableArea.ExtentHeight); &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum17"&gt;  17:&lt;/span&gt;         &lt;font color="#ff0000"&gt;grid&lt;/font&gt;.Measure(sz); &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum18"&gt;  18:&lt;/span&gt;         &lt;font color="#ff0000"&gt;((UIElement)grid&lt;/font&gt;).Arrange(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Rect(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Point(capabilities.PageImageableArea.OriginWidth, capabilities.PageImageableArea.OriginHeight), &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum19"&gt;  19:&lt;/span&gt;             sz)); &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum20"&gt;  20:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum21"&gt;  21:&lt;/span&gt;         print.PrintVisual(&lt;font color="#ff0000"&gt;grid&lt;/font&gt;, &lt;span style="color: #006080"&gt;&amp;quot;Print Results&amp;quot;&lt;/span&gt;); &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum22"&gt;  22:&lt;/span&gt;         &lt;font color="#ff0000"&gt;grid.LayoutTransform = oldTransform;&lt;/font&gt; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum23"&gt;  23:&lt;/span&gt;         &lt;font color="#ff0000"&gt;grid.Measure(oldSize);&lt;/font&gt; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum24"&gt;  24:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum25"&gt;  25:&lt;/span&gt;         &lt;font color="#ff0000"&gt;((UIElement)grid).Arrange(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Rect(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Point(0, 0),&lt;/font&gt; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum26"&gt;  26:&lt;/span&gt;             &lt;font color="#ff0000"&gt;oldSize));&lt;/font&gt; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum27"&gt;  27:&lt;/span&gt;     } &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum28"&gt;  28:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;All right, what are these modifications?&amp;#160; The most obvious is that I am replacing the use of the original this object (which represented the entire application window in the original code) with the Grid control that was passed in as part of the Command.&amp;#160; So all of the measurements and transforms are executed using the Grid.&amp;#160; The other change is that I have save the original Transform and Size of the Grid as well.&amp;#160; The reason is that when you transform the Grid to fit to the printing page, it causes the actual application UI to change as well.&amp;#160; This doesn’t look so good on your screen, so after sending the Grid to the printer, I transform it back to its original screen layout.&amp;#160; &lt;/p&gt;

&lt;p&gt;There you have it.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Slickthought/~4/o7aCW4h9Wx8" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Slickthought/~3/o7aCW4h9Wx8/post.aspx</link>
      <author>jab</author>
      <comments>http://www.slickthought.net/post/2009/05/Visual-Tree-Printing-in-WPF-Applications.aspx#comment</comments>
      <guid isPermaLink="false">http://www.slickthought.net/post.aspx?id=b2e25028-2039-42e0-a01f-fbecbeed6632</guid>
      <pubDate>Tue, 26 May 2009 01:22:48 -0700</pubDate>
      <category>WPF Composite App</category>
      <category>Library</category>
      <dc:publisher>jab</dc:publisher>
      <pingback:server>http://www.slickthought.net/pingback.axd</pingback:server>
      <pingback:target>http://www.slickthought.net/post.aspx?id=b2e25028-2039-42e0-a01f-fbecbeed6632</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.slickthought.net/trackback.axd?id=b2e25028-2039-42e0-a01f-fbecbeed6632</trackback:ping>
      <wfw:comment>http://www.slickthought.net/post/2009/05/Visual-Tree-Printing-in-WPF-Applications.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.slickthought.net/syndication.axd?post=b2e25028-2039-42e0-a01f-fbecbeed6632</wfw:commentRss>
    <feedburner:origLink>http://www.slickthought.net/post.aspx?id=b2e25028-2039-42e0-a01f-fbecbeed6632</feedburner:origLink></item>
    <item>
      <title>New Spaghetti Code Podcast: Silverlight 3 with Adam Grocholski</title>
      <description>&lt;p&gt;Adam Grocholski returns to talk about what’s new in Silverlight 3 and other web technologies unveiled at the MIX Conference.&amp;#160; Starting of with a discussion of Silverlight Out-of-the-Browser the conversation quickly moves to other areas of Silverlight 3 and more.&lt;/p&gt;  &lt;li&gt;Direct Download - &lt;a href="http://slickthought.net/spaghetticode/podcast/spaghetticode-sl3.mp3"&gt;click here&lt;/a&gt; &lt;/li&gt;  &lt;li&gt;Subscribe - &lt;a href="http://feeds2.feedburner.com/SpaghettiCodePodcasts"&gt;click here&lt;/a&gt; &lt;/li&gt;  &lt;li&gt;iTunes - &lt;a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=276543733"&gt;click here&lt;/a&gt;     &lt;p&gt;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt; &lt;/li&gt;&lt;img src="http://feeds.feedburner.com/~r/Slickthought/~4/caPSi8I8TMU" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Slickthought/~3/caPSi8I8TMU/post.aspx</link>
      <author>jab</author>
      <comments>http://www.slickthought.net/post/2009/05/New-Spaghetti-Code-Podcast-Silverlight-3-with-Adam-Grocholski.aspx#comment</comments>
      <guid isPermaLink="false">http://www.slickthought.net/post.aspx?id=1fef3441-e31c-4344-bb92-47eeda59d470</guid>
      <pubDate>Sun, 17 May 2009 23:05:15 -0700</pubDate>
      <dc:publisher>jab</dc:publisher>
      <pingback:server>http://www.slickthought.net/pingback.axd</pingback:server>
      <pingback:target>http://www.slickthought.net/post.aspx?id=1fef3441-e31c-4344-bb92-47eeda59d470</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.slickthought.net/trackback.axd?id=1fef3441-e31c-4344-bb92-47eeda59d470</trackback:ping>
      <wfw:comment>http://www.slickthought.net/post/2009/05/New-Spaghetti-Code-Podcast-Silverlight-3-with-Adam-Grocholski.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.slickthought.net/syndication.axd?post=1fef3441-e31c-4344-bb92-47eeda59d470</wfw:commentRss>
    <feedburner:origLink>http://www.slickthought.net/post.aspx?id=1fef3441-e31c-4344-bb92-47eeda59d470</feedburner:origLink></item>
    <item>
      <title>It is a Proud Day</title>
      <description>&lt;p&gt;Well, as I push through the sub-200 pound barrier in my weight loss program, I thought it was time to see what the Internet thought of me.&amp;#160; As my three long time followers already know (get a life already!), I am the world’s first, and as far as I know only, .NET Sex Symbol.&amp;#160; Even though it is a self-proclaimed title, it has been a long, hard journey to achieve world wide recognition, and it has not been as easy or as glamorous as you probably think it is.&amp;#160; &lt;/p&gt;  &lt;p&gt;So, without further ado, I am proud to proclaim that this web site, this humble blog, now shows up as the top listing on three of the four major search engines when you search for “.net sex symbol” – and the quotes are not required!&amp;#160; BTW, Yahoo – you suck! &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.slickthought.net/image.axd?picture=WindowsLiveWriter/ItisaProudDay/2B901927/image.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.slickthought.net/image.axd?picture=WindowsLiveWriter/ItisaProudDay/64C6801C/image_thumb.png" width="244" height="69" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.slickthought.net/image.axd?picture=WindowsLiveWriter/ItisaProudDay/48498E3C/image.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.slickthought.net/image.axd?picture=WindowsLiveWriter/ItisaProudDay/1C98C440/image_thumb.png" width="244" height="78" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;I’m very proud of this achievement and would like to thank everyone that has made it possible.&amp;#160; I would especially like to thank the Microsoft marketing department for not changing the .NET name brand to something else!&amp;#160; The Microsoft Windows Code Development and Deployment Runtime Environment for Scalable Applications Sex Symbol just doesn’t have the same ring to it.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Slickthought/~4/G6Gv_gdFICs" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Slickthought/~3/G6Gv_gdFICs/post.aspx</link>
      <author>jab</author>
      <comments>http://www.slickthought.net/post/2009/05/It-is-a-Proud-Day.aspx#comment</comments>
      <guid isPermaLink="false">http://www.slickthought.net/post.aspx?id=9c454e93-8cf2-4693-83c7-7fcf9e8f393e</guid>
      <pubDate>Mon, 11 May 2009 23:44:00 -0700</pubDate>
      <category>Junk</category>
      <dc:publisher>jab</dc:publisher>
      <pingback:server>http://www.slickthought.net/pingback.axd</pingback:server>
      <pingback:target>http://www.slickthought.net/post.aspx?id=9c454e93-8cf2-4693-83c7-7fcf9e8f393e</pingback:target>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://www.slickthought.net/trackback.axd?id=9c454e93-8cf2-4693-83c7-7fcf9e8f393e</trackback:ping>
      <wfw:comment>http://www.slickthought.net/post/2009/05/It-is-a-Proud-Day.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.slickthought.net/syndication.axd?post=9c454e93-8cf2-4693-83c7-7fcf9e8f393e</wfw:commentRss>
    <feedburner:origLink>http://www.slickthought.net/post.aspx?id=9c454e93-8cf2-4693-83c7-7fcf9e8f393e</feedburner:origLink></item>
    <item>
      <title>New Spaghetti Code Podcast: UI Patterns with Adam Grocholski</title>
      <description>&lt;p&gt;After a bit of a hiatus, Spaghetti Code returns with a discussion of UI patterns with Adam Grocholski.&amp;#160; Starting of with a brief discussion of patterns, the conversation then moves into a review of the various UI patterns including MVC, MVP and MVVM.&lt;/p&gt;  &lt;li&gt;Direct Download - &lt;a href="http://slickthought.net/spaghetticode/podcast/spaghetticode-uipatterns.mp3"&gt;click here&lt;/a&gt; &lt;/li&gt;  &lt;li&gt;Subscribe - &lt;a href="http://feeds2.feedburner.com/SpaghettiCodePodcasts"&gt;click here&lt;/a&gt; &lt;/li&gt;  &lt;li&gt;iTunes - &lt;a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=276543733"&gt;click here&lt;/a&gt;    &lt;p&gt;&lt;/p&gt; &lt;/li&gt;&lt;img src="http://feeds.feedburner.com/~r/Slickthought/~4/6DU3t1Qh_50" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Slickthought/~3/6DU3t1Qh_50/post.aspx</link>
      <author>jab</author>
      <comments>http://www.slickthought.net/post/2009/05/New-Spaghetti-Code-Podcast-UI-Patterns-with-Adam-Grocholski.aspx#comment</comments>
      <guid isPermaLink="false">http://www.slickthought.net/post.aspx?id=0f369e6b-fba4-413f-bf4a-f8c9276d6de4</guid>
      <pubDate>Mon, 11 May 2009 04:33:03 -0700</pubDate>
      <category>SpaghettiCode</category>
      <dc:publisher>jab</dc:publisher>
      <pingback:server>http://www.slickthought.net/pingback.axd</pingback:server>
      <pingback:target>http://www.slickthought.net/post.aspx?id=0f369e6b-fba4-413f-bf4a-f8c9276d6de4</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.slickthought.net/trackback.axd?id=0f369e6b-fba4-413f-bf4a-f8c9276d6de4</trackback:ping>
      <wfw:comment>http://www.slickthought.net/post/2009/05/New-Spaghetti-Code-Podcast-UI-Patterns-with-Adam-Grocholski.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.slickthought.net/syndication.axd?post=0f369e6b-fba4-413f-bf4a-f8c9276d6de4</wfw:commentRss>
    <feedburner:origLink>http://www.slickthought.net/post.aspx?id=0f369e6b-fba4-413f-bf4a-f8c9276d6de4</feedburner:origLink></item>
    <item>
      <title>TwitLook Pre-Pre-Alpha Available</title>
      <description>&lt;p&gt;I’ve posted the binaries for &lt;a href="http://slickthought.net/page/TwitLook.aspx"&gt;TwitLook&lt;/a&gt;.&amp;#160; I’ll get the source out once I get it cleaned up – I’m hacking around trying some different things and learning more about WPF at the same time so it is a bit ugly in there right now.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Slickthought/~4/0Z2qpPj7FIk" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Slickthought/~3/0Z2qpPj7FIk/post.aspx</link>
      <author>jab</author>
      <comments>http://www.slickthought.net/post/2009/05/TwitLook-Pre-Pre-Alpha-Available.aspx#comment</comments>
      <guid isPermaLink="false">http://www.slickthought.net/post.aspx?id=d00fece3-9fcd-491c-90a5-66b6065eb758</guid>
      <pubDate>Sat, 02 May 2009 11:38:24 -0700</pubDate>
      <category>TwitLook</category>
      <dc:publisher>jab</dc:publisher>
      <pingback:server>http://www.slickthought.net/pingback.axd</pingback:server>
      <pingback:target>http://www.slickthought.net/post.aspx?id=d00fece3-9fcd-491c-90a5-66b6065eb758</pingback:target>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://www.slickthought.net/trackback.axd?id=d00fece3-9fcd-491c-90a5-66b6065eb758</trackback:ping>
      <wfw:comment>http://www.slickthought.net/post/2009/05/TwitLook-Pre-Pre-Alpha-Available.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.slickthought.net/syndication.axd?post=d00fece3-9fcd-491c-90a5-66b6065eb758</wfw:commentRss>
    <feedburner:origLink>http://www.slickthought.net/post.aspx?id=d00fece3-9fcd-491c-90a5-66b6065eb758</feedburner:origLink></item>
    <item>
      <title>Microsoft Vine Beta</title>
      <description>&lt;p&gt;I hadn’t seen this before – &lt;a href="http://vine.net"&gt;Microsoft Vine Beta&lt;/a&gt;.&amp;#160; It looks like a cross between Twitter, news feeds, and some geo-location stuff.&amp;#160; You can only ask to be in the beta right now, so I threw my email address in and have my fingers crossed.&amp;#160; There is a video, however, that shows the general application and key concepts.&amp;#160; I couldn’t find a way to run the vid in full screen, so that was an absolute FAIL as I couldn’t tell exactly what was going on.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Slickthought/~4/grPEfCdJ5jI" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Slickthought/~3/grPEfCdJ5jI/post.aspx</link>
      <author>jab</author>
      <comments>http://www.slickthought.net/post/2009/05/Microsoft-Vine-Beta.aspx#comment</comments>
      <guid isPermaLink="false">http://www.slickthought.net/post.aspx?id=43f4a342-f7ac-4820-8b8c-bc31ba3d0faa</guid>
      <pubDate>Fri, 01 May 2009 08:37:28 -0700</pubDate>
      <category>Slick Thoughts</category>
      <dc:publisher>jab</dc:publisher>
      <pingback:server>http://www.slickthought.net/pingback.axd</pingback:server>
      <pingback:target>http://www.slickthought.net/post.aspx?id=43f4a342-f7ac-4820-8b8c-bc31ba3d0faa</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.slickthought.net/trackback.axd?id=43f4a342-f7ac-4820-8b8c-bc31ba3d0faa</trackback:ping>
      <wfw:comment>http://www.slickthought.net/post/2009/05/Microsoft-Vine-Beta.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.slickthought.net/syndication.axd?post=43f4a342-f7ac-4820-8b8c-bc31ba3d0faa</wfw:commentRss>
    <feedburner:origLink>http://www.slickthought.net/post.aspx?id=43f4a342-f7ac-4820-8b8c-bc31ba3d0faa</feedburner:origLink></item>
  </channel>
</rss>
