<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.windowsclient.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Rob Relyea - XAMLified</title><link>http://blogs.windowsclient.net/rob_relyea/default.aspx</link><description>WPF, Silverlight and XAML</description><dc:language>en</dc:language><generator>CommunityServer 2007 (Build: 20423.869)</generator><item><title>David Poll: Silverlight 4 XAML Parser Overhaul</title><link>http://blogs.windowsclient.net/rob_relyea/archive/2010/03/15/david-poll-silverlight-4-xaml-parser-overhaul.aspx</link><pubDate>Tue, 16 Mar 2010 03:27:22 GMT</pubDate><guid isPermaLink="false">f1c07d22-4184-4df1-9c40-8dd04b52e796:310771</guid><dc:creator>Rob_Relyea</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.windowsclient.net/rob_relyea/rsscomments.aspx?PostID=310771</wfw:commentRss><comments>http://blogs.windowsclient.net/rob_relyea/archive/2010/03/15/david-poll-silverlight-4-xaml-parser-overhaul.aspx#comments</comments><description>&lt;p&gt;At PDC09, we discussed that our direction was to invest in improving the Silverlight XAML parser.&amp;#160; We didn’t announce a timeframe, but I’m happy to see that this work successfully made it in time for Silverlight 4!&lt;/p&gt;  &lt;p&gt;David Poll, the Program Manager for Silverlight runtime’s XAML parser, goes into the details of what is new and improved in “&lt;a href="http://www.davidpoll.com/2010/03/15/new-in-the-silverlight-4-rc-xaml-features/"&gt;New in the Silverlight 4 RC: XAML Features&lt;/a&gt;”.&lt;/p&gt;  &lt;p&gt;There is still a lot of great work to do in future Silverlight versions - but this is a great foundation to build on!&lt;/p&gt;&lt;img src="http://blogs.windowsclient.net/aggbug.aspx?PostID=310771" width="1" height="1"&gt;</description><category domain="http://blogs.windowsclient.net/rob_relyea/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.windowsclient.net/rob_relyea/archive/tags/Xaml/default.aspx">Xaml</category></item><item><title>DataTemplate in Generic.xaml – it should be the next ToString()!</title><link>http://blogs.windowsclient.net/rob_relyea/archive/2010/03/07/datatemplate-in-generic-xaml-it-should-be-the-next-tostring.aspx</link><pubDate>Sun, 07 Mar 2010 14:10:00 GMT</pubDate><guid isPermaLink="false">f1c07d22-4184-4df1-9c40-8dd04b52e796:309565</guid><dc:creator>Rob_Relyea</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.windowsclient.net/rob_relyea/rsscomments.aspx?PostID=309565</wfw:commentRss><comments>http://blogs.windowsclient.net/rob_relyea/archive/2010/03/07/datatemplate-in-generic-xaml-it-should-be-the-next-tostring.aspx#comments</comments><description>&lt;p&gt;Developers often find some benefit by implementing an override for ToString(). I believe that we could make providing a DataTemplate in generic.xaml very beneficial as well. First we have to start a beneficial cycle…&lt;/p&gt;
&lt;h3&gt;What could be done with it:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Apps that use that object in their UI, would have a default data template.&lt;/li&gt;
&lt;li&gt;Tools that help build UI could have a better default data template.&lt;/li&gt;
&lt;li&gt;Visualizers of generic object graphs (like debuggers) could have a better visual representation.&lt;/li&gt;
&lt;li&gt;more…&lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;How to create a default DataTemplate for your type:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Start with a WPF or Silverlight Control Library project&lt;/li&gt;
&lt;li&gt;Create the class in that project&lt;/li&gt;
&lt;li&gt;Modify themes\generic.xaml to contain a DataTemplate with DataType=”{x:Type l:MyType}”&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;(Silverlight doesn’t yet support this…so perhaps you could give your DataTemplate a key of “defaultViewForMyType”)&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;
&lt;h3&gt;Thoughts?&lt;/h3&gt;
&lt;p&gt;Would love to hear what you think…&lt;/p&gt;&lt;img src="http://blogs.windowsclient.net/aggbug.aspx?PostID=309565" width="1" height="1"&gt;</description><category domain="http://blogs.windowsclient.net/rob_relyea/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.windowsclient.net/rob_relyea/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.windowsclient.net/rob_relyea/archive/tags/DataViz/default.aspx">DataViz</category><category domain="http://blogs.windowsclient.net/rob_relyea/archive/tags/DataModel/default.aspx">DataModel</category><category domain="http://blogs.windowsclient.net/rob_relyea/archive/tags/UI+DataBinding/default.aspx">UI DataBinding</category></item><item><title>WPF4 RC has better text clarity. RTM will be even better.</title><link>http://blogs.windowsclient.net/rob_relyea/archive/2010/03/05/wpf4-rc-has-better-text-clarity-rtm-will-be-even-better.aspx</link><pubDate>Fri, 05 Mar 2010 19:41:04 GMT</pubDate><guid isPermaLink="false">f1c07d22-4184-4df1-9c40-8dd04b52e796:309388</guid><dc:creator>Rob_Relyea</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.windowsclient.net/rob_relyea/rsscomments.aspx?PostID=309388</wfw:commentRss><comments>http://blogs.windowsclient.net/rob_relyea/archive/2010/03/05/wpf4-rc-has-better-text-clarity-rtm-will-be-even-better.aspx#comments</comments><description>&lt;p&gt;Thanks to vocal feedback, we’ve realized that our text clarity improvements in VS 2010 Release Candidate could be improved upon again.&lt;/p&gt;  &lt;p&gt;Chipalo gives you details in the WPF Text Blog’s: “&lt;a href="http://blogs.msdn.com/text/archive/2010/03/05/additional-wpf-text-clarity-improvements.aspx"&gt;Additional WPF Text Clarity Improvements&lt;/a&gt;”&lt;/p&gt;  &lt;p&gt;I’m very happy to see this problem with smaller text sizes fixed!&lt;/p&gt;&lt;img src="http://blogs.windowsclient.net/aggbug.aspx?PostID=309388" width="1" height="1"&gt;</description><category domain="http://blogs.windowsclient.net/rob_relyea/archive/tags/WPF/default.aspx">WPF</category></item><item><title>Windows Phone developer platform details :-)</title><link>http://blogs.windowsclient.net/rob_relyea/archive/2010/03/05/windows-phone-developer-platform-details.aspx</link><pubDate>Fri, 05 Mar 2010 12:13:38 GMT</pubDate><guid isPermaLink="false">f1c07d22-4184-4df1-9c40-8dd04b52e796:309315</guid><dc:creator>Rob_Relyea</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.windowsclient.net/rob_relyea/rsscomments.aspx?PostID=309315</wfw:commentRss><comments>http://blogs.windowsclient.net/rob_relyea/archive/2010/03/05/windows-phone-developer-platform-details.aspx#comments</comments><description>&lt;p&gt;Happy to see that we’ve finally released a few key facts on Windows Phone 7’s developer platform:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Silverlight and XNA will be used to create Applications and Games for Windows Phone 7 Series - Charlie Kindel’s blog post “&lt;a href="http://blogs.msdn.com/ckindel/archive/2010/03/04/different-means-better-with-the-new-windows-phone-developer-experience.aspx"&gt;Different Means Better with the new Windows Phone Developer Experience&lt;/a&gt;” &lt;/li&gt;    &lt;li&gt;The design and development experience will be “a lot of fun, elegant and productive” – Christian Schormann, Expression Blend team, “&lt;a href="http://electricbeach.org/?p=413"&gt;Windows Phone 7 Series for Designers and Developers&lt;/a&gt;” &lt;/li&gt;    &lt;li&gt;Last night (March 4th) @ ~6pm, the Windows Phone team had a Q&amp;amp;A on twitter… go see: &lt;a title="http://twitter.com/wp7dev" href="http://twitter.com/wp7dev"&gt;http://twitter.com/wp7dev&lt;/a&gt; to read the questions and answers. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://live.visitmix.com/"&gt;Mix10&lt;/a&gt; in Las Vegas, March 15-17th will be digging deep into the details. I’m excited…XAML UI on the phone!&lt;/p&gt;&lt;img src="http://blogs.windowsclient.net/aggbug.aspx?PostID=309315" width="1" height="1"&gt;</description><category domain="http://blogs.windowsclient.net/rob_relyea/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.windowsclient.net/rob_relyea/archive/tags/Windows+Phone/default.aspx">Windows Phone</category></item><item><title>Always wanted 2 users on 1 PC! Now it is happening…</title><link>http://blogs.windowsclient.net/rob_relyea/archive/2010/03/03/always-wanted-2-users-on-1-pc-now-it-is-happening.aspx</link><pubDate>Wed, 03 Mar 2010 17:02:12 GMT</pubDate><guid isPermaLink="false">f1c07d22-4184-4df1-9c40-8dd04b52e796:308932</guid><dc:creator>Rob_Relyea</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.windowsclient.net/rob_relyea/rsscomments.aspx?PostID=308932</wfw:commentRss><comments>http://blogs.windowsclient.net/rob_relyea/archive/2010/03/03/always-wanted-2-users-on-1-pc-now-it-is-happening.aspx#comments</comments><description>&lt;p&gt;Yesterday I was in a meeting with the MultiPoint team here at Microsoft and I was very excited to hear that they helped release a new SKU for Windows Server called Windows MultiPoint Server 2010! See &lt;a href="http://www.microsoft.com/windows/multipoint/"&gt;microsoft.com/windows/multipoint&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;My vision was having 2 keyboards and mice on 1 pc on a desk, and supporting the ability to have users use 2 different applications. &lt;/p&gt;  &lt;p&gt;June 2007, I &lt;a href="http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!2170.entry"&gt;blogged&lt;/a&gt;: &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;I&amp;#39;d love to have 2 monitors, 2 mice and 2 keyboards on a pc to enable 2 users.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Unfortunately, Windows client has a bunch of ties to 1 app having focus, etc… MultiPoint Server gets around this by effectively using Remote Desktop sessions into the same computer. So you have 2 monitors, 2 keyboards, 2 mice and you are good to go. Sounds like you can do many more users than that, as well…&lt;/p&gt;  &lt;p&gt;Interesting!&lt;/p&gt;&lt;img src="http://blogs.windowsclient.net/aggbug.aspx?PostID=308932" width="1" height="1"&gt;</description><category domain="http://blogs.windowsclient.net/rob_relyea/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://blogs.windowsclient.net/rob_relyea/archive/tags/Windows/default.aspx">Windows</category></item><item><title>Jossef Goldberg: Remoting WPF Apps with Remote Desktop</title><link>http://blogs.windowsclient.net/rob_relyea/archive/2010/03/03/jossef-goldberg-remoting-wpf-apps-with-remote-desktop.aspx</link><pubDate>Wed, 03 Mar 2010 16:27:21 GMT</pubDate><guid isPermaLink="false">f1c07d22-4184-4df1-9c40-8dd04b52e796:308927</guid><dc:creator>Rob_Relyea</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.windowsclient.net/rob_relyea/rsscomments.aspx?PostID=308927</wfw:commentRss><comments>http://blogs.windowsclient.net/rob_relyea/archive/2010/03/03/jossef-goldberg-remoting-wpf-apps-with-remote-desktop.aspx#comments</comments><description>&lt;p&gt;During WPF 4, the WPF team did a bunch of work with the Visual Studio team to ensure that VS (and thus all WPF apps) worked as well as possible over Remote Desktop.&lt;/p&gt;  &lt;p&gt;Jossef Goldberg, a WPF Program Manager, has a great blog post that goes into great detail: “&lt;a href="http://blogs.msdn.com/jgoldb/archive/2010/02/27/optimizing-visual-studio-2010-and-wpf-applications-for-remote-desktop.aspx"&gt;Optimizing Visual Studio 2010 and WPF applications for Remote Desktop&lt;/a&gt;”&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;[Other Terms: Terminal Services, TS, Remote Desktop Protocol, RDP]&lt;/p&gt;&lt;img src="http://blogs.windowsclient.net/aggbug.aspx?PostID=308927" width="1" height="1"&gt;</description><category domain="http://blogs.windowsclient.net/rob_relyea/archive/tags/WPF/default.aspx">WPF</category></item><item><title>XAML UI News – 2010/02/24</title><link>http://blogs.windowsclient.net/rob_relyea/archive/2010/02/24/xaml-ui-news-2010-02-24.aspx</link><pubDate>Wed, 24 Feb 2010 18:28:53 GMT</pubDate><guid isPermaLink="false">f1c07d22-4184-4df1-9c40-8dd04b52e796:307769</guid><dc:creator>Rob_Relyea</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.windowsclient.net/rob_relyea/rsscomments.aspx?PostID=307769</wfw:commentRss><comments>http://blogs.windowsclient.net/rob_relyea/archive/2010/02/24/xaml-ui-news-2010-02-24.aspx#comments</comments><description>&lt;h3&gt;Rob Update – Looking forward&lt;/h3&gt;  &lt;p&gt;I’m still spending time on .NET 4/VS 2010, but since January, I’ve also been doing more forward looking thinking. We have a long list of important things to do…I’m itching to engage on several fronts…lots of good stuff to do.&lt;/p&gt;  &lt;p&gt;Fun times!&lt;/p&gt;  &lt;h3&gt;WPF: Feature Suggestions&lt;/h3&gt;  &lt;p&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;There is a &lt;a href="http://dotnet.uservoice.com/forums/40583-wpf-feature-suggestions"&gt;WPF Feature Suggestions&lt;/a&gt; site now! You get 10 votes…don’t waste them before you see all the ideas. We’re about to ship what I think is a great WPF 4 release…and we’re taking this opportunity to connect with you, the XAML UI heads out there, to understand your wishes, needs and priorities. Vote early, vote often!&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Tools: WPF &amp;amp; Silverlight Designer in VS 2010&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;Great post about “&lt;a href="http://blogs.msdn.com/wpfsldesigner/archive/2010/02/15/know-issues-for-visual-studio-2010-release-candidate.aspx"&gt;Known Issues for VS 2010 RC&lt;/a&gt;” for the XAML UI Designer in VS.&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;XAML: XAML for Config&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;Happy to see Craig Sutherland making more progress on CruiseControl.net using XAML for Config. “&lt;a href="http://csut017.wordpress.com/2010/02/22/handling-intervals-the-xaml-way/"&gt;Handling Intervals – the XAML Way&lt;/a&gt;”.&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Windows Phone 7 Series&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;Looks exciting! Sounds like Mix will dig deeper. &lt;a href="http://live.visitmix.com/News/Countdown-to-MIX10-Charlie-Kindel-and-Windows-Phone-7-Series"&gt;Charlie Kindel talks with the Mix folks&lt;/a&gt;…&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;.NET Framework&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;Peter Marcu posted a great diagram answering “&lt;a href="http://blogs.msdn.com/pmarcu/archive/2010/02/05/which-version-of-net-is-built-into-windows.aspx"&gt;which version of .NET is built into Windows?&lt;/a&gt;”&lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://blogs.msdn.com/pmarcu/archive/2010/02/05/which-version-of-net-is-built-into-windows.aspx"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image_2[1]" border="0" alt="image_2[1]" src="http://blogs.windowsclient.net/blogs/rob_relyea/image_21_367FF67D.png" width="244" height="151" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;h3&gt;Setup: WiX&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;Excited to see &lt;a href="http://robmensching.com/blog/posts/2010/2/20/Birthday-0x21-at-the-beginning-of-the-middle"&gt;Rob’s announcement&lt;/a&gt;. I, too, like numbers like 11, 22, 33, etc… Happy belated 33rd bday Rob…and I’m happy about your new day job.&lt;/li&gt;    &lt;li&gt;WiX v3.5 supports VS 2010 RC -- Read about the “Harvest” feature (&lt;a href="http://robmensching.com/blog/posts/2010/2/19/WiX-v3.5-now-supports-Visual-Studio-2010-RC"&gt;point #3&lt;/a&gt; in Rob Mensching’s post)&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Data/Modeling&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;Interesting to read feedback around this area: “&lt;a href="http://startbigthinksmall.wordpress.com/2010/02/17/what-is-left-of-microsoft-oslo-what-now-with-sql-server-modeling-early-2010/"&gt;What is left of Microsoft ‘Oslo’? What now with SQL Server Modeling? (Early 2010)&lt;/a&gt;”&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://blogs.windowsclient.net/aggbug.aspx?PostID=307769" width="1" height="1"&gt;</description><category domain="http://blogs.windowsclient.net/rob_relyea/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.windowsclient.net/rob_relyea/archive/tags/WPF+Tools/default.aspx">WPF Tools</category><category domain="http://blogs.windowsclient.net/rob_relyea/archive/tags/DataModel/default.aspx">DataModel</category><category domain="http://blogs.windowsclient.net/rob_relyea/archive/tags/.Net/default.aspx">.Net</category><category domain="http://blogs.windowsclient.net/rob_relyea/archive/tags/Apps-Mobile/default.aspx">Apps-Mobile</category><category domain="http://blogs.windowsclient.net/rob_relyea/archive/tags/Silverlight+Tools/default.aspx">Silverlight Tools</category><category domain="http://blogs.windowsclient.net/rob_relyea/archive/tags/XAML+for+Config/default.aspx">XAML for Config</category><category domain="http://blogs.windowsclient.net/rob_relyea/archive/tags/Windows+Phone/default.aspx">Windows Phone</category></item><item><title>Inversion of Control (IOC) with XAML</title><link>http://blogs.windowsclient.net/rob_relyea/archive/2010/02/21/inversion-of-control-ioc-with-xaml.aspx</link><pubDate>Sun, 21 Feb 2010 22:55:07 GMT</pubDate><guid isPermaLink="false">f1c07d22-4184-4df1-9c40-8dd04b52e796:307210</guid><dc:creator>Rob_Relyea</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.windowsclient.net/rob_relyea/rsscomments.aspx?PostID=307210</wfw:commentRss><comments>http://blogs.windowsclient.net/rob_relyea/archive/2010/02/21/inversion-of-control-ioc-with-xaml.aspx#comments</comments><description>&lt;p&gt;I met &lt;a href="http://www.simonferquel.net/blog/"&gt;Simon Ferquel&lt;/a&gt; this week at the 2010 MVP Summit. I gave a talk about XAML on Wednesday, and later that day blogged one of my samples from the talk: “&lt;a href="http://blogs.windowsclient.net/rob_relyea/archive/2010/02/17/xamlschemacontext-xamltype-xamlmember-a-command-line-example.aspx"&gt;XamlSchemaContext/XamlType/XamlMember – a command line example&lt;/a&gt;”.&lt;/p&gt;  &lt;p&gt;He commented on that post with:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Hi Rob,&lt;/p&gt;    &lt;p&gt;As I understand, creating a custom XamlSchemaContext could be a way to make Xaml content integrate with an IoC, isn&amp;#39;t it?&lt;/p&gt;    &lt;p&gt;I can imagine a scenario where you can then write something like :&lt;/p&gt;    &lt;p&gt;&amp;lt;Foo&amp;gt;&lt;/p&gt;    &lt;p&gt; &amp;lt;Foo.Bar&amp;gt;&amp;lt;IBar /&amp;gt;&amp;lt;/Foo.Bar&amp;gt;&lt;/p&gt;    &lt;p&gt;&amp;lt;/Foo&amp;gt;&lt;/p&gt;    &lt;p&gt;With IBar being an interface that is resolved by the IoC. Same thing could apply with types without default constructor whose dependencies could be injected by the IoC-enabled schema context.&lt;/p&gt;    &lt;p&gt;If you confirm that it is doable, I&amp;#39;ll make a sample of a Unity-enabled Xaml Schema Context.&lt;/p&gt;    &lt;p&gt;by &lt;a href="http://www.simonferquel.net/blog"&gt;Simon Ferquel&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Turns out that subclassing XamlSchemaContext and XamlType seems to have worked quite nicely. See Simon’s “&lt;a href="http://www.simonferquel.net/blog/archive/2010/02/19/xaml-ioc-enabled-xaml-parser.aspx"&gt;[Xaml] IoC-enabled Xaml parser&lt;/a&gt;” The basic idea is the custom schema context returns a XamlType for IBar that says it knows how to be created.&amp;#160; When the XamlObjectWriter calls it to create the IBar, it can find an appropriate IBar to return.&lt;/p&gt;  &lt;h3&gt;Other Approaches&lt;/h3&gt;  &lt;p&gt;Other people have accomplished Invesrion of Control other ways…&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;John “Z-Bo” Zabroski uses a custom markup extension. (&lt;a href="http://blogs.windowsclient.net/rob_relyea/archive/2009/03/25/xaml-in-net-4-update.aspx#124349"&gt;via comment&lt;/a&gt;)&lt;/li&gt;    &lt;li&gt;I’ll add more links as I find other approaches or comments mention them.&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://blogs.windowsclient.net/aggbug.aspx?PostID=307210" width="1" height="1"&gt;</description><category domain="http://blogs.windowsclient.net/rob_relyea/archive/tags/Xaml/default.aspx">Xaml</category><category domain="http://blogs.windowsclient.net/rob_relyea/archive/tags/System.Xaml/default.aspx">System.Xaml</category></item><item><title>XamlSchemaContext/XamlType/XamlMember – a command line example</title><link>http://blogs.windowsclient.net/rob_relyea/archive/2010/02/17/xamlschemacontext-xamltype-xamlmember-a-command-line-example.aspx</link><pubDate>Thu, 18 Feb 2010 00:36:43 GMT</pubDate><guid isPermaLink="false">f1c07d22-4184-4df1-9c40-8dd04b52e796:306788</guid><dc:creator>Rob_Relyea</dc:creator><slash:comments>10</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.windowsclient.net/rob_relyea/rsscomments.aspx?PostID=306788</wfw:commentRss><comments>http://blogs.windowsclient.net/rob_relyea/archive/2010/02/17/xamlschemacontext-xamltype-xamlmember-a-command-line-example.aspx#comments</comments><description>&lt;p&gt;Today at MVP Summit 2010, one of the things I discussed with the MVPs was the concept of XamlSchema. To leverage my already done work, and to share with all of you, my XAML friends, I’m following up my talk with a post that goes into that area.&lt;/p&gt;  &lt;p&gt;All XAML systems have a way that they figure out XamlSchema.&amp;#160; &lt;a href="http://robrelyea.com/xaml/spec"&gt;[MS-XAML]&lt;/a&gt;’s section 3 is “XAML Schema Information set” which defines Schema, XamlType, and XamlMember. .NET 4’s XAML stack exposes a set of apis that closely mirror that information about types and members.&lt;/p&gt;  &lt;h3&gt;XamlSchemaContext&lt;/h3&gt;  &lt;p&gt;A XamlSchemaContext is the object that retrieves (and usually caches) type/member information for the purposes of understanding XAML behavior for Load or Save or other.&lt;/p&gt;  &lt;p&gt;There are 3 interesting flavors of &lt;a href="http://msdn.microsoft.com/en-us/library/system.xaml.xamlschemacontext(VS.100).aspx"&gt;XamlSchemaContexts&lt;/a&gt; today:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;WPF optimized context: &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.markup.xamlreader.getwpfschemacontext(VS.100).aspx"&gt;XamlReader.GetWpfSchemaContext&lt;/a&gt;() – These XamlTypes/XamlMembers are optimized to avoid reflection in many cases for type/member information and for actions like “New”, “Set”, “Get”, “Add”, etc…&lt;/li&gt;    &lt;li&gt;General purpose .NET context: &lt;a href="http://msdn.microsoft.com/en-us/library/system.xaml.xamlschemacontext.xamlschemacontext(VS.100).aspx"&gt;new XamlSchemaContext()&lt;/a&gt; – These XamlTypes/XamlMembers are built on top of Reflection APIs for type/member information and for actions like “New”, “Set”, “Get”, “Add”, etc…&lt;/li&gt;    &lt;li&gt;Silverlight context: new SilverlightSchemaContext() //from XamlToolkit - &lt;a href="http://code.msdn.microsoft.com/XAML"&gt;code.msdn.com/xaml&lt;/a&gt; - These XamlTypes/XamlMembers are built on top of Reflection APIs for type/member information and for actions like “New”, “Set”, “Get”, “Add”, etc… (but they know that the Silverlight has a subset of “XamlTypeInformation attributes and interfaces” that .NET Framework has – and adapt. For example ContentPropertyAttribute in .NET 4 is in System.Xaml.dll, but it is in System.Windows.dll in Silverlight 2-4.)&lt;/li&gt; &lt;/ol&gt;  &lt;h3&gt;Goal for XamlSchemaContext&lt;/h3&gt;  &lt;p&gt;Have one way for XAML systems to understand XamlSchema for types. Have one way for XAML systems to provide XamlSchema in other type systems (CLR, Silverlight, NativeCode, JavaScript, Java, etc…)&lt;/p&gt;  &lt;h3&gt;Some Scenarios for XamlSchemaContexts&lt;/h3&gt;  &lt;p&gt;Given a XamlSchemaContext, there are a few interesting things that you can do with it:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Pass it into a XamlReader (XamlXmlReader, XamlObjectReader, Baml2006Reader, or one you write) and/or a XamlWriter (XamlObjectWriter, XamlXmlWriter, or one you write).&lt;/li&gt;    &lt;li&gt;Use it to print out schema information in a tool or into a text, docx or html document - &lt;a href="http://msdn.microsoft.com/en-us/library/system.xaml.xamlschemacontext.getallxamltypes(VS.100).aspx"&gt;schemaContext.GetAllXamlTypes()&lt;/a&gt;;&amp;#160; -- like &lt;a href="http://robrelyea.com/silverlight/xvSpec"&gt;[MS-SLXV]&lt;/a&gt; &amp;amp; &lt;a href="http://robrelyea.com/wpf/xvSpec"&gt;[MS-WPFXV]&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Given a Type, get the XamlType – XamlType xamlType = &lt;a href="http://msdn.microsoft.com/en-us/library/dd292736(VS.100).aspx"&gt;schemaContext.GetXamlType(Type)&lt;/a&gt;;&lt;/li&gt;    &lt;li&gt;Given a xmlns and a type name, get the XamlType – &lt;a href="http://msdn.microsoft.com/en-us/library/ee474971(VS.100).aspx"&gt;schemaContext.GetXamlType(XamlTypeName)&lt;/a&gt;;&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Code Sample&lt;/h3&gt;  &lt;p&gt;I’ve posted this project at &lt;a href="http://robrelyea.com/demos/xamlSchemaExplorer"&gt;http://robrelyea.com/demos/xamlSchemaExplorer&lt;/a&gt;&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.ComponentModel;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Windows.Markup;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Xaml;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Text;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; XamlSchemaExplorer&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;{&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;    &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;    {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[] args)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;        {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;            XamlSchemaContext schemaContext = &lt;span class="kwrd"&gt;new&lt;/span&gt; XamlSchemaContext();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;            XamlType xamlType = schemaContext.GetXamlType(&lt;span class="kwrd"&gt;typeof&lt;/span&gt;(SampleClass));&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;            StringBuilder sb = XamlUtilities.GetStringRepresentationOfXamlType(xamlType);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; output = sb.ToString();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;            Console.WriteLine(output);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;        }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;    &lt;span class="preproc"&gt;#region&lt;/span&gt; SampleClass &lt;span class="kwrd"&gt;class&lt;/span&gt; definition&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;    [ContentProperty(&lt;span class="str"&gt;&amp;quot;Bar&amp;quot;&lt;/span&gt;)]&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; SampleClass&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;    {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;        [TypeConverter(&lt;span class="kwrd"&gt;typeof&lt;/span&gt;(BarConverter))]&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; Bar { get; set; }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; Foo { get; set; }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; Baz { get; set; }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; _integers;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; Integers&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;        {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;            get&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;            {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (_integers == &lt;span class="kwrd"&gt;null&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  41:  &lt;/span&gt;                {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  42:  &lt;/span&gt;                    _integers = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;();&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  43:  &lt;/span&gt;                }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  44:  &lt;/span&gt;                &lt;span class="kwrd"&gt;return&lt;/span&gt; _integers;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  45:  &lt;/span&gt;            }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  46:  &lt;/span&gt;        }    &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  47:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  48:  &lt;/span&gt;    &lt;span class="preproc"&gt;#endregion&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  49:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  50:  &lt;/span&gt;    &lt;span class="preproc"&gt;#region&lt;/span&gt; TypeConverters&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  51:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; BarConverter : TypeConverter&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  52:  &lt;/span&gt;    {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  53:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  54:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  55:  &lt;/span&gt;    &lt;span class="preproc"&gt;#endregion&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  56:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  57:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; XamlUtilities&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  58:  &lt;/span&gt;    {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  59:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; StringBuilder GetStringRepresentationOfXamlType(XamlType xamlType)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  60:  &lt;/span&gt;        {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  61:  &lt;/span&gt;            StringBuilder sb = &lt;span class="kwrd"&gt;new&lt;/span&gt; StringBuilder();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  62:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  63:  &lt;/span&gt;            sb.AppendLine(xamlType.Name);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  64:  &lt;/span&gt;            XamlMember contentProperty = xamlType.ContentProperty;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  65:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  66:  &lt;/span&gt;            &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (var xamlMember &lt;span class="kwrd"&gt;in&lt;/span&gt; xamlType.GetAllMembers())&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  67:  &lt;/span&gt;            {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  68:  &lt;/span&gt;                sb.AppendFormat(&lt;span class="str"&gt;&amp;quot;  {0} {1} {2}\n&amp;quot;&lt;/span&gt;,&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  69:  &lt;/span&gt;                    xamlMember.Type.IsGeneric ? XamlUtilities.GetGenericName(xamlMember.Type) : xamlMember.Type.Name,&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  70:  &lt;/span&gt;                    xamlMember.Name,&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  71:  &lt;/span&gt;                    xamlMember.IsReadOnly ?&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  72:  &lt;/span&gt;                        &lt;span class="str"&gt;&amp;quot; { get; } &amp;quot;&lt;/span&gt; : &lt;span class="str"&gt;&amp;quot; { get; set; }&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  73:  &lt;/span&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (xamlMember.TypeConverter != xamlMember.Type.TypeConverter)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  74:  &lt;/span&gt;                {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  75:  &lt;/span&gt;                    sb.AppendLine(&lt;span class="str"&gt;&amp;quot;    ** Converter is &amp;quot;&lt;/span&gt; + xamlMember.TypeConverter.Name);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  76:  &lt;/span&gt;                }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  77:  &lt;/span&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (xamlMember == contentProperty)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  78:  &lt;/span&gt;                {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  79:  &lt;/span&gt;                    sb.AppendLine(&lt;span class="str"&gt;&amp;quot;    ** This is the ContentProperty&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  80:  &lt;/span&gt;                }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  81:  &lt;/span&gt;            }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  82:  &lt;/span&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; sb;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  83:  &lt;/span&gt;        }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  84:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  85:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; GetGenericName(XamlType xamlType)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  86:  &lt;/span&gt;        {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  87:  &lt;/span&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; typeName = xamlType.Name;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  88:  &lt;/span&gt;            typeName += &lt;span class="str"&gt;&amp;quot;&amp;lt;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  89:  &lt;/span&gt;            &lt;span class="kwrd"&gt;int&lt;/span&gt; typeArgCount = 0;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  90:  &lt;/span&gt;            &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (var typeArg &lt;span class="kwrd"&gt;in&lt;/span&gt; xamlType.TypeArguments)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  91:  &lt;/span&gt;            {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  92:  &lt;/span&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (typeArgCount &amp;gt; 0)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  93:  &lt;/span&gt;                {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  94:  &lt;/span&gt;                    typeName += &lt;span class="str"&gt;&amp;quot;,&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  95:  &lt;/span&gt;                }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  96:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  97:  &lt;/span&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (typeArg.IsGeneric)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  98:  &lt;/span&gt;                {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  99:  &lt;/span&gt;                    typeName += GetGenericName(typeArg);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 100:  &lt;/span&gt;                }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 101:  &lt;/span&gt;                &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 102:  &lt;/span&gt;                {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 103:  &lt;/span&gt;                    typeName += typeArg.Name;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 104:  &lt;/span&gt;                }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 105:  &lt;/span&gt;            }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 106:  &lt;/span&gt;            typeName += &lt;span class="str"&gt;&amp;quot;&amp;gt;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 107:  &lt;/span&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; typeName;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 108:  &lt;/span&gt;        }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 109:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 110:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;This outputs the following to the command line:&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;SampleClass&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;  Boolean Bar  { get; set; }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    ** Converter &lt;span class="kwrd"&gt;is&lt;/span&gt; BarConverter&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    ** This &lt;span class="kwrd"&gt;is&lt;/span&gt; the ContentProperty&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;  Int32 Foo  { get; set; }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;  String Baz  { get; set; }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;  List&amp;lt;Int32&amp;gt; Integers  { get; }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;Press any key to &lt;span class="kwrd"&gt;continue&lt;/span&gt; . . .&lt;/pre&gt;
&lt;/div&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, &amp;quot;Courier New&amp;quot;, courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }

&lt;h3&gt;Would love to understand your questions/issues&lt;/h3&gt;
Please let us know what you think…&lt;img src="http://blogs.windowsclient.net/aggbug.aspx?PostID=306788" width="1" height="1"&gt;</description><category domain="http://blogs.windowsclient.net/rob_relyea/archive/tags/System.Xaml/default.aspx">System.Xaml</category><category domain="http://blogs.windowsclient.net/rob_relyea/archive/tags/XamlSchema/default.aspx">XamlSchema</category></item><item><title>Craig Sutherland: Considering XAML for Config for CruiseControl.NET</title><link>http://blogs.windowsclient.net/rob_relyea/archive/2010/02/12/craig-sutherland-considering-xaml-for-config-for-cruisecontrol-net.aspx</link><pubDate>Fri, 12 Feb 2010 09:02:41 GMT</pubDate><guid isPermaLink="false">f1c07d22-4184-4df1-9c40-8dd04b52e796:305903</guid><dc:creator>Rob_Relyea</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.windowsclient.net/rob_relyea/rsscomments.aspx?PostID=305903</wfw:commentRss><comments>http://blogs.windowsclient.net/rob_relyea/archive/2010/02/12/craig-sutherland-considering-xaml-for-config-for-cruisecontrol-net.aspx#comments</comments><description>&lt;p&gt;Interesting to see “&lt;a href="http://csut017.wordpress.com/2010/02/12/from-netreflector-to-xaml/"&gt;From NetReflector to XAML&lt;/a&gt;” from Craig Sutherland detailing an exploration of using XAML for Config for CruiseControl.NET.&lt;/p&gt;  &lt;h3&gt;WPF’s XamlReader.Load vs System.Xaml’s XamlServices.Load()&lt;/h3&gt;  &lt;p&gt;CS: “although from what I understand WPF will still have its own implementation”&lt;/p&gt;  &lt;p&gt;RR: WPF 4’s API XamlReader.Load’s goal is to be compatible, yet better, than the WPF 3 version of XamlReader.Load. This call does some special things for WPF (see Mike Shim’s “&lt;a href="http://michaelshim.com/blog/2009/12/10/use-xamlreader-load-for-wpf-xaml-not-xamlservices-load/"&gt;Use XamlReader.Load for WPF XAML (not XamlServices.Load)&lt;/a&gt;” for details. For Config scenarios, XamlServices.Load/Save would be ideal…that is what I do wth &lt;a href="http://robrelyea.com/demos/xamlpadsample"&gt;XamlPadSample&lt;/a&gt; as detailed in “&lt;a href="http://blogs.windowsclient.net/rob_relyea/archive/2010/01/16/persistable-view-models-amp-xaml-for-config.aspx"&gt;Persistable View Models &amp;amp; XAML for Config&lt;/a&gt;”&lt;/p&gt;  &lt;h3&gt;Representing Time&lt;/h3&gt;  &lt;p&gt;Craig shows the use of a markupextension for Time: {Time 5} or {Time 30, Unit=Minutes}, etc…&lt;/p&gt;  &lt;p&gt;A few options to consider (for Interval.Period, SubVersion.Timeout, Project.ModificationDelay, etc…) would be:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Keep using the {Time} markupextension. Decent readability…&lt;/li&gt;    &lt;li&gt;Make those properties of type TimeSpan, which has a type converter that will convert to/from a string – see DoubleAnimation.Duration, for example:&lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;lt;DoubleAnimation Storyboard.TargetName=&amp;quot;MyAnimatedRectangle&amp;quot; Storyboard.TargetProperty=&amp;quot;Opacity&amp;quot; From=&amp;quot;1.0&amp;quot; To=&amp;quot;0.0&amp;quot; Duration=&amp;quot;0:0:5&amp;quot; AutoReverse=&amp;quot;True&amp;quot; RepeatBehavior=&amp;quot;Forever&amp;quot; /&amp;gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;Keep those property of type Int32, but use a “A Type Converter Declared on a Property” (see “&lt;a href="http://blogs.windowsclient.net/rob_relyea/archive/2008/04/10/strings-to-things-or-how-xaml-interprets-attribute-values.aspx"&gt;Strings to Things (or How XAML interprets Attribute Values&lt;/a&gt;”) to introduce a TypeConverter than knows how to convert a string representing a time to integers. Similar approach allows UIElement.Height/.Width use “1in”, “96px”, etc…&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://blogs.windowsclient.net/aggbug.aspx?PostID=305903" width="1" height="1"&gt;</description><category domain="http://blogs.windowsclient.net/rob_relyea/archive/tags/XAML+for+Config/default.aspx">XAML for Config</category></item><item><title>Robby Continuing to Drive KaXaml Forward in v4 Era</title><link>http://blogs.windowsclient.net/rob_relyea/archive/2010/02/07/robby-continuing-to-drive-kaxaml-forward-in-v4-era.aspx</link><pubDate>Sun, 07 Feb 2010 13:36:23 GMT</pubDate><guid isPermaLink="false">f1c07d22-4184-4df1-9c40-8dd04b52e796:305029</guid><dc:creator>Rob_Relyea</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.windowsclient.net/rob_relyea/rsscomments.aspx?PostID=305029</wfw:commentRss><comments>http://blogs.windowsclient.net/rob_relyea/archive/2010/02/07/robby-continuing-to-drive-kaxaml-forward-in-v4-era.aspx#comments</comments><description>&lt;p&gt;Robby Ingebretsen, &lt;a href="http://nerdplusart.com/"&gt;nerd + artist extraordinaire&lt;/a&gt;, just blogged a bit about his plans for taking &lt;a href="http://kaxaml.com"&gt;Kaxaml&lt;/a&gt; forward in the WPF 4 and Silverlight 4 era: “&lt;a href="http://blog.nerdplusart.com/archives/kaxaml-update-downloads-a-request"&gt;Kaxaml Update + Downloads + A Request&lt;/a&gt;”&lt;/p&gt;  &lt;p&gt;He and I had a good chat last week over his plans and some of the ways that .NET 4 can help XAML focused tools for .NET or Silverlight better.&lt;/p&gt;  &lt;p&gt;Should be very fun!&lt;/p&gt;&lt;img src="http://blogs.windowsclient.net/aggbug.aspx?PostID=305029" width="1" height="1"&gt;</description><category domain="http://blogs.windowsclient.net/rob_relyea/archive/tags/WPF+Tools/default.aspx">WPF Tools</category><category domain="http://blogs.windowsclient.net/rob_relyea/archive/tags/XAML+Tools/default.aspx">XAML Tools</category><category domain="http://blogs.windowsclient.net/rob_relyea/archive/tags/Silverlight+Tools/default.aspx">Silverlight Tools</category></item><item><title>Don Box – feelings for XML</title><link>http://blogs.windowsclient.net/rob_relyea/archive/2010/02/05/don-box-feelings-for-xml.aspx</link><pubDate>Fri, 05 Feb 2010 16:22:08 GMT</pubDate><guid isPermaLink="false">f1c07d22-4184-4df1-9c40-8dd04b52e796:304698</guid><dc:creator>Rob_Relyea</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.windowsclient.net/rob_relyea/rsscomments.aspx?PostID=304698</wfw:commentRss><comments>http://blogs.windowsclient.net/rob_relyea/archive/2010/02/05/don-box-feelings-for-xml.aspx#comments</comments><description>&lt;p&gt;I always enjoy understanding Don’s perspectives. This InfoQ interview is interesting as always. Touches on SOAP, XML, XML Schema, M, etc…&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;InfoQ: &lt;a href="http://www.infoq.com/interviews/box-soap-xml-rest-m;jsessionid=10E8C14066D85F05CD4BCB2DB365D9D9"&gt;Don Box Discusses SOAP, XML, REST and M&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Is XML as bad as Don is saying to you?&lt;/p&gt;  &lt;p&gt;We can explore other ways to write down the XAML data model (O-M-V + TypeInfo)… John Gossman prototyped JAML (John’s Application Markup Language) the other week with .NET 4’s XAML stack. &lt;/p&gt;  &lt;p&gt;if XML isn’t the right thing, we are not stuck with XML…&lt;/p&gt;&lt;img src="http://blogs.windowsclient.net/aggbug.aspx?PostID=304698" width="1" height="1"&gt;</description><category domain="http://blogs.windowsclient.net/rob_relyea/archive/tags/Xaml/default.aspx">Xaml</category><category domain="http://blogs.windowsclient.net/rob_relyea/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://blogs.windowsclient.net/rob_relyea/archive/tags/Miscellaneous/default.aspx">Miscellaneous</category></item><item><title>TypeConverters with en-US machines with customized cultures</title><link>http://blogs.windowsclient.net/rob_relyea/archive/2010/02/03/typeconverters-with-en-us-machines-with-customized-cultures.aspx</link><pubDate>Wed, 03 Feb 2010 16:17:59 GMT</pubDate><guid isPermaLink="false">f1c07d22-4184-4df1-9c40-8dd04b52e796:304300</guid><dc:creator>Rob_Relyea</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.windowsclient.net/rob_relyea/rsscomments.aspx?PostID=304300</wfw:commentRss><comments>http://blogs.windowsclient.net/rob_relyea/archive/2010/02/03/typeconverters-with-en-us-machines-with-customized-cultures.aspx#comments</comments><description>&lt;p&gt;XAML has a major problem in v3 that we’ve addressed with a &lt;a href="http://support.microsoft.com/kb/968227%20"&gt;hotfix&lt;/a&gt; last year and .NET 4 includes the fix as well.&lt;/p&gt;  &lt;p&gt;From &lt;a href="http://support.microsoft.com/kb/968227"&gt;KB 968227&lt;/a&gt; article:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Consider the following scenario: &lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;You have a computer that uses the English (United States) regional settings. &lt;/li&gt;      &lt;li&gt;In the &lt;strong&gt;Regional and Language Options&lt;/strong&gt; item in Control Panel, you customize the &lt;strong&gt;List separator&lt;/strong&gt; character in &lt;strong&gt;Customize Regional Options&lt;/strong&gt; dialog box . &lt;/li&gt;      &lt;li&gt;You create a Windows Presentation Foundation (WPF) application. &lt;/li&gt;      &lt;li&gt;The application creates a &lt;b&gt;CultureInfo&lt;/b&gt; object for the English (United States) culture before WPF starts rendering. &lt;/li&gt;   &lt;/ul&gt;    &lt;p&gt;When you start the application, an exception is thrown by the Extensible Application Markup Language (XAML) parser, and then the application crashes.&lt;/p&gt;    &lt;p&gt;…&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://blogs.windowsclient.net/aggbug.aspx?PostID=304300" width="1" height="1"&gt;</description><category domain="http://blogs.windowsclient.net/rob_relyea/archive/tags/Xaml/default.aspx">Xaml</category></item><item><title>XamlDesigner – View Only/View or XAML/SplitView/XAML with Preview/XAML Only</title><link>http://blogs.windowsclient.net/rob_relyea/archive/2010/01/30/xamldesigner-view-only-view-or-xaml-splitview-xaml-with-preview-xaml-only.aspx</link><pubDate>Sat, 30 Jan 2010 22:33:43 GMT</pubDate><guid isPermaLink="false">f1c07d22-4184-4df1-9c40-8dd04b52e796:303701</guid><dc:creator>Rob_Relyea</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.windowsclient.net/rob_relyea/rsscomments.aspx?PostID=303701</wfw:commentRss><comments>http://blogs.windowsclient.net/rob_relyea/archive/2010/01/30/xamldesigner-view-only-view-or-xaml-splitview-xaml-with-preview-xaml-only.aspx#comments</comments><description>&lt;p&gt;Pausing to think about next steps after making strong progress in the “&lt;a href="http://blogs.windowsclient.net/rob_relyea/archive/2010/01/19/exploring-xamlpad-to-xamldesigner.aspx"&gt;Exploring: XamlPad to XamlDesigner&lt;/a&gt;” journey in the last 10 days. 3 major things from that Exploring post that haven’t been tackled in &lt;a href="http://robrelyea.com/demos/xamlpadsample"&gt;XamlPadSample&lt;/a&gt; include: Silverlight support, Designer support, and Editor richness.&lt;/p&gt;  &lt;p&gt;I’m going to explore Designer support options with this post.&lt;/p&gt;  &lt;p&gt;I had originally sketched out this area as:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;b&gt;XAML Step: PropertyGrid, Selection Model, SourcePreservation&lt;/b&gt;&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;Simple Property Grid &lt;/li&gt;      &lt;li&gt;Selection model enabling selection in View surface or Xaml editor, and synchronized editor. &lt;/li&gt;      &lt;li&gt;Source preservation of XAML with XamlDom based store&lt;/li&gt;   &lt;/ul&gt; &lt;/blockquote&gt;  &lt;p&gt;But now I’m realizing there may be a few different directions that people may want. This may be because different domains (UI, Workflow, etc…) or different users types (UI Developers, UI Designers, WorkFlow modelers, etc…).&lt;/p&gt;  &lt;h3&gt;Approaches to XamlDesign Surfaces&lt;/h3&gt;  &lt;h4&gt;View only – never show XAML&lt;/h4&gt;  &lt;p&gt;A customer recently asked an associate of mine for a WPF hostable designer with a View Only Design surface. This would require a toolbox, interactions to add, move and remove controls, and ability to change values (either with a property grid or “on object” manipulations). Source code preservation may or may not be important in this scenario. Should XML comments be preserved? How about white space?&lt;/p&gt;  &lt;h4&gt;View or XAML – but never both at the same time&lt;/h4&gt;  &lt;p&gt;In VS2010 &amp;amp; .NET 4, Windows Workflow Foundation (WF) provides this View or XAML design experience.&lt;/p&gt;  &lt;h4&gt;View and/or XAML - splitview with interactive view&lt;/h4&gt;  &lt;p&gt;VS (via “Cider”) and Blend both offer a fully functional split view, with an interactive design canvas + property grid, and an editable XAML pane.&lt;/p&gt;  &lt;h4&gt;XAML with Preview&lt;/h4&gt;  &lt;p&gt;XamlPads offer a View which is a preview mode, and an editable XAML pane.&lt;/p&gt;  &lt;h4&gt;XAML Only&lt;/h4&gt;  &lt;p&gt;This sounds like notepad. :-) (but maybe you could have notepad with intellisense)&lt;/p&gt;  &lt;h3&gt;What is your ideal? For UI, workflow, data, other?&lt;/h3&gt;  &lt;p&gt;Would love to hear thoughts on these various approaches.&amp;#160; &lt;/p&gt;  &lt;p&gt;For UI, is splitview the preferred model for devs and designers? Or does the XamlPad approach (XAML with Preview) have merit?&lt;/p&gt;  &lt;p&gt;For Workflow, are people happy with View or XAML, but never both at the same time?&lt;/p&gt;  &lt;p&gt;Any thoughts or feedback in this space?&lt;/p&gt;&lt;img src="http://blogs.windowsclient.net/aggbug.aspx?PostID=303701" width="1" height="1"&gt;</description><category domain="http://blogs.windowsclient.net/rob_relyea/archive/tags/WPF+Tools/default.aspx">WPF Tools</category><category domain="http://blogs.windowsclient.net/rob_relyea/archive/tags/XAML+Tools/default.aspx">XAML Tools</category></item><item><title>XamlPadSample Step 1f-alternateViews, app.xaml &amp; assembly loading</title><link>http://blogs.windowsclient.net/rob_relyea/archive/2010/01/30/xamlpadsample-step-1f-alternateviews-app-xaml-amp-assembly-loading.aspx</link><pubDate>Sat, 30 Jan 2010 10:40:19 GMT</pubDate><guid isPermaLink="false">f1c07d22-4184-4df1-9c40-8dd04b52e796:303653</guid><dc:creator>Rob_Relyea</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.windowsclient.net/rob_relyea/rsscomments.aspx?PostID=303653</wfw:commentRss><comments>http://blogs.windowsclient.net/rob_relyea/archive/2010/01/30/xamlpadsample-step-1f-alternateviews-app-xaml-amp-assembly-loading.aspx#comments</comments><description>&lt;p&gt;3 major features added to &lt;a href="http://robrelyea.com/demos/xamlpadsample"&gt;XamlPadSample&lt;/a&gt; today! Including Alternate Views, which has not been done in any XamlPad or XamlDesigner that I’m aware of. (link to previous posts/overview &amp;amp; sample code available via &lt;a href="http://robrelyea.com/demos/xamlpadsample"&gt;XamlPadSample&lt;/a&gt;)&lt;/p&gt;  &lt;h3&gt;App.xaml Support for {StaticResource}&lt;/h3&gt;  &lt;p&gt;View pane now shows result of {StaticResource} or {DynamicResource} resolution of resources from app.xaml. Shown loading Welcome.xaml from Family.Show v3.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.windowsclient.net/blogs/rob_relyea/image_39377E00.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://blogs.windowsclient.net/blogs/rob_relyea/image_thumb_1124CEE1.png" width="483" height="320" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Assembly Loading&lt;/h3&gt;  &lt;p&gt;XAML files which include uses of classes from local: or other custom types in project class libraries now load. Shown loading PersonInfo.xaml from Family.Show v3. (note, XamlPadSample doesn’t ever call build on your project/solution.)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.windowsclient.net/blogs/rob_relyea/image_70315C39.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://blogs.windowsclient.net/blogs/rob_relyea/image_thumb_0CEAD14F.png" width="608" height="441" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Alternate Views&lt;/h3&gt;  &lt;p&gt;The AlternateViews feature enables you to put something more useful in the “white blank pane” of a non-UI rooted XAML file.&lt;/p&gt;  &lt;p&gt;Below you can see a crude UI representation of BlackResources (from Family.Show v3) showing many brushes, DataTemplates, Styles that were defined in a ResourceDictionary.&lt;/p&gt;  &lt;p&gt;The sample also contains a simple visual representation for App.xaml and XamlPadConfig.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.windowsclient.net/blogs/rob_relyea/image_19E4B160.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://blogs.windowsclient.net/blogs/rob_relyea/image_thumb_5E44A29F.png" width="1357" height="957" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Detailed notes from Backlog.txt in sample code:&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;---------------------------------------------      &lt;br /&gt;2010/01/30 - posted v1f - Alternate View, app.xaml, and assembly loading       &lt;br /&gt;---------------------------------------------       &lt;br /&gt;Implemented: {StaticResource foo} will now resolve to resources in the current page or in the ApplicationDefinition xaml file (matched Blend/Cider feature)       &lt;br /&gt;Implemented: Assemblies from a project will now be loaded (matches Blend/Cider/XamlCruncher feature)       &lt;br /&gt;Implemented: Provided the start of a mechanism to provide alternate views for non-visual root elements. Lots of potential here... &lt;/p&gt;    &lt;p&gt;XamlPadHelpers project      &lt;br /&gt;•ResourceProxy.cs (NEW)       &lt;br /&gt;◦Added ResourceProxy, a ContentControl - to hold a pointer to the App.Resources for a project. We inject this element during the parse as the real root of the tree we are building.       &lt;br /&gt;&amp;#160; This enables {StaticResources } that we parse to find resources delared in App.xaml or in a merged dictionary as well.       &lt;br /&gt;•AssemblyData.cs       &lt;br /&gt;◦In v1e, I had plumbed this class to find the right assembly. Now there is a Load() method a property of type Assembly to store the loaded assembly.       &lt;br /&gt;•ProjectData.cs       &lt;br /&gt;◦Added a ContentProperty for &amp;lt;ProjectData&amp;gt; - the AssemblyReferences property. Doesn&amp;#39;t change the functionality of Pad.config.xaml, just the conciseness.       &lt;br /&gt;◦Added an ApplicationResources property which will load the corresponding app.xaml and grab the .Resources property from it.       &lt;br /&gt;•View.cs (NEW)       &lt;br /&gt;◦New class to track a Type-&amp;gt;TemplateUri mapping. This is effectively a Dictionary, but notice the [DictionaryKeyProperty(&amp;quot;Type&amp;quot;)] on the class, which enables avoiding x:Key in the XAML.       &lt;br /&gt;&amp;#160; This is the same (now v4 public feature) that Style, ControlTemplate, and DataTemplate use to avoid needing a x:Key by default.       &lt;br /&gt;•XamlEngine.cs       &lt;br /&gt;◦LoadObjectsForDesign now has an appResources property, and will inject a new ResourceProxy(appResources) as the root object in the tree if appResources is not null.       &lt;br /&gt;◦new LoadXamlDocument routine that will use CreateReader() and LoadObjectsForDesign()       &lt;br /&gt;◦new LoadXamlDocumentWIthAppResources routine that will use CreateReader() and LoadObjectsForDesign(), and it will pass in appResources into LoadObjectsForDesign if we know       &lt;br /&gt;&amp;#160; of the app.xaml       &lt;br /&gt;•XamlPad.xaml.cs       &lt;br /&gt;◦XamlText_TextChanged() enhanced to attempt to load each assembly of a project before parse.       &lt;br /&gt;◦XamlText_TextChanged() enhanced to wire in alternate Views (via XamlPadConfig.Views mappings) for any non-UI root objects displayed in XamlPad.       &lt;br /&gt;&amp;#160; TODO: wouldn&amp;#39;t mine cleaning up this code...I think I changed error experience badly...       &lt;br /&gt;•XamlPadConfig.cs       &lt;br /&gt;◦Added the Views property for the alternate views feature.       &lt;br /&gt;•XamlPadHelpers.datatemplates.xaml (NEW)       &lt;br /&gt;◦Added several DataTemplates that provide basic visual representations for object graphs that have the following roots: Application, ResourceDictionary, XamlPadConfig &lt;/p&gt;    &lt;p&gt;Pad project      &lt;br /&gt;•MainWindow.xaml.cs       &lt;br /&gt;◦Added 3 default Views to plug into the default Pad.config.xaml (for AlternateViews feature)&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://blogs.windowsclient.net/aggbug.aspx?PostID=303653" width="1" height="1"&gt;</description></item></channel></rss>