<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type='text/xsl' href='http://rrelyea.spaces.live.com/mmm2008-05-17_13.22/rsspretty.aspx?rssquery=en-US;http%3a%2f%2frrelyea.spaces.live.com%2fcategory%2fXAML%2ffeed.rss' version='1.0'?><rss version="2.0" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:msn="http://schemas.microsoft.com/msn/spaces/2005/rss" xmlns:live="http://schemas.microsoft.com/live/spaces/2006/rss" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:cf="http://www.microsoft.com/schemas/rss/core/2005" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Rob Relyea: XAML</title><description /><link>http://rrelyea.spaces.live.com/?_c11_BlogPart_BlogPart=blogview&amp;_c=BlogPart&amp;partqs=catXAML</link><language>en-US</language><pubDate>Sat, 19 Jul 2008 21:49:28 GMT</pubDate><lastBuildDate>Sat, 19 Jul 2008 21:49:28 GMT</lastBuildDate><generator>Microsoft Spaces v1.1</generator><docs>http://www.rssboard.org/rss-specification</docs><ttl>60</ttl><cf:parentRSS>http://rrelyea.spaces.live.com/blog/feed.rss</cf:parentRSS><live:type>blogcategory</live:type><live:identity><live:id>1619844122537416190</live:id><live:alias>rrelyea</live:alias></live:identity><cf:listinfo><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="typelabel" label="Type" /><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="tag" label="Tag" /><cf:group element="category" label="Category" /><cf:sort element="pubDate" label="Date" data-type="date" default="true" /><cf:sort element="title" label="Title" data-type="string" /><cf:sort ns="http://purl.org/rss/1.0/modules/slash/" element="comments" label="Comments" data-type="number" /></cf:listinfo><item><title>Is Xaml human readable...</title><link>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2614.entry</link><description>&lt;p&gt;Scott Koon thinks not:  &lt;a title="http://scottkoon.org/2008/02/08/i-still-hate-xaml-though-quo/" href="http://scottkoon.org/2008/02/08/i-still-hate-xaml-though-quo/"&gt;http://scottkoon.org/2008/02/08/i-still-hate-xaml-though-quo/&lt;/a&gt; &lt;p&gt;Remember, my November 2004 blog post &amp;quot;&lt;a href="http://www.windows-now.com/blogs/rrelyea/archive/2004/11/29/7838.aspx"&gt;Our 7 Goals for Xaml&lt;/a&gt;&amp;quot; - human readability was one of the goals...not the only goal.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=1619844122537416190&amp;page=RSS%3a+Is+Xaml+human+readable...&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=rrelyea.spaces.live.com&amp;amp;GT1=rrelyea"&gt;</description><comments>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2614.entry#comment</comments><guid isPermaLink="true">http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2614.entry</guid><pubDate>Fri, 08 Feb 2008 11:02:05 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!2614/comments/feed.rss</wfw:commentRss><wfw:comment>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2614.entry#comment</wfw:comment><dcterms:modified>2008-02-08T11:02:05Z</dcterms:modified></item><item><title>Concise FlowDocument representation in Xml (with converter)</title><link>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2613.entry</link><description>&lt;p&gt;Interesting seeing an xml format with property elements like &amp;quot;&amp;lt;body.head&amp;gt;&amp;quot; and &amp;quot;&amp;lt;body.content&amp;gt;&amp;quot;... &lt;p&gt;Here is an example of the xml format that looks like it tries to be an html like representation of a document that is convertable to a flowdocument (from &lt;a href="http://nyinyithann.spaces.live.com/blog/cns!FD3332CDD86DA8FA!256.entry"&gt;XML to FlowDocument Converter&lt;/a&gt;) &lt;p&gt;&amp;lt;block class=&amp;quot;text&amp;quot;&amp;gt; &lt;blockquote&gt; &lt;p&gt;&amp;lt;p fontfamily=&amp;quot;georgia&amp;quot; fontcolor=&amp;quot;black&amp;quot; fontsize=&amp;quot;12&amp;quot; fontstyle=&amp;quot;normal&amp;quot; fontweight=&amp;quot;normal&amp;quot;&amp;gt;The decision – which also applies to cargo services – is significant, said industry watchers yesterday.&amp;lt;/p&lt;br&gt;&amp;lt;p fontfamily=&amp;quot;georgia&amp;quot; fontcolor=&amp;quot;black&amp;quot; fontsize=&amp;quot;12&amp;quot; fontstyle=&amp;quot;normal&amp;quot; fontweight=&amp;quot;normal&amp;quot;&amp;gt;Although the December 2008 date had been set four years ago, there was no certainty that all members of the 10-nation grouping would agree to free up air travel by then, they said.&amp;lt;/p&amp;gt;&lt;br&gt;&amp;lt;p&amp;gt;Mr Anthony Concil, a spokes man for the International Air Transport Association, a 240-member airline grouping told The Straits Times last night “Clearly, this is a big and con crete step in the right direc tion...What we are seeing is tha Asean has picked up the bal and is moving forward.”&amp;lt;/p&amp;gt;&lt;/blockquote&gt; &lt;p&gt;[update: turns out that format is NITF, which I've never looked at, I believe...which the &lt;a href="http://windowsclient.net/wpf/starter-kits/sce.aspx"&gt;Syndicated Client Experiences Starter Kit&lt;/a&gt; uses...funny that they seems to have used a Period in a tagname before Xaml did.  Back in 2004 I listed &lt;a href="http://www.windows-now.com/blogs/rrelyea/archive/2004/02/06/2374.aspx"&gt;some options we were considering&lt;/a&gt; for the syntax of Property Elements]&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=1619844122537416190&amp;page=RSS%3a+Concise+FlowDocument+representation+in+Xml+(with+converter)&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=rrelyea.spaces.live.com&amp;amp;GT1=rrelyea"&gt;</description><comments>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2613.entry#comment</comments><guid isPermaLink="true">http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2613.entry</guid><pubDate>Fri, 08 Feb 2008 10:59:06 GMT</pubDate><slash:comments>2</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!2613/comments/feed.rss</wfw:commentRss><wfw:comment>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2613.entry#comment</wfw:comment><dcterms:modified>2008-02-08T13:01:38Z</dcterms:modified></item><item><title>Kent Boogaart: Functional and Aesthetic Xaml</title><link>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2591.entry</link><description>&lt;p&gt;Ran into a comment by Kent on &lt;a href="http://work.j832.com/2008/02/xaml-serialization-with-wcf.html"&gt;Kevin's post about WCF serialization with Xaml&lt;/a&gt; where he pointed toward this &lt;a href="http://kentb.blogspot.com/2008/01/xaml.html"&gt;&amp;quot;Xaml&amp;quot; post&lt;/a&gt; where he discusses Xaml verbosity and separation of concerns into &lt;em&gt;Functional&lt;/em&gt; and &lt;em&gt;Aesthetic&lt;/em&gt; Xaml.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=1619844122537416190&amp;page=RSS%3a+Kent+Boogaart%3a+Functional+and+Aesthetic+Xaml&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=rrelyea.spaces.live.com&amp;amp;GT1=rrelyea"&gt;</description><comments>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2591.entry#comment</comments><guid isPermaLink="true">http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2591.entry</guid><pubDate>Thu, 07 Feb 2008 10:37:04 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!2591/comments/feed.rss</wfw:commentRss><wfw:comment>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2591.entry#comment</wfw:comment><dcterms:modified>2008-02-07T10:37:04Z</dcterms:modified></item><item><title>The New Iteration...xaml whitepaper</title><link>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2566.entry</link><description>&lt;p&gt;&lt;a href="http://rhizohm.net/irhetoric/"&gt;Karsten&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/jaimer"&gt;Jaime&lt;/a&gt; have published a great whitepaper that looks at how Xaml transforms the collaboration between designers and developers in WPF: &lt;a href="http://windowsclient.net/wpf/white-papers/thenewiteration.aspx"&gt;The New Iteration&lt;/a&gt; &lt;p&gt;&lt;img src="http://windowsclient.net/wpf/white-papers/images/cover.jpg"&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=1619844122537416190&amp;page=RSS%3a+The+New+Iteration...xaml+whitepaper&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=rrelyea.spaces.live.com&amp;amp;GT1=rrelyea"&gt;</description><comments>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2566.entry#comment</comments><guid isPermaLink="true">http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2566.entry</guid><pubDate>Sat, 19 Jan 2008 03:47:30 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!2566/comments/feed.rss</wfw:commentRss><wfw:comment>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2566.entry#comment</wfw:comment><dcterms:modified>2008-01-19T03:47:30Z</dcterms:modified></item><item><title>The Blomsma Code - question on Xaml Validation @ compile time</title><link>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2555.entry</link><description>&lt;p&gt;Good question from The Blomsma Code, with an answer from WPF Designer PM Mark Wilson-Thomas.  I chime in with a comment as well.. &lt;blockquote&gt; &lt;p&gt;&lt;a href="http://www.develop-one.net/blog/2008/01/11/XAMLValidationDesignVsRuntimeError.aspx"&gt;XAML validation - design vs. runtime error&lt;/a&gt;&lt;/blockquote&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=1619844122537416190&amp;page=RSS%3a+The+Blomsma+Code+-+question+on+Xaml+Validation+%40+compile+time&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=rrelyea.spaces.live.com&amp;amp;GT1=rrelyea"&gt;</description><comments>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2555.entry#comment</comments><guid isPermaLink="true">http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2555.entry</guid><pubDate>Sat, 12 Jan 2008 10:45:30 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!2555/comments/feed.rss</wfw:commentRss><wfw:comment>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2555.entry#comment</wfw:comment><dcterms:modified>2008-01-12T10:45:30Z</dcterms:modified></item><item><title>Xaml doesn't have to be XML</title><link>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2533.entry</link><description>&lt;p&gt;Check out &lt;a href="http://handyxaml.wordpress.com/2007/12/10/intro/"&gt;Handy Xaml's intro&lt;/a&gt;.  One thing you'll see is an alternative Xaml textual format (no brackets, no quotes...).  Cool!  Lots of possibilities here... &lt;p&gt;Fundamentally, Xaml doesn't need to be tied to XML...XML is just one possible representation of the Xaml data model.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=1619844122537416190&amp;page=RSS%3a+Xaml+doesn't+have+to+be+XML&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=rrelyea.spaces.live.com&amp;amp;GT1=rrelyea"&gt;</description><comments>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2533.entry#comment</comments><guid isPermaLink="true">http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2533.entry</guid><pubDate>Wed, 12 Dec 2007 00:37:42 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!2533/comments/feed.rss</wfw:commentRss><wfw:comment>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2533.entry#comment</wfw:comment><dcterms:modified>2007-12-12T00:39:52Z</dcterms:modified></item><item><title>commonality: on Visual DSLs</title><link>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2526.entry</link><description>&lt;p&gt;Interesting post covering DSLs and some thoughts on Microsoft's direction here, with discussion of Xaml. &lt;blockquote&gt; &lt;p&gt;&lt;a href="http://www.winterdom.com/weblog/2007/12/03/WhatIrksMeAboutVisualDSLs.aspx"&gt;commality: What Irks Me About Visual DSLs&lt;/a&gt;&lt;/blockquote&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=1619844122537416190&amp;page=RSS%3a+commonality%3a+on+Visual+DSLs&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=rrelyea.spaces.live.com&amp;amp;GT1=rrelyea"&gt;</description><comments>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2526.entry#comment</comments><guid isPermaLink="true">http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2526.entry</guid><pubDate>Mon, 03 Dec 2007 21:01:46 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!2526/comments/feed.rss</wfw:commentRss><wfw:comment>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2526.entry#comment</wfw:comment><dcterms:modified>2007-12-03T21:01:46Z</dcterms:modified></item><item><title>Do you use Internal Types in Xaml (if you compile to Baml)?  Why?  Should Silverlight enable?</title><link>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2460.entry</link><description>&lt;p&gt;WPF enables you to refer to Public or Internal types in Xaml.  Internal types only work at runtime if they are loaded from Baml in the same assembly.  We did this support so that people could build Windows/Pages/UserControls that could be part of your public API, while not requiring that all of the elements/objects that you use must be public. &lt;p&gt;2 questions related to this: &lt;ul&gt; &lt;li&gt;if you are using internal types in Xaml, why do you find it useful? &lt;li&gt;how critical do you think it is that Silverlight support a similar feature?  why?&lt;/ul&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=1619844122537416190&amp;page=RSS%3a+Do+you+use+Internal+Types+in+Xaml+(if+you+compile+to+Baml)%3f++Why%3f++Should+Silverlight+enable%3f&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=rrelyea.spaces.live.com&amp;amp;GT1=rrelyea"&gt;</description><comments>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2460.entry#comment</comments><guid isPermaLink="true">http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2460.entry</guid><pubDate>Wed, 17 Oct 2007 09:27:32 GMT</pubDate><slash:comments>4</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!2460/comments/feed.rss</wfw:commentRss><wfw:comment>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2460.entry#comment</wfw:comment><dcterms:modified>2007-10-17T09:27:32Z</dcterms:modified></item><item><title>Daniel Cazzulino: Why XAML makes System.Configuration and Enterprise Library Configuration obsolete</title><link>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2423.entry</link><description>&lt;p&gt;&lt;a title="http://www.clariusconsulting.net/blogs/kzu/archive/2007/09/24/WhyXAMLmakesSystemConfigurationandEnterpriseLibraryConfigurationobsolete.aspx" href="http://www.clariusconsulting.net/blogs/kzu/archive/2007/09/24/WhyXAMLmakesSystemConfigurationandEnterpriseLibraryConfigurationobsolete.aspx"&gt;http://www.clariusconsulting.net/blogs/kzu/archive/2007/09/24/WhyXAMLmakesSystemConfigurationandEnterpriseLibraryConfigurationobsolete.aspx&lt;/a&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=1619844122537416190&amp;page=RSS%3a+Daniel+Cazzulino%3a+Why+XAML+makes+System.Configuration+and+Enterprise+Library+Configuration+obsolete&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=rrelyea.spaces.live.com&amp;amp;GT1=rrelyea"&gt;</description><comments>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2423.entry#comment</comments><guid isPermaLink="true">http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2423.entry</guid><pubDate>Tue, 25 Sep 2007 13:16:02 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!2423/comments/feed.rss</wfw:commentRss><wfw:comment>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2423.entry#comment</wfw:comment><dcterms:modified>2007-09-25T13:16:02Z</dcterms:modified></item><item><title>Xaml doesn't only create .Net objects...</title><link>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2373.entry</link><description>&lt;p&gt;Mike Taulty realizes that &lt;a href="http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2007/09/07/9756.aspx"&gt;Xaml doesn't always create graphs of .Net objects&lt;/a&gt;....  XPS and now Silverlight 1.0 has shown that.  This is how I think about it: Xaml represents data.  That data is often hierarchical in nature.  Systems can map that data into the creation of a graph of objects.  Those objects may be .Net, unmanaged, or other type system objects.  What happens with that &amp;quot;data&amp;quot; is up to the receiver/handler...&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=1619844122537416190&amp;page=RSS%3a+Xaml+doesn't+only+create+.Net+objects...&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=rrelyea.spaces.live.com&amp;amp;GT1=rrelyea"&gt;</description><comments>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2373.entry#comment</comments><guid isPermaLink="true">http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2373.entry</guid><pubDate>Fri, 07 Sep 2007 22:11:36 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!2373/comments/feed.rss</wfw:commentRss><wfw:comment>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2373.entry#comment</wfw:comment><dcterms:modified>2007-09-07T22:11:36Z</dcterms:modified></item><item><title>Obfuscation and Xaml/Baml</title><link>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2286.entry</link><description>&lt;p&gt;Thanks to a forum post &amp;quot;&lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2014716&amp;amp;SiteID=1&amp;amp;mode=1"&gt;Code Protection and Licensing of WPF Applications&lt;/a&gt;&amp;quot;, I write this response: &lt;p&gt;Baml is similar to IL in that it encodes type and member names.  Unfortunately, we haven't documented baml like IL is, so obfuscators can't easily obfuscate WPF applications. &lt;p&gt;I believe the best approach today is to &lt;a href="http://msdn2.microsoft.com/en-us/library/system.reflection.obfuscationattribute_members.aspx"&gt;exclude from obfuscation&lt;/a&gt; any types/members which you define that you need to use in Xaml.  If any type/member names change between creating the assembly (with baml) and runtime, the baml hasn't been updated to refer to the new types. &lt;p&gt;Unfortunately, we don't have the baml format published (as we think we will need to change it) and don't have an adequate API to help obfuscators. &lt;p&gt;We are investing to improve this in the future.  Until then, I'd love to hear: &lt;ol&gt; &lt;li&gt;best practices to deal with this limitation today &lt;li&gt;feedback about how critical it is to improve this &lt;li&gt;any other feedback in this area&lt;/ol&gt; &lt;p&gt;Thanks!&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=1619844122537416190&amp;page=RSS%3a+Obfuscation+and+Xaml%2fBaml&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=rrelyea.spaces.live.com&amp;amp;GT1=rrelyea"&gt;</description><comments>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2286.entry#comment</comments><guid isPermaLink="true">http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2286.entry</guid><pubDate>Thu, 16 Aug 2007 14:24:02 GMT</pubDate><slash:comments>4</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!2286/comments/feed.rss</wfw:commentRss><wfw:comment>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2286.entry#comment</wfw:comment><dcterms:modified>2007-08-16T14:25:25Z</dcterms:modified></item><item><title>NameReferenceExtension - MarkupExtension to do name references</title><link>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2260.entry</link><description>&lt;p&gt;Several people have been asking for the ability to do name references to set a property on one object to another object somewhere in the Xaml document. &lt;p&gt;Forum Posts: &lt;p&gt;1) &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1772475&amp;amp;SiteID=1"&gt;Sample of MarkupExtension taking in a FrameworkElement?&lt;/a&gt; &lt;p&gt;2) &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1895289&amp;amp;SiteID=1"&gt;Create a markup extension: How to get an element by name and other problems...&lt;/a&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;Challenge&lt;/u&gt;&lt;/strong&gt; &lt;p&gt;We plan to enable this in the XamlLanguage natively in the future...until then there are ways to make it work in .Net 3.0/3.5 with our XamlReader. &lt;p&gt;I built two generic CLR objects: Root and Node that I wanted to use like this: &lt;p&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; ?&amp;gt;&lt;br&gt;&amp;lt;Root xmlns=&amp;quot;clr-namespace:XamlForumMEs;assembly=XamlForumMEs&amp;quot;&amp;gt;  &lt;p&gt;  &amp;lt;Node Name=&amp;quot;Node1&amp;quot; /&amp;gt;&lt;br&gt;  &amp;lt;Node Name=&amp;quot;Node2&amp;quot; Friend=&amp;quot;{NameReference Node1}&amp;quot; /&amp;gt;&lt;br&gt;  &amp;lt;Node Name=&amp;quot;Node3&amp;quot; Friend=&amp;quot;{NameReference Node4}&amp;quot; /&amp;gt;&lt;br&gt;  &amp;lt;Node Name=&amp;quot;Node4&amp;quot; /&amp;gt;&lt;br&gt;  &amp;lt;Node Name=&amp;quot;Node5&amp;quot; /&amp;gt;&lt;br&gt;  &amp;lt;Node Name=&amp;quot;Node6&amp;quot; /&amp;gt;  &lt;p&gt;  &amp;lt;Node /&amp;gt;&lt;br&gt;&amp;lt;/Root&amp;gt; &lt;p&gt;Implementing the first NameReference isn't too hard, since it is a backwards reference. &lt;p&gt;Implementing a NameReference so that it can do the forward reference (Node3 making Node4 a friend) is more challenging. &lt;p&gt;&lt;strong&gt;&lt;u&gt;Brief Details of Sample&lt;/u&gt;&lt;/strong&gt; &lt;p&gt;I made Root implement: &lt;ul&gt; &lt;li&gt;INameScope - so that each Name property setting would be registered with the root. &lt;li&gt;ISupportInitialize - so that Root would call BeginInit and EndInit at the start and end of parsing the tag.&lt;/ul&gt; &lt;p&gt;Each time a NameReference was asked to Provide a value, I cached a DeferredFriend request in the Root. &lt;p&gt;At EndInit of Root, I set all DeferredFriends. &lt;p&gt;Not extremely pretty...but it may help some folks until we make this cleaner... &lt;p&gt;&lt;strong&gt;&lt;u&gt;Download Link&lt;/u&gt;&lt;/strong&gt; &lt;p&gt;&lt;a href="http://robrelyea.com/demos/NameReference/NameReference.zip"&gt;http://robrelyea.com/demos/NameReference/NameReference.zip&lt;/a&gt; (a project that was built with VS2008 Beta2...if you are using VS2005, you need to manually copy the files into a new project)&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=1619844122537416190&amp;page=RSS%3a+NameReferenceExtension+-+MarkupExtension+to+do+name+references&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=rrelyea.spaces.live.com&amp;amp;GT1=rrelyea"&gt;</description><comments>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2260.entry#comment</comments><guid isPermaLink="true">http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2260.entry</guid><pubDate>Tue, 24 Jul 2007 12:41:00 GMT</pubDate><slash:comments>5</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!2260/comments/feed.rss</wfw:commentRss><wfw:comment>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2260.entry#comment</wfw:comment><dcterms:modified>2007-07-24T12:41:00Z</dcterms:modified></item><item><title>Resharper 3 adds Xaml editing/refactoring support</title><link>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2135.entry</link><description>&lt;p&gt;I'm happy to see &lt;a href="http://www.jetbrains.com/resharper/features/newfeatures.html#XML_and_XAML_Support"&gt;Xaml editing support&lt;/a&gt; announced in Resharper 3. [&lt;a href="http://blog.lab49.com/?p=1156"&gt;via Daniel Chiat&lt;/a&gt;] &lt;p&gt;(would love to know what people think of how they did in that area...)&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=1619844122537416190&amp;page=RSS%3a+Resharper+3+adds+Xaml+editing%2frefactoring+support&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=rrelyea.spaces.live.com&amp;amp;GT1=rrelyea"&gt;</description><comments>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2135.entry#comment</comments><guid isPermaLink="true">http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2135.entry</guid><pubDate>Fri, 22 Jun 2007 14:37:38 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!2135/comments/feed.rss</wfw:commentRss><wfw:comment>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2135.entry#comment</wfw:comment><dcterms:modified>2007-06-22T14:37:38Z</dcterms:modified></item><item><title>Xaml + VB4 Frm files + ...</title><link>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2124.entry</link><description>&lt;p&gt;In &lt;a href="http://blogs.msdn.com/tomholl/archive/2007/06/20/vb4-xaml-i-am-your-father.aspx"&gt;&amp;quot;VB4: Xaml, I am your father&amp;quot;&lt;/a&gt; Tom Hollander discusses Xaml's similarity to VB .frm files.  I've also heard Delphi developers compare it to one of their file formats. &lt;p&gt;Xaml isn't programming language specific &amp;amp; can also be used for many different sets of types (or Xaml Vocabularies), not just UI.  But, yes, having a file format to specify hierarchical sets of objects with certain properties has been done a few ways before.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=1619844122537416190&amp;page=RSS%3a+Xaml+%2b+VB4+Frm+files+%2b+...&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=rrelyea.spaces.live.com&amp;amp;GT1=rrelyea"&gt;</description><comments>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2124.entry#comment</comments><guid isPermaLink="true">http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2124.entry</guid><pubDate>Thu, 21 Jun 2007 01:23:51 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!2124/comments/feed.rss</wfw:commentRss><wfw:comment>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2124.entry#comment</wfw:comment><dcterms:modified>2007-06-21T01:23:51Z</dcterms:modified></item><item><title>Mike Hillberg: Great Xaml Posts</title><link>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2115.entry</link><description>&lt;p&gt;Last September I pointed out: &lt;a href="http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!685.entry"&gt;WpfBloggers.Add(WpfArchitects.MikeHillberg);&lt;/a&gt; &lt;p&gt;Since then, he's had a consistent set of thorough and well written content - primarily on Xaml and WPF.  I wanted to call out these Xaml posts as things that I point people towards: &lt;ul&gt; &lt;li&gt;&lt;a href="http://blogs.msdn.com/mikehillberg/archive/2007/05/16/NamespacesInXaml.aspx"&gt;Namespaces in Xaml&lt;/a&gt;  &lt;li&gt;&lt;a href="http://blogs.msdn.com/mikehillberg/archive/2006/09/16/XamlWriter.aspx"&gt;Being written by XamlWriter&lt;/a&gt;  &lt;li&gt;&lt;a href="http://blogs.msdn.com/mikehillberg/archive/2006/10/06/LimitedGenericsSupportInXaml.aspx"&gt;Limited generics support in Xaml&lt;/a&gt;  &lt;li&gt;&lt;a href="http://blogs.msdn.com/mikehillberg/archive/2006/09/27/XamlInspiredMarkup.aspx"&gt;Xaml Inspired Markup&lt;/a&gt;&lt;/ul&gt; &lt;p&gt;Update 6/25/2007: I've added a link to all of Mike's Xaml Language posts from &lt;a href="http://robrelyea.com/xaml"&gt;http://robrelyea.com/xaml&lt;/a&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=1619844122537416190&amp;page=RSS%3a+Mike+Hillberg%3a+Great+Xaml+Posts&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=rrelyea.spaces.live.com&amp;amp;GT1=rrelyea"&gt;</description><comments>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2115.entry#comment</comments><guid isPermaLink="true">http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2115.entry</guid><pubDate>Mon, 18 Jun 2007 17:12:03 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!2115/comments/feed.rss</wfw:commentRss><wfw:comment>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2115.entry#comment</wfw:comment><dcterms:modified>2007-06-25T21:29:54Z</dcterms:modified></item><item><title>Compile Xaml to C# (.cs)</title><link>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2087.entry</link><description>&lt;p&gt;I recently published XamlT @ &lt;a href="http://XamlT.com"&gt;http://XamlT.com&lt;/a&gt; which is a tool that has several useful functions for xaml users. &lt;p&gt;1) You can view information about the Types expressible in different Xaml Vocabularies (WPF, SL 1.0, SL 1.1, etc..) &lt;p&gt;2) You can also convert Xaml files into C# &lt;p&gt;&lt;strong&gt;&lt;u&gt;A little background on Xaml &amp;amp; C#&lt;/u&gt;&lt;/strong&gt; &lt;p&gt;[you can replace the words C# or .cs below with VB and it is all still true] &lt;p&gt;In WPF, we compile Xaml into a combination of C# (.g.cs) and a special binary form (.baml).  So at runtime, in most cases, there doesn't need to be any Xml parsing happening - baml is an optimized, pre-tokenized version of the elements that were specified in the .xaml file. &lt;p&gt;Once a window/page is displayed in WPF, often people programmatically change the state of the tree or add new subtrees to the tree.  If people know how to do something in Xaml, it isn't always simple to know the code to do the same thing. &lt;p&gt;That is why I built the Xaml -&amp;gt; C# tool into XamlT. &lt;p&gt;&lt;strong&gt;&lt;u&gt;Related posts from the past&lt;/u&gt;&lt;/strong&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!158.entry"&gt;What tools generate .g.cs from XAML? Can it be done at runtime?&lt;/a&gt; &lt;li&gt;&lt;a href="http://www.longhornblogs.com/rrelyea/archive/2005/04/27/CodingStyles.aspx"&gt;&lt;u&gt;3 Coding Styles for Avalon Applications&lt;/u&gt;&lt;/a&gt; (this shows ways that markup and code can be mixed during compile and/or runtime) &lt;li&gt;&lt;a href="http://www.longhornblogs.com/rrelyea/archive/2004/01/31/2306.aspx"&gt;&lt;u&gt;.xaml, .baml, .g.cs details&lt;/u&gt;&lt;/a&gt; (discusses some details about baml, generated code)&lt;/ul&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=1619844122537416190&amp;page=RSS%3a+Compile+Xaml+to+C%23+(.cs)&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=rrelyea.spaces.live.com&amp;amp;GT1=rrelyea"&gt;</description><comments>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2087.entry#comment</comments><guid isPermaLink="true">http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2087.entry</guid><pubDate>Thu, 14 Jun 2007 13:20:41 GMT</pubDate><slash:comments>6</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!2087/comments/feed.rss</wfw:commentRss><wfw:comment>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2087.entry#comment</wfw:comment><dcterms:modified>2007-06-14T13:22:25Z</dcterms:modified></item><item><title>"Acropolis" uses Xaml to define business logic components</title><link>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2056.entry</link><description>&lt;p&gt;&lt;a href="http://blogs.msdn.com/dphill"&gt;David Hill&lt;/a&gt; explores a bit about why Acropolis chose to generate Xaml instead of code for business logic components.  See &amp;quot;Why XAML?&amp;quot; section in &lt;a href="http://blogs.msdn.com/dphill/archive/2007/06/11/acropolis-teched-q2-cool-applications-with-little-or-no-code-really-are-you-sure.aspx"&gt;his post&lt;/a&gt;. &lt;p&gt;An excerpt listing the benefits of XAML for Acropolis: &lt;ul&gt; &lt;li&gt;Using XAML gives you a very concise way to express the structural aspects of your component - not just the external ‘class interface', but how it is structured internally. For example, it allows you to cleanly define how any child components or services that your component uses are configured or interact with each other.  &lt;li&gt;It allows you to concentrate more on the code that defines the actual implementation of your component. In other words, we want to make it so that 99%+ of the code that you &lt;i&gt;do&lt;/i&gt; write is the &lt;i&gt;actual&lt;/i&gt; code that will solve your business problem and not plumbing or glue code.  &lt;li&gt;It is much easier for us (or you) to build visual designers or other tools (including test tools) for your component since its structure is more easily ‘machine-parsable'. It also allows for a looser coupling between the application model and the tools allowing each of them to evolve more quickly.&lt;/ul&gt; &lt;p&gt;The 3rd point is an interesting observation.  I don't think I have heard that benefit before... &lt;p&gt;To see some sample Xaml that Acropolis tools create, one place to look is the &lt;a href="http://msdn2.microsoft.com/en-us/library/bb499797(VS.90).aspx"&gt;Walkthrough: Building an Acropolis RSS Reader Application&lt;/a&gt;.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=1619844122537416190&amp;page=RSS%3a+%22Acropolis%22+uses+Xaml+to+define+business+logic+components&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=rrelyea.spaces.live.com&amp;amp;GT1=rrelyea"&gt;</description><comments>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2056.entry#comment</comments><guid isPermaLink="true">http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2056.entry</guid><pubDate>Tue, 12 Jun 2007 11:38:42 GMT</pubDate><slash:comments>1</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!2056/comments/feed.rss</wfw:commentRss><wfw:comment>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2056.entry#comment</wfw:comment><dcterms:modified>2007-06-12T11:52:02Z</dcterms:modified></item><item><title>Case Sensitivity of Xaml</title><link>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2055.entry</link><description>&lt;p&gt;Marius Gheorghe complains of Xaml's case-sensitivity in &lt;a href="http://voidsoft.ro/blog/index.php?title=xaml_case_sensitivity"&gt;XAML case sensitivity&lt;/a&gt; and &lt;a href="http://voidsoft.ro/blog/index.php?title=xaml_case_sensitivity_reloaded"&gt;XAML case sensitivity.Reloaded&lt;/a&gt; where among other things he said:  &lt;blockquote&gt; &lt;p&gt;Case sensitive markup code = pure evil&lt;/blockquote&gt; &lt;p&gt;To tell you the truth, nobody has asked that question of &amp;quot;Why is Xaml case-sensitive&amp;quot; before, and we made the decision so long ago, I had to go talk to &lt;a href="https://blogs.msdn.com/mikehillberg/"&gt;Mike Hillberg&lt;/a&gt; to get/recreate the reason why Xaml is case sensitive. &lt;p&gt;First, what is our behavior: &lt;ul&gt; &lt;li&gt;Xaml element names and attribute names map directly to Type, Property and Event names in a case-sensitive manner. &lt;li&gt;.Net Framework Design Guidelines (&lt;a href="http://msdn2.microsoft.com/en-us/library/ms229042.aspx"&gt;MSDN&lt;/a&gt; or &lt;a href="mailto:book@Amazon"&gt;book@Amazon&lt;/a&gt;) call for Pascal casing of Type, Property and Event names. (initial caps and capitalizing words inside the name as well...for example DrawingImage.) &lt;li&gt;Therefore, you'll find that Xaml generally needs to be Pascal cased for Element and Attribute names. &lt;li&gt;Attribute values in Xaml are generally case-insensitive.  (&amp;quot;True&amp;quot;, &amp;quot;true&amp;quot;, or &amp;quot;TrUe&amp;quot; all work for a property of type boolean.)  This is an artifact of the fact that we call TypeConverters to convert attribute values into the appropriate type, and most .Net type converters are type insensitive.&lt;/ul&gt; &lt;p&gt;A few reasons: &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.xml.com/axml/notes/CaseSensitive.html"&gt;XML is case sensitive&lt;/a&gt; for internationalization reasons. &lt;li&gt;XHTML, a XML vocabulary, also needed to make a choice; &lt;a href="http://www.webheadstart.org/xhtml/why/"&gt;they chose lower case tag and attribute names&lt;/a&gt;:&lt;/ul&gt; &lt;blockquote&gt; &lt;p&gt;XHTML is case sensitive, where as HTML is not case sensitive. Furthermore XHTML requires that all enumerated attribute values be lower case. &lt;p&gt;[Note, Xaml,  as noted earlier, is a bit looser with attribute values...most attribute values are case-insensitive, but that is up to the TypeConverter which is used for that property value.  We recommend that TypeConverters are case-insensitive unless they must be case-sensitive.  Path.Data is one of the few case-sensitive attribute values that WPF has.]&lt;/blockquote&gt; &lt;ul&gt; &lt;li&gt;The XHTML spec &lt;a href="http://www.w3.org/TR/xhtml1/#h-4.2"&gt;says why&lt;/a&gt; they made that choice:&lt;/ul&gt; &lt;blockquote&gt; &lt;p&gt;XHTML documents must use lower case for all HTML element and attribute names. This difference is necessary because XML is case-sensitive e.g. &amp;lt;li&amp;gt; and &amp;lt;LI&amp;gt; are different tags.&lt;/blockquote&gt; &lt;p&gt;Given that we needed to make a choice, we felt that consistency of casing between the type definition and the use in Xaml was the most natural choice. &lt;p&gt;So that is where we are and why. Thanks to Marius for asking the question and giving the feedback. So far, Marius' is the first mention I remember seeing of this since we've been published &amp;quot;Avalon&amp;quot; externally in October of 2003.  I agree that hand editing of Xaml is harder due to this behavior.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=1619844122537416190&amp;page=RSS%3a+Case+Sensitivity+of+Xaml&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=rrelyea.spaces.live.com&amp;amp;GT1=rrelyea"&gt;</description><comments>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2055.entry#comment</comments><guid isPermaLink="true">http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2055.entry</guid><pubDate>Tue, 12 Jun 2007 11:27:12 GMT</pubDate><slash:comments>1</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!2055/comments/feed.rss</wfw:commentRss><wfw:comment>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2055.entry#comment</wfw:comment><dcterms:modified>2007-06-12T11:28:27Z</dcterms:modified></item><item><title>Nathan Dunlap: Xaml Icon History</title><link>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1965.entry</link><description>&lt;p&gt;&lt;a href="http://designerslove.net/?p=85"&gt;History of the Xaml Shield&lt;/a&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=1619844122537416190&amp;page=RSS%3a+Nathan+Dunlap%3a+Xaml+Icon+History&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=rrelyea.spaces.live.com&amp;amp;GT1=rrelyea"&gt;</description><comments>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1965.entry#comment</comments><guid isPermaLink="true">http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1965.entry</guid><pubDate>Thu, 24 May 2007 04:30:34 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!1965/comments/feed.rss</wfw:commentRss><wfw:comment>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1965.entry#comment</wfw:comment><dcterms:modified>2007-05-24T04:30:34Z</dcterms:modified></item><item><title>David Heinemeier Hansson quote about flexibility &amp; complexity</title><link>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1963.entry</link><description>&lt;p&gt;Computerworld.com has an &lt;a href="http://www.computerworld.com/action/article.do?command=viewArticleBasic&amp;amp;articleId=9020799&amp;amp;pageNumber=1"&gt;interview with the Ruby-on-Rails creator&lt;/a&gt;. In it, I enjoyed this quote: &lt;blockquote&gt; &lt;p&gt;Flexibility is not free. It's overrated. And if you trade that flexibility in for some constraints, you get a lot of complexity removed from the equation, you get a lot of productivity back from all the stuff you don't have to do.&lt;/blockquote&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=1619844122537416190&amp;page=RSS%3a+David+Heinemeier+Hansson+quote+about+flexibility+%26+complexity&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=rrelyea.spaces.live.com&amp;amp;GT1=rrelyea"&gt;</description><comments>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1963.entry#comment</comments><guid isPermaLink="true">http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1963.entry</guid><pubDate>Wed, 23 May 2007 20:34:11 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!1963/comments/feed.rss</wfw:commentRss><wfw:comment>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1963.entry#comment</wfw:comment><dcterms:modified>2007-05-23T20:35:35Z</dcterms:modified></item><item><title>Matt Milner: Workflow and Xaml in VS</title><link>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1951.entry</link><description>&lt;p&gt;Matt Milner &lt;a href="http://pluralsight.com/blogs/matt/archive/2007/05/21/47448.aspx"&gt;posted a set of templates&lt;/a&gt; to treat Xaml as uncompiled files in Windows Workflow Foundation (WF) projects.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=1619844122537416190&amp;page=RSS%3a+Matt+Milner%3a+Workflow+and+Xaml+in+VS&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=rrelyea.spaces.live.com&amp;amp;GT1=rrelyea"&gt;</description><comments>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1951.entry#comment</comments><guid isPermaLink="true">http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1951.entry</guid><pubDate>Mon, 21 May 2007 21:42:11 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!1951/comments/feed.rss</wfw:commentRss><wfw:comment>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1951.entry#comment</wfw:comment><dcterms:modified>2007-05-21T21:42:11Z</dcterms:modified></item><item><title>Code vs. Markup or Markup + Code</title><link>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1950.entry</link><description>&lt;p&gt;&lt;a href="http://fsharpnews.blogspot.com/2007/05/xaml-or-f.html"&gt;XAML or F#?&lt;/a&gt; asks if F# isn't more concise and functional than Xaml. &lt;p&gt;Programming languages are very powerful, I'm sure we all have our favorites.  In the end though, Programming Languages are difficult for a wide set of tools to deal with and manipulate. Xaml by comparison has fewer ways to represent an object tree than code - so it should be easier to build systems to manipulate that representation. &lt;p&gt;One of the advantages of having a canonical representation of an object tree, is that it serves as a great interchange enabler. That canonical representation doesn't need to be Xml, but it seems like a good choice. &lt;p&gt;Since Xaml Vocabularies need to buy into Xaml's &amp;quot;Markup==Object Model&amp;quot; philosophy, anything you can do from markup, can be done in code. In the end, declarative systems that can be used via markup and via code are what will likely succeed.  Designing your system to work well in both worlds is key.  Developers who want to only use Code can.  Scenarios that require Markup and Code can easily be satisfied. &lt;p&gt;Useful background: &lt;a href="http://www.windows-now.com/blogs/rrelyea/archive/2004/11/29/7838.aspx"&gt;Our 7 Goals For Xaml&lt;/a&gt; &lt;p&gt;&lt;strong&gt;Update 2007/05/22:&lt;/strong&gt; Barry Kelly posts a response: &amp;quot;&lt;a href="http://barrkel.blogspot.com/2007/05/xml-right-format-for-object-graph.html"&gt;XML, the right format for object graph serialization&lt;/a&gt;&amp;quot;.   &lt;p&gt;BK: Sigh. The assumption of an &amp;quot;object tree&amp;quot; - object graphs usually aren't trees, they typically have lots of cross-references. &lt;p&gt;RR: Yes...my team usually corrects me from tree to graph...my mistake.   &lt;p&gt;BK: Converting objects to XML requires some naming scheme for those objects which have relationships more complex than parent-child. &lt;p&gt;RR: Today in WPF we have &lt;em&gt;resource references&lt;/em&gt; and &lt;em&gt;bindings to properties&lt;/em&gt;, but no generic Xaml Language (x:) way to do the object graph...but we'd like to get there.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=1619844122537416190&amp;page=RSS%3a+Code+vs.+Markup+or+Markup+%2b+Code&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=rrelyea.spaces.live.com&amp;amp;GT1=rrelyea"&gt;</description><comments>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1950.entry#comment</comments><guid isPermaLink="true">http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1950.entry</guid><pubDate>Mon, 21 May 2007 20:15:26 GMT</pubDate><slash:comments>11</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!1950/comments/feed.rss</wfw:commentRss><wfw:comment>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1950.entry#comment</wfw:comment><dcterms:modified>2007-05-22T21:28:59Z</dcterms:modified></item><item><title>Ashish Shetty: Namescopes in WPF &amp; Silverlight</title><link>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1937.entry</link><description>&lt;p&gt;Good post to read from Ashish: &lt;a title="http://nerddawg.blogspot.com/2007/05/namescopes-in-silverlight.html" href="http://nerddawg.blogspot.com/2007/05/namescopes-in-silverlight.html"&gt;http://nerddawg.blogspot.com/2007/05/namescopes-in-silverlight.html&lt;/a&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=1619844122537416190&amp;page=RSS%3a+Ashish+Shetty%3a+Namescopes+in+WPF+%26+Silverlight&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=rrelyea.spaces.live.com&amp;amp;GT1=rrelyea"&gt;</description><comments>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1937.entry#comment</comments><guid isPermaLink="true">http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1937.entry</guid><pubDate>Fri, 18 May 2007 00:52:39 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!1937/comments/feed.rss</wfw:commentRss><wfw:comment>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1937.entry#comment</wfw:comment><dcterms:modified>2007-05-18T00:52:39Z</dcterms:modified></item><item><title>Chuck Jazdzewski: Xaml Conditional Compilation via MarkupCompatibility</title><link>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1936.entry</link><description>&lt;p&gt; &lt;p&gt;More internal mail:  &lt;p&gt;&lt;strong&gt;From:&lt;/strong&gt; Me &lt;br&gt;Chuck showed an interesting way you can do “xaml conditional compilation” in &lt;a href="http://www.removingalldoubt.com/PermaLink.aspx/defa2a7d-b1e9-49eb-b8c8-438348be8d18"&gt;A Tour of XAML VIII: More fun with Markup Compatibility&lt;/a&gt;  &lt;p&gt;&lt;a&gt;&lt;/a&gt; &lt;p&gt;&lt;b&gt;----------------------------------------------------------&lt;/b&gt;  &lt;blockquote&gt; &lt;p&gt;&lt;b&gt;From:&lt;/b&gt; Somebody inside of MS &lt;br&gt;I need to do something like this:  &lt;p&gt;&amp;lt;ControlTemplate&amp;gt;&lt;br&gt;#if SOMESYMBOL&lt;br&gt;&amp;lt;ControlTemplate.Triggers&amp;gt;&lt;br&gt;                Some triggers&lt;br&gt;&amp;lt;/ControlTemplate.Triggers&amp;gt;&lt;br&gt;#endif&lt;br&gt;&amp;lt;/ControlTemplate&amp;gt;  &lt;p&gt;Is there any way to do it?&lt;/blockquote&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=1619844122537416190&amp;page=RSS%3a+Chuck+Jazdzewski%3a+Xaml+Conditional+Compilation+via+MarkupCompatibility&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=rrelyea.spaces.live.com&amp;amp;GT1=rrelyea"&gt;</description><comments>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1936.entry#comment</comments><guid isPermaLink="true">http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1936.entry</guid><pubDate>Fri, 18 May 2007 00:49:33 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!1936/comments/feed.rss</wfw:commentRss><wfw:comment>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1936.entry#comment</wfw:comment><dcterms:modified>2007-05-18T14:57:08Z</dcterms:modified></item><item><title>Charles Petzold: Video of Devscovery NYC Keynote</title><link>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1928.entry</link><description>&lt;p&gt;I'm about halfway into &lt;a href="http://channel9.msdn.com/ShowPost.aspx?PostID=306634#306634"&gt;Charles' Devscoverty Keynote&lt;/a&gt;.  I was happy to trip over a link in this Channel9 discussion about &lt;a href="http://channel9.msdn.com/ShowPost.aspx?PostID=306592#306592"&gt;Xaml Editors&lt;/a&gt;.  Interesting talk - love his &lt;a href="http://robrelyea.com/wpf/books"&gt;book&lt;/a&gt; and his thoughts about Xaml and its impact. &lt;p&gt;Update: Very cool demos of Charles' evolution of a Planet viewing application he wrote long ago in Win32.  Very nice in WPF...he wrote some custom elements and shows wiring them together in Xaml Cruncher (his Xaml Editor) with Xaml and databinding.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=1619844122537416190&amp;page=RSS%3a+Charles+Petzold%3a+Video+of+Devscovery+NYC+Keynote&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=rrelyea.spaces.live.com&amp;amp;GT1=rrelyea"&gt;</description><comments>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1928.entry#comment</comments><guid isPermaLink="true">http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1928.entry</guid><pubDate>Sat, 12 May 2007 13:10:24 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!1928/comments/feed.rss</wfw:commentRss><wfw:comment>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1928.entry#comment</wfw:comment><dcterms:modified>2007-05-18T15:15:05Z</dcterms:modified></item><item><title>Lazycoder: Why use Xaml?</title><link>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1923.entry</link><description>&lt;p&gt;Lazycoder asks &lt;a href="http://www.lazycoder.com/weblog/index.php/archives/2007/05/10/why-use-xaml/"&gt;Why use Xaml?&lt;/a&gt;  We designed it with the following goals in mind: &lt;a href="http://www.windows-now.com/blogs/rrelyea/archive/2004/11/29/7838.aspx"&gt;Our 7 Goals for Xaml&lt;/a&gt; &lt;p&gt;Already some interesting comments on Lazycoder's post...&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=1619844122537416190&amp;page=RSS%3a+Lazycoder%3a+Why+use+Xaml%3f&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=rrelyea.spaces.live.com&amp;amp;GT1=rrelyea"&gt;</description><comments>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1923.entry#comment</comments><guid isPermaLink="true">http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1923.entry</guid><pubDate>Fri, 11 May 2007 13:03:37 GMT</pubDate><slash:comments>2</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!1923/comments/feed.rss</wfw:commentRss><wfw:comment>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1923.entry#comment</wfw:comment><dcterms:modified>2007-05-11T13:03:37Z</dcterms:modified></item><item><title>James Clark: TEDI, JSON</title><link>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1922.entry</link><description>&lt;p&gt;Very happy to find Don's &lt;a href="http://pluralsight.com/blogs/dbox/archive/2007/05/10/47285.aspx"&gt;pointer&lt;/a&gt; to James Clark's blog. &lt;p&gt;As somebody who has wrestled with representing Xaml Vocabularies in XSD, I'm always interested to read about &lt;a href="http://blog.jclark.com/2007/04/do-we-need-new-kind-of-schema-language.html"&gt;possible new approaches&lt;/a&gt;.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=1619844122537416190&amp;page=RSS%3a+James+Clark%3a+TEDI%2c+JSON&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=rrelyea.spaces.live.com&amp;amp;GT1=rrelyea"&gt;</description><comments>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1922.entry#comment</comments><guid isPermaLink="true">http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1922.entry</guid><pubDate>Fri, 11 May 2007 12:45:07 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!1922/comments/feed.rss</wfw:commentRss><wfw:comment>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1922.entry#comment</wfw:comment><dcterms:modified>2007-05-11T12:45:07Z</dcterms:modified></item><item><title>.CompositeFont : another xaml data format</title><link>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1845.entry</link><description>&lt;p&gt;SerialSeb posted about font fallback and mentioned .compositeFont files in &amp;quot;&lt;a title="WPF Tips'n'Tricks #2- Use Segoe UI on Vista and Tahoma on XP (and whatever else wherever else)" href="http://serialseb.blogspot.com/2007/04/wpf-tips-2-use-segoe-ui-on-vista-and.html"&gt;WPF Tips'n'Tricks #2- Use Segoe UI on Vista and Tahoma on XP (and whatever else wherever else)&lt;/a&gt;&amp;quot; &lt;p&gt;I commented: &lt;blockquote&gt; &lt;p&gt;.compositeFont is an interesting file format from a Xaml perspective. Its data is representated in Xaml.&lt;/blockquote&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=1619844122537416190&amp;page=RSS%3a+.CompositeFont+%3a+another+xaml+data+format&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=rrelyea.spaces.live.com&amp;amp;GT1=rrelyea"&gt;</description><comments>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1845.entry#comment</comments><guid isPermaLink="true">http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1845.entry</guid><pubDate>Wed, 04 Apr 2007 16:39:47 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!1845/comments/feed.rss</wfw:commentRss><wfw:comment>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1845.entry#comment</wfw:comment><dcterms:modified>2007-04-04T16:39:47Z</dcterms:modified></item><item><title>Michael Latta on Declarative vs. Imperative</title><link>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1822.entry</link><description>&lt;p&gt;Micheal Latta has an iteresting post &amp;quot;&lt;a href="http://michaellatta.spaces.live.com/blog/cns!C1946631E30779E4!805.entry"&gt;Declarative vs. Imperative&lt;/a&gt;&amp;quot;.  In it he compares the approach of Xaml for UI and Ruby for Rails for UI. &lt;p&gt;In the end, it seems like the thing he enjoys with Ruby is the ability to stay in one language: &lt;blockquote&gt; &lt;p&gt;You can make [treeviews] you anticipated in the XAML visible, but not create new ones. For that you need imperative code. In WPF this is C#. You need to change to a different language. In Ruby you stay in the same language for all cases, and you can place any of those operations in the system at any time. The program is not cast in stone the minute the class is loaded into the AppDomain as in the CLR. You do not need to use some arcane code generation API to create run-time dynamic logic.&lt;/blockquote&gt; &lt;p&gt;If you spend time working with people on WPF, you'll often hear the &amp;quot;how can I do this in Xaml&amp;quot; question.  Perhaps it is the draw to one language? &lt;p&gt;Xaml has shown strength in tooling...we already have many tools (designers and file format converters) for Xaml for UI.  I'm not sure how this compares to imperative approaches.  I understand how it compares to Windows Forms, but not Ruby.  How does programming in teams, using visual designers, etc... affect this picture? &lt;p&gt;Very interesting...&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=1619844122537416190&amp;page=RSS%3a+Michael+Latta+on+Declarative+vs.+Imperative&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=rrelyea.spaces.live.com&amp;amp;GT1=rrelyea"&gt;</description><comments>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1822.entry#comment</comments><guid isPermaLink="true">http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1822.entry</guid><pubDate>Thu, 29 Mar 2007 09:42:43 GMT</pubDate><slash:comments>3</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!1822/comments/feed.rss</wfw:commentRss><wfw:comment>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1822.entry#comment</wfw:comment><dcterms:modified>2007-03-29T09:42:43Z</dcterms:modified></item><item><title>XamlReader2 - helpful wrapper to XamlReader</title><link>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1805.entry</link><description>&lt;p&gt;I think XamlReader needs some more methods to make a few tasks easier. &lt;p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Things I'd like to have be easier:&lt;/u&gt;&lt;/strong&gt; &lt;p&gt;1) I hate having to cast the root that I am expecting: &lt;blockquote&gt; &lt;p&gt;RootType root = (RootType)XamlReader.Load(s);&lt;/blockquote&gt; &lt;p&gt;I'd prefer: &lt;blockquote&gt; &lt;p&gt;RootType root = XamlReader&amp;lt;RootType&amp;gt;.Load(s);&lt;/blockquote&gt; &lt;p&gt;2) I hate having to only pass a stream in &lt;p&gt;I'd like to be able to pass a filepath, FileInfo or a string: &lt;p&gt;String: &lt;p&gt;            &lt;span style="color:rgb(0,0,255)"&gt;string&lt;/span&gt; strXaml = &lt;span style="color:rgb(163,21,21)"&gt;&amp;quot;&amp;lt;String xmlns=\&amp;quot;clr-namespace:System;assembly=mscorlib\&amp;quot;&amp;gt;Hello world&amp;lt;/String&amp;gt;&amp;quot;&lt;/span&gt;;&lt;br&gt;            &lt;span style="color:rgb(0,0,255)"&gt;string&lt;/span&gt; str = &lt;span style="color:rgb(43,145,175)"&gt;XamlReader2&lt;/span&gt;&amp;lt;&lt;span style="color:rgb(0,0,255)"&gt;string&lt;/span&gt;&amp;gt;.Load(strXaml);&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt; &lt;p&gt;FileInfo:&lt;pre&gt;&lt;span style="color:rgb(43,145,175)"&gt;        FileInfo&lt;/span&gt; dataFile = &lt;span style="color:rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color:rgb(43,145,175)"&gt;FileInfo&lt;/span&gt;(&lt;span style="color:rgb(163,21,21)"&gt;&amp;quot;c:\\temp\\topics.xml&amp;quot;&lt;/span&gt;);
        &lt;span style="color:rgb(0,0,255)"&gt;if&lt;/span&gt; (dataFile.Exists)
            Topics = &lt;span style="color:rgb(43,145,175)"&gt;XamlReader2&lt;/span&gt;&amp;lt;&lt;span style="color:rgb(43,145,175)"&gt;TopicCollection&lt;/span&gt;&amp;gt;.Load(dataFile);
        &lt;span style="color:rgb(0,0,255)"&gt;else
&lt;/span&gt;            Topics = &lt;span style="color:rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color:rgb(43,145,175)"&gt;TopicCollection&lt;/span&gt;();&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt; 
&lt;p&gt;Thoughts?
&lt;p&gt; 
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Prototype of XamlReader2: (could have major bugs - please review before using...)&lt;/u&gt;&lt;/strong&gt;
&lt;p&gt;[Update: 3/27] Updated the Load(string) override implementation to use StringReader/XmlReader instead of MemoryStream, etc...  Thanks for the comments!
&lt;blockquote&gt;&lt;pre&gt;&lt;span style="color:rgb(0,0,255)"&gt;using&lt;/span&gt; System;
&lt;span style="color:rgb(0,0,255)"&gt;using&lt;/span&gt; System.IO;
&lt;span style="color:rgb(0,0,255)"&gt;using&lt;/span&gt; System.Collections.Generic;
&lt;span style="color:rgb(0,0,255)"&gt;using&lt;/span&gt; System.Text;
&lt;span style="color:rgb(0,0,255)"&gt;using&lt;/span&gt; System.Xml;
&lt;span style="color:rgb(0,0,255)"&gt;using&lt;/span&gt; System.Windows.Markup;

&lt;span style="color:rgb(0,0,255)"&gt;namespace&lt;/span&gt; XamlHelper
{
    &lt;span style="color:rgb(0,128,0)"&gt;//This code is just a prototype of some helpers
&lt;/span&gt;    &lt;span style="color:rgb(0,128,0)"&gt;//to make XamlReading more convenient...let me know
&lt;/span&gt;    &lt;span style="color:rgb(0,128,0)"&gt;//what you think.
&lt;/span&gt;    &lt;span style="color:rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color:rgb(0,0,255)"&gt;static&lt;/span&gt; &lt;span style="color:rgb(0,0,255)"&gt;class&lt;/span&gt; &lt;span style="color:rgb(43,145,175)"&gt;XamlReader2&lt;/span&gt;&amp;lt;T&amp;gt; &lt;span style="color:rgb(0,0,255)"&gt;where&lt;/span&gt; T : &lt;span style="color:rgb(0,0,255)"&gt;class
&lt;/span&gt;    {
        &lt;span style="color:rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color:rgb(0,0,255)"&gt;static&lt;/span&gt; T Load(&lt;span style="color:rgb(43,145,175)"&gt;Stream&lt;/span&gt; stream)
        {
            &lt;span style="color:rgb(0,0,255)"&gt;object&lt;/span&gt; o = System.Windows.Markup.&lt;span style="color:rgb(43,145,175)"&gt;XamlReader&lt;/span&gt;.Load(stream);
            &lt;span style="color:rgb(0,0,255)"&gt;return&lt;/span&gt; CheckRootType(o);
        }

        &lt;span style="color:rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color:rgb(0,0,255)"&gt;static&lt;/span&gt; T Load(&lt;span style="color:rgb(43,145,175)"&gt;XmlReader&lt;/span&gt; xmlReader)
        {
            &lt;span style="color:rgb(0,0,255)"&gt;object&lt;/span&gt; o = &lt;span style="color:rgb(43,145,175)"&gt;XamlReader&lt;/span&gt;.Load(xmlReader);
            &lt;span style="color:rgb(0,0,255)"&gt;return&lt;/span&gt; (CheckRootType(o));
        }

        &lt;span style="color:rgb(0,0,255)"&gt;private&lt;/span&gt; &lt;span style="color:rgb(0,0,255)"&gt;static&lt;/span&gt; T CheckRootType(&lt;span style="color:rgb(0,0,255)"&gt;object&lt;/span&gt; o)
        {
            T root = o &lt;span style="color:rgb(0,0,255)"&gt;as&lt;/span&gt; T;
            &lt;span style="color:rgb(0,0,255)"&gt;if&lt;/span&gt; (root != &lt;span style="color:rgb(0,0,255)"&gt;null&lt;/span&gt;)
                &lt;span style="color:rgb(0,0,255)"&gt;return&lt;/span&gt; root;
            &lt;span style="color:rgb(0,0,255)"&gt;else
&lt;/span&gt;                &lt;span style="color:rgb(0,0,255)"&gt;throw&lt;/span&gt; &lt;span style="color:rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color:rgb(43,145,175)"&gt;Exception&lt;/span&gt;(&lt;span style="color:rgb(163,21,21)"&gt;&amp;quot;Expected &amp;lt;&amp;quot;&lt;/span&gt; + &lt;span style="color:rgb(0,0,255)"&gt;typeof&lt;/span&gt;(T).Name + &lt;span style="color:rgb(163,21,21)"&gt;&amp;quot;&amp;gt; as root tag.&amp;quot;&lt;/span&gt;);
        }

        &lt;span style="color:rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color:rgb(0,0,255)"&gt;static&lt;/span&gt; T Load(&lt;span style="color:rgb(43,145,175)"&gt;FileInfo&lt;/span&gt; fileInfo)
        {
            &lt;span style="color:rgb(0,0,255)"&gt;if&lt;/span&gt; (!fileInfo.Exists)
                &lt;span style="color:rgb(0,0,255)"&gt;throw&lt;/span&gt; &lt;span style="color:rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color:rgb(43,145,175)"&gt;FileNotFoundException&lt;/span&gt;(fileInfo.FullName + &lt;span style="color:rgb(163,21,21)"&gt;&amp;quot; doesn't exist.&amp;quot;&lt;/span&gt;);
            &lt;span style="color:rgb(43,145,175)"&gt;StreamReader&lt;/span&gt; sr = &lt;span style="color:rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color:rgb(43,145,175)"&gt;StreamReader&lt;/span&gt;(fileInfo.FullName);
            &lt;span style="color:rgb(0,0,255)"&gt;return&lt;/span&gt; &lt;span style="color:rgb(43,145,175)"&gt;XamlReader2&lt;/span&gt;&amp;lt;T&amp;gt;.Load(sr.BaseStream);
        }

        &lt;span style="color:rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color:rgb(0,0,255)"&gt;static&lt;/span&gt; T Load(&lt;span style="color:rgb(0,0,255)"&gt;string&lt;/span&gt; xamlContainingString)
        {
            &lt;span style="color:rgb(43,145,175)"&gt;StringReader&lt;/span&gt; stringReader = &lt;span style="color:rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color:rgb(43,145,175)"&gt;StringReader&lt;/span&gt;(xamlContainingString);
            &lt;span style="color:rgb(43,145,175)"&gt;XmlReader&lt;/span&gt; xmlReader = &lt;span style="color:rgb(43,145,175)"&gt;XmlTextReader&lt;/span&gt;.Create(stringReader, &lt;span style="color:rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color:rgb(43,145,175)"&gt;XmlReaderSettings&lt;/span&gt;());
            &lt;span style="color:rgb(0,0,255)"&gt;return&lt;/span&gt; Load(xmlReader);
        }
    }
}
&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/a&gt;&lt;/blockquote&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=1619844122537416190&amp;page=RSS%3a+XamlReader2+-+helpful+wrapper+to+XamlReader&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=rrelyea.spaces.live.com&amp;amp;GT1=rrelyea"&gt;</description><comments>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1805.entry#comment</comments><guid isPermaLink="true">http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1805.entry</guid><pubDate>Mon, 26 Mar 2007 10:24:48 GMT</pubDate><slash:comments>12</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!1805/comments/feed.rss</wfw:commentRss><wfw:comment>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1805.entry#comment</wfw:comment><dcterms:modified>2007-03-27T09:46:44Z</dcterms:modified></item><item><title>Good Progress on Xaml to Code Tool</title><link>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1790.entry</link><description>&lt;p&gt;[update 6/10/2007: I've posted a version of this Xaml to Code tool on &lt;a href="http://XamlT.com"&gt;http://XamlT.com&lt;/a&gt;.  Select sample.xaml from the right side of the home page of the application and choose open.] &lt;p&gt;I &lt;a href="http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!1756.entry"&gt;mentioned&lt;/a&gt; last week that I was building a Xaml to Code converter. &lt;p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;It can now convert this Xaml:&lt;/u&gt;&lt;/strong&gt; &lt;blockquote&gt; &lt;p&gt;&lt;span style="color:rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:rgb(163,21,21)"&gt;Window&lt;/span&gt;&lt;span style="color:rgb(255,0,0)"&gt; x&lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color:rgb(255,0,0)"&gt;Class&lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;=&amp;quot;xamlU.Window1&amp;quot;&lt;br&gt;&lt;/span&gt;   &lt;span style="color:rgb(255,0,0)"&gt;xmlns&lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;&lt;br&gt;&lt;/span&gt;   &lt;span style="color:rgb(255,0,0)"&gt;xmlns&lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color:rgb(255,0,0)"&gt;x&lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;&lt;br&gt;&lt;/span&gt;   &lt;span style="color:rgb(255,0,0)"&gt;Title&lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;=&amp;quot;xamlU&amp;quot;&lt;/span&gt;&lt;span style="color:rgb(255,0,0)"&gt; Height&lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;=&amp;quot;471&amp;quot;&lt;/span&gt;&lt;span style="color:rgb(255,0,0)"&gt; Width&lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;=&amp;quot;665&amp;quot;&lt;/span&gt;&lt;span style="color:rgb(255,0,0)"&gt; WindowState&lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;=&amp;quot;Maximized&amp;quot;&amp;gt;&lt;br&gt;&lt;/span&gt;&lt;span style="color:rgb(163,21,21)"&gt;   &lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:rgb(163,21,21)"&gt;Grid&lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;&amp;gt;&lt;br&gt;&lt;/span&gt;&lt;span style="color:rgb(163,21,21)"&gt;    &lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:rgb(163,21,21)"&gt;Grid&lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;.&lt;/span&gt;&lt;span style="color:rgb(255,0,0)"&gt;RowDefinitions&lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;&amp;gt;&lt;br&gt;&lt;/span&gt;&lt;span style="color:rgb(163,21,21)"&gt;       &lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:rgb(163,21,21)"&gt;RowDefinition&lt;/span&gt;&lt;span style="color:rgb(255,0,0)"&gt; Height&lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;=&amp;quot;*&amp;quot; /&amp;gt;&lt;br&gt;&lt;/span&gt;&lt;span style="color:rgb(163,21,21)"&gt;        &lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:rgb(163,21,21)"&gt;RowDefinition&lt;/span&gt;&lt;span style="color:rgb(255,0,0)"&gt; Height&lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;=&amp;quot;*&amp;quot; /&amp;gt;&lt;br&gt;&lt;/span&gt;&lt;span style="color:rgb(163,21,21)"&gt;    &lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:rgb(163,21,21)"&gt;Grid&lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;.&lt;/span&gt;&lt;span style="color:rgb(255,0,0)"&gt;RowDefinitions&lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;&amp;gt;&lt;br&gt;&lt;/span&gt;&lt;span style="color:rgb(163,21,21)"&gt;   &lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:rgb(163,21,21)"&gt;Button&lt;/span&gt;&lt;span style="color:rgb(255,0,0)"&gt; IsDefault&lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;=&amp;quot;True&amp;quot;&amp;gt;&lt;/span&gt;&lt;span style="color:rgb(163,21,21)"&gt;Ok&lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:rgb(163,21,21)"&gt;Button&lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;&amp;gt;&lt;br&gt;&lt;/span&gt;&lt;span style="color:rgb(163,21,21)"&gt;   &lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:rgb(163,21,21)"&gt;Button&lt;/span&gt;&lt;span style="color:rgb(255,0,0)"&gt; Grid&lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;.&lt;/span&gt;&lt;span style="color:rgb(255,0,0)"&gt;Row&lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;=&amp;quot;1&amp;quot;&amp;gt;&lt;/span&gt;&lt;span style="color:rgb(163,21,21)"&gt;Cancel&lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:rgb(163,21,21)"&gt;Button&lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;&amp;gt;&lt;br&gt;&lt;/span&gt;&lt;span style="color:rgb(163,21,21)"&gt;  &lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:rgb(163,21,21)"&gt;Grid&lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;&amp;gt;&lt;br&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:rgb(163,21,21)"&gt;Window&lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;&amp;gt;&lt;br&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;To this C#:&lt;/u&gt;&lt;/strong&gt; &lt;p&gt;            &lt;span style="color:rgb(43,145,175)"&gt;Window&lt;/span&gt; Window1 = &lt;span style="color:rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color:rgb(43,145,175)"&gt;Window&lt;/span&gt;();&lt;br&gt;            Window1.Title = &lt;span style="color:rgb(163,21,21)"&gt;&amp;quot;xamlU&amp;quot;&lt;/span&gt;;&lt;br&gt;            Window1.Height = ((&lt;span style="color:rgb(43,145,175)"&gt;Double&lt;/span&gt;)&lt;span style="color:rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color:rgb(43,145,175)"&gt;LengthConverter&lt;/span&gt;().ConvertFromString(&lt;span style="color:rgb(163,21,21)"&gt;&amp;quot;471&amp;quot;&lt;/span&gt;));&lt;br&gt;            Window1.Width = ((&lt;span style="color:rgb(43,145,175)"&gt;Double&lt;/span&gt;)&lt;span style="color:rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color:rgb(43,145,175)"&gt;LengthConverter&lt;/span&gt;().ConvertFromString(&lt;span style="color:rgb(163,21,21)"&gt;&amp;quot;665&amp;quot;&lt;/span&gt;));&lt;br&gt;            Window1.WindowState = &lt;span style="color:rgb(43,145,175)"&gt;WindowState&lt;/span&gt;.Maximized;&lt;br&gt;&lt;br&gt;            &lt;span style="color:rgb(43,145,175)"&gt;Grid&lt;/span&gt; Grid1 = &lt;span style="color:rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color:rgb(43,145,175)"&gt;Grid&lt;/span&gt;();&lt;br&gt;            Window1.Content = Grid1;&lt;br&gt;&lt;br&gt;            &lt;span style="color:rgb(43,145,175)"&gt;RowDefinition&lt;/span&gt; RowDefinition1 = &lt;span style="color:rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color:rgb(43,145,175)"&gt;RowDefinition&lt;/span&gt;();&lt;br&gt;            RowDefinition1.Height = ((&lt;span style="color:rgb(43,145,175)"&gt;GridLength&lt;/span&gt;)&lt;span style="color:rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color:rgb(43,145,175)"&gt;GridLengthConverter&lt;/span&gt;().ConvertFromString(&lt;span style="color:rgb(163,21,21)"&gt;&amp;quot;*&amp;quot;&lt;/span&gt;));&lt;br&gt;            Grid1.RowDefinitions.Add(RowDefinition1);&lt;br&gt;&lt;br&gt;            &lt;span style="color:rgb(43,145,175)"&gt;RowDefinition&lt;/span&gt; RowDefinition2 = &lt;span style="color:rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color:rgb(43,145,175)"&gt;RowDefinition&lt;/span&gt;();&lt;br&gt;            RowDefinition2.Height = ((&lt;span style="color:rgb(43,145,175)"&gt;GridLength&lt;/span&gt;)&lt;span style="color:rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color:rgb(43,145,175)"&gt;GridLengthConverter&lt;/span&gt;().ConvertFromString(&lt;span style="color:rgb(163,21,21)"&gt;&amp;quot;*&amp;quot;&lt;/span&gt;));&lt;br&gt;            Grid1.RowDefinitions.Add(RowDefinition2);&lt;br&gt;&lt;br&gt;            &lt;span style="color:rgb(43,145,175)"&gt;Button&lt;/span&gt; Button1 = &lt;span style="color:rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color:rgb(43,145,175)"&gt;Button&lt;/span&gt;();&lt;br&gt;            Button1.IsDefault = &lt;span style="color:rgb(0,0,255)"&gt;true&lt;/span&gt;;&lt;br&gt;            Grid1.Children.Add(Button1);&lt;br&gt;&lt;br&gt;            Button1.Content = &lt;span style="color:rgb(163,21,21)"&gt;&amp;quot;Ok&amp;quot;&lt;/span&gt;;&lt;br&gt;&lt;br&gt;            &lt;span style="color:rgb(43,145,175)"&gt;Button&lt;/span&gt; Button2 = &lt;span style="color:rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color:rgb(43,145,175)"&gt;Button&lt;/span&gt;();&lt;br&gt;            &lt;span style="color:rgb(43,145,175)"&gt;Grid&lt;/span&gt;.SetRow(Button2, 1);&lt;br&gt;            Grid1.Children.Add(Button2);&lt;br&gt;&lt;br&gt;            Button2.Content = &lt;span style="color:rgb(163,21,21)"&gt;&amp;quot;Cancel&amp;quot;&lt;/span&gt;;&lt;br&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;Required Enhancements&lt;/u&gt;&lt;/strong&gt; &lt;ul&gt; &lt;li&gt;Handle Markup Extensions  &lt;li&gt;Consider how x:Class should be handled  &lt;li&gt;Support VB  &lt;li&gt;Definitely more to think of and list here...&lt;/ul&gt; &lt;p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Possible Enhancements&lt;/u&gt;&lt;/strong&gt; &lt;ul&gt; &lt;li&gt;Share instances of TypeConverters, instead of creating a new one for each property set.  &lt;li&gt;Avoid using TypeConverters at all...figure out the object created from the type converter and convert it to code.&lt;/ul&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=1619844122537416190&amp;page=RSS%3a+Good+Progress+on+Xaml+to+Code+Tool&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=rrelyea.spaces.live.com&amp;amp;GT1=rrelyea"&gt;</description><comments>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1790.entry#comment</comments><guid isPermaLink="true">http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1790.entry</guid><pubDate>Thu, 22 Mar 2007 14:12:58 GMT</pubDate><slash:comments>2</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!1790/comments/feed.rss</wfw:commentRss><wfw:comment>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1790.entry#comment</wfw:comment><dcterms:modified>2007-06-10T14:59:55Z</dcterms:modified></item><item><title>Concise Description of Xaml Language &amp; Xaml Formats</title><link>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1788.entry</link><description>&lt;p&gt; &lt;p&gt;I am doing some writing for work, and I'm yet again having to come up with a description of XAML - the language.  Remember, there are Xaml Formats such as WPF/XAML, WPFe/XAML, WF/XAML (workflow foundation), &amp;amp; XPS/XAML.  The Xaml Language is the common set of rules which those Xaml Formats all uphold.  &lt;p&gt;   &lt;p&gt;&lt;strong&gt;&lt;u&gt;My latest take&lt;/u&gt;&lt;/strong&gt;  &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Xaml Format:&lt;/strong&gt; a set of specific elements, usually extensible, used to declaratively model a system.  &lt;li&gt;&lt;strong&gt;Xaml Langauge:&lt;/strong&gt; a set of rules built on XML's strengths to provide a tool friendly, while still human-readable, file format which describes trees of objects from domain-specific class libraries.&lt;/ul&gt; &lt;p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Related information&lt;/u&gt;&lt;/strong&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms752059.aspx"&gt;Xaml Overview on MSDN&lt;/a&gt;  &lt;li&gt;&lt;a href="http://www.windows-now.com/blogs/rrelyea/archive/2006/03/27/XamlLanguageAndFormats.aspx"&gt;Xaml Language and Xaml Formats&lt;/a&gt; (initial blog post with &amp;quot;Xaml Formats&amp;quot; term)&lt;/ul&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=1619844122537416190&amp;page=RSS%3a+Concise+Description+of+Xaml+Language+%26+Xaml+Formats&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=rrelyea.spaces.live.com&amp;amp;GT1=rrelyea"&gt;</description><comments>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1788.entry#comment</comments><guid isPermaLink="true">http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1788.entry</guid><pubDate>Wed, 21 Mar 2007 13:16:12 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!1788/comments/feed.rss</wfw:commentRss><wfw:comment>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1788.entry#comment</wfw:comment><dcterms:modified>2007-03-21T14:52:38Z</dcterms:modified></item><item><title>Whitespace preservation in XAML</title><link>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1781.entry</link><description>&lt;p&gt;Fil asked about &lt;a href="http://fortes.com/2007/03/15/collapsed-spaces-around-run/"&gt;Collapsed Spaces Around &amp;lt;Run /&amp;gt;&lt;/a&gt; &lt;p&gt;  &lt;p&gt;Using XamlPad, I was not able to reproduce this problem…all 6 hello worlds have spaces in them.  &lt;p&gt;What is your repro?&lt;pre&gt;&lt;span style="color:rgb(31,73,125)"&gt;&lt;/span&gt;&lt;span style="color:rgb(31,73,125)"&gt;&amp;lt;Page
 xmlns=&amp;quot;&lt;/span&gt;&lt;span style="color:rgb(0,0,255)"&gt;http://schemas.microsoft.com/winfx/2006/xaml/presentation&lt;/span&gt;&lt;span style="color:rgb(31,73,125)"&gt;&amp;quot;
 &lt;/span&gt;&lt;span style="color:rgb(31,73,125)"&gt;xmlns:System=&amp;quot;clr-namespace:System;assembly=mscorlib&amp;quot;&amp;gt;
 &amp;lt;StackPanel&amp;gt;
 &amp;lt;TextBlock&amp;gt;Hello World&amp;lt;/TextBlock&amp;gt;
 &amp;lt;TextBlock&amp;gt;&amp;lt;Run&amp;gt;Hello&amp;lt;/Run&amp;gt; &amp;lt;Run&amp;gt;World&amp;lt;/Run&amp;gt;&amp;lt;/TextBlock&amp;gt;
 &amp;lt;TextBlock&amp;gt;&amp;lt;Bold&amp;gt;Hello&amp;lt;/Bold&amp;gt; &amp;lt;Italic&amp;gt;World&amp;lt;/Italic&amp;gt;&amp;lt;/TextBlock&amp;gt;
 &amp;lt;FlowDocumentPageViewer&amp;gt;
 &amp;lt;FlowDocument&amp;gt;
 &amp;lt;Paragraph&amp;gt;Hello World&amp;lt;/Paragraph&amp;gt;
 &amp;lt;Paragraph&amp;gt;&amp;lt;Run&amp;gt;Hello&amp;lt;/Run&amp;gt; &amp;lt;Run&amp;gt;World&amp;lt;/Run&amp;gt;&amp;lt;/Paragraph&amp;gt;
 &amp;lt;Paragraph&amp;gt;&amp;lt;Bold&amp;gt;Hello&amp;lt;/Bold&amp;gt; &amp;lt;Italic&amp;gt;World&amp;lt;/Italic&amp;gt;&amp;lt;/Paragraph&amp;gt;
 &amp;lt;/FlowDocument&amp;gt;
 &amp;lt;/FlowDocumentPageViewer&amp;gt;
 &amp;lt;/StackPanel&amp;gt;
&amp;lt;/Page&amp;gt;
&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="color:rgb(31,73,125)"&gt;The SDK documents &lt;a href="http://msdn2.microsoft.com/en-us/library/ms788746.aspx"&gt;Whitespace Processing in XAML&lt;/a&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span style="color:rgb(31,73,125)"&gt;Update: Corrado Cavalli, an MVP from Italy that I met last week, sent me mail pointing out a sample that reproed for him. Since it didn't repro for me in XamlPad, but he sent a picture, I decided to check to see if compiled xaml had the problem.  It turns out that xaml and baml are consistent however &lt;/span&gt;&lt;span style="color:rgb(31,73,125)"&gt;I believe that this only repros in &amp;quot;Cider&amp;quot; in the March CTP.  I'll work with the Cider team.  Thanks!&lt;/span&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=1619844122537416190&amp;page=RSS%3a+Whitespace+preservation+in+XAML&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=rrelyea.spaces.live.com&amp;amp;GT1=rrelyea"&gt;</description><comments>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1781.entry#comment</comments><guid isPermaLink="true">http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1781.entry</guid><pubDate>Tue, 20 Mar 2007 00:13:04 GMT</pubDate><slash:comments>4</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!1781/comments/feed.rss</wfw:commentRss><wfw:comment>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1781.entry#comment</wfw:comment><dcterms:modified>2007-03-20T22:41:31Z</dcterms:modified></item><item><title>Tool to convert from XAML to Code</title><link>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1756.entry</link><description>&lt;p&gt;[update 6/10/2007: I've posted a version of this Xaml to Code tool on &lt;a href="http://XamlT.com"&gt;http://XamlT.com&lt;/a&gt;.  Select sample.xaml from the right side of the home page of the application and choose open.] &lt;p&gt;This has been a frequent request... &lt;p&gt;Today, I saw a &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1350278&amp;amp;SiteID=1"&gt;WPF forum post&lt;/a&gt; asking again, so I started building this.  I'm building it on top of some classes that help store information about types, properties, etc... &lt;p&gt;If you don't see anything in 1-2 weeks, please ping me with a comment on this post. &lt;p&gt;  &lt;p&gt;[Update: 3/16] &lt;p&gt;Here is a picture of how it looks now: &lt;p&gt;&lt;a href="http://blufiles.storage.msn.com/y1pjsm0lO8FlXpPJUlplhPdcu3z6WiRNNGsVkilf7itVPywVi1KzbSbxgwQtHwU0k-w0HN9OMFzRg0"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px" height=233 src="http://blufiles.storage.msn.com/y1pjsm0lO8FlXqBKjUrNfSI6bwrXcaUlGL3En5GuM6XKHiOJ8F6NWHRddgqFOVquoVMcioOX9e-a9U" width=331 border=0&gt;&lt;/a&gt; &lt;p&gt;(as you may be able to see by the code, i have the basics going...) &lt;p&gt;  &lt;p&gt;Next steps: &lt;ul&gt; &lt;li&gt;Treating properties of type double appropriately  &lt;li&gt;TypeConverters (don't call them from code...figure out the associated code...)  &lt;li&gt;Property Elements  &lt;li&gt;Markup Extensions  &lt;li&gt;More?&lt;/ul&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=1619844122537416190&amp;page=RSS%3a+Tool+to+convert+from+XAML+to+Code&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=rrelyea.spaces.live.com&amp;amp;GT1=rrelyea"&gt;</description><comments>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1756.entry#comment</comments><guid isPermaLink="true">http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1756.entry</guid><pubDate>Thu, 15 Mar 2007 15:35:32 GMT</pubDate><slash:comments>9</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!1756/comments/feed.rss</wfw:commentRss><wfw:comment>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1756.entry#comment</wfw:comment><dcterms:modified>2007-06-10T15:00:52Z</dcterms:modified></item><item><title>The Xaml Icon</title><link>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1742.entry</link><description>&lt;p&gt;I forget who actually made this, but the icon for a xaml file is very nice...especially in very large icon mode in Windows Vista.  Was that you &lt;a href="http://www.designerslove.net/"&gt;Nathan&lt;/a&gt;? &lt;p&gt;&lt;a href="http://robrelyea.com/xamlLogo.jpg"&gt;&lt;img src="http://robrelyea.com/xamlLogo.jpg"&gt;&lt;/a&gt; &lt;p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Another New XamlPad&lt;/u&gt;&lt;/strong&gt; &lt;p&gt;By the way, &lt;a href="http://www.designerslove.net/"&gt;Nathan&lt;/a&gt; just pointed me towards CHATBlender...a new XamlPad that integrates with MSN Messenger (or is that Windows Live MSN Messenger .Net :-).  I added it to my &lt;a href="http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!1695.entry"&gt;Xaml Editor List&lt;/a&gt;.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=1619844122537416190&amp;page=RSS%3a+The+Xaml+Icon&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=rrelyea.spaces.live.com&amp;amp;GT1=rrelyea"&gt;</description><comments>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1742.entry#comment</comments><guid isPermaLink="true">http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1742.entry</guid><pubDate>Tue, 13 Mar 2007 21:09:10 GMT</pubDate><slash:comments>12</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!1742/comments/feed.rss</wfw:commentRss><wfw:comment>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1742.entry#comment</wfw:comment><dcterms:modified>2007-03-13T21:17:14Z</dcterms:modified></item><item><title>Internal MailBag: Collection Types in XAML</title><link>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1673.entry</link><description>&lt;p&gt; &lt;p&gt;Another mail that mail be useful to others outside our firewall... &lt;p&gt;By the way, MSDN has a section that goes into &lt;a href="http://msdn2.microsoft.com/en-us/library/ms752059.aspx#collection_properties"&gt;Collection Types and XAML Collection Properties&lt;/a&gt; &lt;p&gt;&lt;b&gt;&lt;/b&gt;  &lt;p&gt;&lt;b&gt;From:&lt;/b&gt; Mike&lt;br&gt;Btw, the reason List&amp;lt;T&amp;gt; works is because it implements IList. &lt;p&gt;&lt;a&gt;&lt;/a&gt; &lt;p&gt;&lt;b&gt;---&lt;/b&gt; &lt;p&gt;&lt;b&gt;From:&lt;/b&gt; Rob&lt;br&gt;IList, IDictionary or Array are the collection types we support. &lt;p&gt;List&amp;lt;T&amp;gt; or IList&amp;lt;T&amp;gt; is recommended as well, as it suggests the type of the children. &lt;p&gt;IList&amp;lt;T&amp;gt; isn’t supported by itself…partially due to dev time and partially due to perf concerns…if I recall correctly. &lt;p&gt;&lt;b&gt;---&lt;/b&gt; &lt;p&gt;&lt;b&gt;From:&lt;/b&gt; Developer&lt;br&gt;I’m designing a class that I want to be able to use in XAML.  The class which has a collection-valued property called “Children”. &lt;p&gt;If I define “Children” as IList&amp;lt;T&amp;gt;, I get the following error:  'Children' is a read-only IEnumerable property, so 'MyClass' must implement IAddChild.  &lt;p&gt;If I define “Children” as List&amp;lt;T&amp;gt;, things seem to work fine. &lt;p&gt;Can someone clarify what types XAML supports for collections?  Why is IList&amp;lt;T&amp;gt; not acceptable?  What is the recommended usage here?&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=1619844122537416190&amp;page=RSS%3a+Internal+MailBag%3a+Collection+Types+in+XAML&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=rrelyea.spaces.live.com&amp;amp;GT1=rrelyea"&gt;</description><comments>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1673.entry#comment</comments><guid isPermaLink="true">http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1673.entry</guid><pubDate>Mon, 26 Feb 2007 14:52:06 GMT</pubDate><slash:comments>3</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!1673/comments/feed.rss</wfw:commentRss><wfw:comment>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1673.entry#comment</wfw:comment><dcterms:modified>2007-02-26T14:52:06Z</dcterms:modified></item><item><title>ServiceProvider and XAML: type converters and markup extensions</title><link>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1652.entry</link><description>&lt;p&gt; &lt;p&gt;Internal Mail thread (read from bottom)...shared to make the info spread fastest... &lt;p&gt;Larry-&lt;br&gt;Thanks! &lt;p&gt;Wolf-&lt;br&gt;Not sure how well I’ve speced/documented this.  Can you please add to SDK? &lt;p&gt;Basically, we should make sure that we document that service provider is available inside a type converter ConvertFrom call and inside ProvideValue. &lt;p&gt;We provide 3 different interfaces that you can GetService from the service provider. &lt;p&gt;Here are the concrete examples of how we use this mechanism in our code base…(examples are simplified a bit) &lt;p&gt;&lt;b&gt;&lt;u&gt;Example of using IProvideValueTarget – similar to how Binding does this:&lt;/u&gt;&lt;/b&gt;&lt;pre&gt;public sealed override &lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=1"&gt;object&lt;/a&gt; &lt;b&gt;ProvideValue&lt;/b&gt;(&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=2"&gt;IServiceProvider&lt;/a&gt; serviceProvider)&lt;/pre&gt;&lt;pre&gt;{&lt;/pre&gt;&lt;pre&gt;      if (serviceProvider != null)&lt;/pre&gt;&lt;pre&gt;      {&lt;/pre&gt;&lt;pre&gt;            &lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=5"&gt;IProvideValueTarget&lt;/a&gt; &lt;b&gt;target1&lt;/b&gt; = serviceProvider.&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=6"&gt;GetService&lt;/a&gt;(typeof(&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=7"&gt;IProvideValueTarget&lt;/a&gt;)) as &lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=8"&gt;IProvideValueTarget&lt;/a&gt;;&lt;/pre&gt;&lt;pre&gt;            Object obj1 =      target1.TargetObject;&lt;/pre&gt;&lt;pre&gt;            Object property1 = target1.TargetProperty;  //might be a propertyInfo or DependencyProperty&lt;/pre&gt;
&lt;p&gt;…
&lt;p&gt;&lt;b&gt;&lt;u&gt;Example of using IXamlTypeResolver inside a ProvideValue call for TypeExtension (supports x:Type)&lt;/u&gt;&lt;/b&gt;&lt;pre&gt;public override &lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=1"&gt;object&lt;/a&gt; &lt;b&gt;ProvideValue&lt;/b&gt;(&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=2"&gt;IServiceProvider&lt;/a&gt; serviceProvider)&lt;/pre&gt;&lt;pre&gt;{&lt;/pre&gt;&lt;pre&gt;            string typeName = &amp;quot;foo:Button&amp;quot;;&lt;/pre&gt;&lt;pre&gt;            &lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=11"&gt;IXamlTypeResolver&lt;/a&gt; &lt;b&gt;resolver1&lt;/b&gt; = serviceProvider.&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=12"&gt;GetService&lt;/a&gt;(typeof(&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=13"&gt;IXamlTypeResolver&lt;/a&gt;)) as &lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=14"&gt;IXamlTypeResolver&lt;/a&gt;;&lt;/pre&gt;&lt;pre&gt;            if (resolver1 == null)&lt;/pre&gt;&lt;pre&gt;            {&lt;/pre&gt;&lt;pre&gt;                  throw …&lt;/pre&gt;&lt;pre&gt;            }&lt;/pre&gt;&lt;pre&gt;            Type type = resolver1.&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=24"&gt;Resolve&lt;/a&gt;(&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=25"&gt;typeName&lt;/a&gt;);&lt;/pre&gt;&lt;pre&gt;            if (type == null)&lt;/pre&gt;&lt;pre&gt;            {&lt;/pre&gt;&lt;pre&gt;                  throw …&lt;/pre&gt;&lt;pre&gt;            }&lt;/pre&gt;&lt;pre&gt;      }&lt;/pre&gt;&lt;pre&gt;      return type;&lt;/pre&gt;
&lt;p&gt;}
&lt;p&gt;&lt;b&gt;&lt;u&gt;Example of using IUriContext from inside a TypeConverter called during XamlReader or Baml load.&lt;/u&gt;&lt;/b&gt;&lt;pre&gt;public override &lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=3"&gt;object&lt;/a&gt; &lt;b&gt;ConvertFrom&lt;/b&gt;(&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=4"&gt;ITypeDescriptorContext&lt;/a&gt; context, &lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=5"&gt;CultureInfo&lt;/a&gt; culture, &lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=6"&gt;object&lt;/a&gt; value)&lt;/pre&gt;&lt;pre&gt;{&lt;/pre&gt;&lt;pre&gt;&lt;a&gt;            &lt;/a&gt;&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=16"&gt;IUriContext&lt;/a&gt; &lt;b&gt;context1&lt;/b&gt; = (&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=17"&gt;IUriContext&lt;/a&gt;) context.&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=18"&gt;GetService&lt;/a&gt;(typeof(&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=19"&gt;IUriContext&lt;/a&gt;));&lt;/pre&gt;&lt;pre&gt;            if (context1.&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Object=20"&gt;BaseUri&lt;/a&gt; != null)&lt;/pre&gt;&lt;pre&gt;            {&lt;/pre&gt;&lt;pre&gt;                    Uri baseUri = context1.BaseUri&lt;/pre&gt;
&lt;p&gt;…
&lt;p&gt;&lt;b&gt;From:&lt;/b&gt; Larry
&lt;p&gt;Rob, as far as I can see this isn’t documented in MSDN. MSDN documents that MarkupExtension.ProvideValue takes an IServiceProvider, but doesn’t say what it is or does. It also documents IProvideValueTarget, but says only (cryptically, in my opinion): “Reports object-property relationships for framework features such as binding on a dependency property”. It also warns you off with this: “This interface is used internally by some WPF types, and should not be used by application or type authors.”
&lt;p&gt;If third parties are supposed to be able to implement markup extensions (are they, by the way?) this would need to be better documented.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=1619844122537416190&amp;page=RSS%3a+ServiceProvider+and+XAML%3a+type+converters+and+markup+extensions&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=rrelyea.spaces.live.com&amp;amp;GT1=rrelyea"&gt;</description><comments>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1652.entry#comment</comments><guid isPermaLink="true">http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1652.entry</guid><pubDate>Fri, 16 Feb 2007 02:06:39 GMT</pubDate><slash:comments>1</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!1652/comments/feed.rss</wfw:commentRss><wfw:comment>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1652.entry#comment</wfw:comment><dcterms:modified>2007-02-16T02:08:12Z</dcterms:modified></item><item><title>Adam Calderon: WF XAML vs Code; WPF Features Demo Application</title><link>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1645.entry</link><description>&lt;p&gt;I discovered 3 interesting posts for XAML and WPF from Adam.  Adam and I met at TechEd Boston 2006. &lt;ul&gt; &lt;li&gt;&lt;a href="http://blogs.interknowlogy.com/adamcalderon/archive/2007/01/12/10711.aspx"&gt;XAML vs Code for Workflow apps&lt;/a&gt;. &lt;/ul&gt; &lt;blockquote&gt; &lt;p&gt;Since his post: The Windows Workflow Foundation team &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=7E012B7F-5407-4AC5-B9A8-FE34FFFA5D9D&amp;amp;displaylang=en"&gt;posted an XSD&lt;/a&gt; for workflow xaml files to help intellisense inside of VS' XML Editor.&lt;/blockquote&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://blogs.interknowlogy.com/adamcalderon/archive/2006/12/07/9365.aspx"&gt;Why do I need to know XAML&lt;/a&gt;  &lt;li&gt;Additionally, he posts a &lt;a href="http://blogs.interknowlogy.com/adamcalderon/archive/2006/12/05/9345.aspx"&gt;demo app&lt;/a&gt; that he built with a series of web casts on WPF: &lt;ol&gt; &lt;li&gt;&lt;a href="http://www.microsoft.com/events/EventDetails.aspx?CMTYSvcSource=MSCOMMedia&amp;amp;Params=~CMTYDataSvcParams^~arg+Name%3d&amp;quot;ID&amp;quot;+Value%3d&amp;quot;1032307159&amp;quot;/^~arg+Name%3d&amp;quot;ProviderID&amp;quot;+Value%3d&amp;quot;A6B43178-497C-4225-BA42-DF595171F04C&amp;quot;/^~arg+Name%3d&amp;quot;lang&amp;quot;+Value%3d&amp;quot;en&amp;quot;/^~arg+Name%3d&amp;quot;cr&amp;quot;+Value%3d&amp;quot;US&amp;quot;/^~sParams^~/sParams^~/CMTYDataSvcParams^"&gt;An Introduction to Styles and Templates in Windows Presentation Foundation (WPF)&lt;/a&gt;  &lt;li&gt;&lt;a href="http://www.microsoft.com/events/EventDetails.aspx?CMTYSvcSource=MSCOMMedia&amp;amp;Params=~CMTYDataSvcParams^~arg+Name%3d&amp;quot;ID&amp;quot;+Value%3d&amp;quot;1032313139&amp;quot;/^~arg+Name%3d&amp;quot;ProviderID&amp;quot;+Value%3d&amp;quot;A6B43178-497C-4225-BA42-DF595171F04C&amp;quot;/^~arg+Name%3d&amp;quot;lang&amp;quot;+Value%3d&amp;quot;en&amp;quot;/^~arg+Name%3d&amp;quot;cr&amp;quot;+Value%3d&amp;quot;US&amp;quot;/^~sParams^~/sParams^~/CMTYDataSvcParams^"&gt;Windows Presentation Foundation Layout and Controls &lt;/a&gt; &lt;li&gt;&lt;a href="http://www.microsoft.com/events/EventDetails.aspx?CMTYSvcSource=MSCOMMedia&amp;amp;Params=~CMTYDataSvcParams^~arg+Name%3d&amp;quot;ID&amp;quot;+Value%3d&amp;quot;1032313141&amp;quot;/^~arg+Name%3d&amp;quot;ProviderID&amp;quot;+Value%3d&amp;quot;A6B43178-497C-4225-BA42-DF595171F04C&amp;quot;/^~arg+Name%3d&amp;quot;lang&amp;quot;+Value%3d&amp;quot;en&amp;quot;/^~arg+Name%3d&amp;quot;cr&amp;quot;+Value%3d&amp;quot;US&amp;quot;/^~sParams^~/sParams^~/CMTYDataSvcParams^"&gt;Windows Presentation Foundation Properties, Events and Commands &lt;/a&gt; &lt;li&gt;&lt;a href="http://www.microsoft.com/events/EventDetails.aspx?CMTYSvcSource=MSCOMMedia&amp;amp;Params=~CMTYDataSvcParams^~arg+Name%3d&amp;quot;ID&amp;quot;+Value%3d&amp;quot;1032313158&amp;quot;/^~arg+Name%3d&amp;quot;ProviderID&amp;quot;+Value%3d&amp;quot;A6B43178-497C-4225-BA42-DF595171F04C&amp;quot;/^~arg+Name%3d&amp;quot;lang&amp;quot;+Value%3d&amp;quot;en&amp;quot;/^~arg+Name%3d&amp;quot;cr&amp;quot;+Value%3d&amp;quot;US&amp;quot;/^~sParams^~/sParams^~/CMTYDataSvcParams^"&gt;Windows Presentation Foundation Data Binding (Part 1 of 2) &lt;/a&gt; &lt;li&gt;&lt;a href="http://www.microsoft.com/events/EventDetails.aspx?CMTYSvcSource=MSCOMMedia&amp;amp;Params=~CMTYDataSvcParams^~arg+Name%3d&amp;quot;ID&amp;quot;+Value%3d&amp;quot;1032313161&amp;quot;/^~arg+Name%3d&amp;quot;ProviderID&amp;quot;+Value%3d&amp;quot;A6B43178-497C-4225-BA42-DF595171F04C&amp;quot;/^~arg+Name%3d&amp;quot;lang&amp;quot;+Value%3d&amp;quot;en&amp;quot;/^~arg+Name%3d&amp;quot;cr&amp;quot;+Value%3d&amp;quot;US&amp;quot;/^~sParams^~/sParams^~/CMTYDataSvcParams^"&gt;Windows Presentation Foundation Data Binding (Part 2 of 2)&lt;/a&gt;&lt;/ol&gt;&lt;/ul&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=1619844122537416190&amp;page=RSS%3a+Adam+Calderon%3a+WF+XAML+vs+Code%3b+WPF+Features+Demo+Application&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=rrelyea.spaces.live.com&amp;amp;GT1=rrelyea"&gt;</description><comments>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1645.entry#comment</comments><guid isPermaLink="true">http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1645.entry</guid><pubDate>Thu, 15 Feb 2007 13:54:41 GMT</pubDate><slash:comments>6</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!1645/comments/feed.rss</wfw:commentRss><wfw:comment>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1645.entry#comment</wfw:comment><dcterms:modified>2007-02-15T14:13:02Z</dcterms:modified></item><item><title>Debugging XAML Errors at Runtime</title><link>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1625.entry</link><description>&lt;p&gt;Reposting info that I posted on &lt;a href="https://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1196451&amp;amp;SiteID=1"&gt;a forum thread&lt;/a&gt;.  I've reordered and rewritten the content a bit. &lt;p&gt;When I have a mistake like this in my XAML:  &lt;blockquote&gt; &lt;p&gt;&amp;lt;Grid Background=&amp;quot;Greeeen&amp;quot;&amp;gt;&lt;/blockquote&gt; &lt;p&gt;Sometimes XAML intellisense will help you catch this kind of error...but not always. The XAML markup compiler doesn't currently catch errors like this. So you end up with this &amp;quot;Greeen&amp;quot; compiled into the assembly you are running (inside of the BAML binary stream.) &lt;p&gt;Debugging with VS 2005 at runtime, you will see errors like this (bad error message and pointing to the wrong location): &lt;blockquote&gt; &lt;p&gt;Cannot create instance of 'Window1' defined in assembly 'UsingWpfUtilities, Version=1.0.2593.18928, Culture=neutral, PublicKeyToken=null'. Exception has been thrown by the target of an invocation.  Error in markup file 'UsingWpfUtilities;component/Window1.xaml' Line 1 Position 9.&lt;/blockquote&gt; &lt;p&gt;We are working to improve this experience in VS &amp;quot;Orcas&amp;quot;, but the best way to deal with this under VS 2005 is to: &lt;p&gt;Choose Debug\Exceptions\Add: &lt;p&gt;&lt;strong&gt;ComboBox:&lt;/strong&gt; Common Lanaguage Runtime Exceptions&lt;br&gt;&lt;strong&gt;TextBox:&lt;/strong&gt; System.Windows.Markup.XamlParseException &lt;p&gt;Check the &amp;quot;Thrown&amp;quot; box for that newly added Exception (S.W.M.XPE) &lt;p&gt;Debugging the app (F5) will now catch the XamlParseException and give you the following message: &lt;blockquote&gt; &lt;p&gt;Cannot convert the value in attribute 'Background' to object of type 'System.Windows.Media.Brush'. Token is not valid.  Error at object 'System.Windows.Controls.Grid' in markup file 'UsingWpfUtilities;component/window1.xaml' Line 10 Position 6.&lt;/blockquote&gt; &lt;p&gt;In builds of VS &amp;quot;Orcas&amp;quot; that aren't too far away, we'll do a few things to make this better: &lt;p&gt;1) The designer will get better, so that you'll need to spend less time typing XAML by hand.&lt;br&gt;2) The XAML editor will no longer be based on XSD, so that we'll be able to greatly improve the intellisense experience...red squiggles will really mean there is a problem!&lt;br&gt;3) At runtime, we'll try to relate the runtime exception back directly to the right place in the XAML. &lt;p&gt;Until then...sorry.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=1619844122537416190&amp;page=RSS%3a+Debugging+XAML+Errors+at+Runtime&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=rrelyea.spaces.live.com&amp;amp;GT1=rrelyea"&gt;</description><comments>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1625.entry#comment</comments><guid isPermaLink="true">http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1625.entry</guid><pubDate>Sat, 10 Feb 2007 10:55:27 GMT</pubDate><slash:comments>8</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!1625/comments/feed.rss</wfw:commentRss><wfw:comment>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1625.entry#comment</wfw:comment><dcterms:modified>2007-02-10T11:07:03Z</dcterms:modified></item><item><title>Finding all types in a xaml xmlns - code example</title><link>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1614.entry</link><description>&lt;p&gt;In &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1180131&amp;amp;SiteID=1"&gt;the forums&lt;/a&gt;, &amp;quot;Jlansing&amp;quot; is digging into finding instances of DPs and also how to map TypeNames to the actual types. &lt;p&gt;Here is a code example of how to solve the typename to Type mapping as Xaml does it. &lt;p&gt;I'll enhance the code over time based on feedback. &lt;h5&gt;string xmlNamespaceToEnumerate = &amp;quot;&lt;a href="http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;;"&gt;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;&lt;/a&gt;;&lt;/h5&gt; &lt;h5&gt;List&amp;lt;Assembly&amp;gt; assemblyList = new List&amp;lt;Assembly&amp;gt;(); &lt;h5&gt;&lt;/h5&gt;assemblyList.Add(typeof(System.Windows.Controls.Button).Assembly); &lt;h5&gt;&lt;/h5&gt;assemblyList.Add(typeof(System.Windows.Media.Brush).Assembly); &lt;h5&gt;&lt;/h5&gt;assemblyList.Add(typeof(System.Windows.Markup.XmlnsDefinitionAttribute).Assembly); &lt;/h5&gt; &lt;h5&gt;Dictionary&amp;lt;string, Type&amp;gt; typeDictionary = new Dictionary&amp;lt;string, Type&amp;gt;(); &lt;h5&gt;&lt;/h5&gt;List&amp;lt;string&amp;gt; clrNamespaces = new List&amp;lt;string&amp;gt;(); &lt;h5&gt;&lt;/h5&gt;foreach (Assembly a in assemblyList) &lt;h5&gt;&lt;/h5&gt;{ &lt;h5&gt;&lt;/h5&gt;  //Find all ClrNamespaces that match &lt;h5&gt;&lt;/h5&gt;  object[] attrs = a.GetCustomAttributes(typeof(System.Windows.Markup.XmlnsDefinitionAttribute), false); &lt;h5&gt;&lt;/h5&gt;  foreach (object attr in attrs) &lt;h5&gt;&lt;/h5&gt;  { &lt;h5&gt;&lt;/h5&gt;    System.Windows.Markup.XmlnsDefinitionAttribute xmlnsDef = attr as System.Windows.Markup.XmlnsDefinitionAttribute; &lt;h5&gt;&lt;/h5&gt;    if (xmlnsDef.XmlNamespace == xmlNamespaceToEnumerate) &lt;h5&gt;&lt;/h5&gt;    { &lt;h5&gt;&lt;/h5&gt;      clrNamespaces.Add(xmlnsDef.ClrNamespace); &lt;h5&gt;&lt;/h5&gt;    } &lt;h5&gt;&lt;/h5&gt;  } &lt;/h5&gt; &lt;h5&gt;  foreach (Type t in a.GetTypes()) &lt;h5&gt;&lt;/h5&gt;  { &lt;h5&gt;&lt;/h5&gt;    if (t.IsPublic &amp;amp;&amp;amp; clrNamespaces.Contains(t.Namespace)) &lt;h5&gt;&lt;/h5&gt;    { &lt;h5&gt;&lt;/h5&gt;      typeDictionary.Add(t.Name, t); &lt;h5&gt;&lt;/h5&gt;    } &lt;h5&gt;&lt;/h5&gt;  } &lt;h5&gt;&lt;/h5&gt;}&lt;/h5&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=1619844122537416190&amp;page=RSS%3a+Finding+all+types+in+a+xaml+xmlns+-+code+example&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=rrelyea.spaces.live.com&amp;amp;GT1=rrelyea"&gt;</description><comments>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1614.entry#comment</comments><guid isPermaLink="true">http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1614.entry</guid><pubDate>Mon, 05 Feb 2007 19:53:52 GMT</pubDate><slash:comments>3</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!1614/comments/feed.rss</wfw:commentRss><wfw:comment>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1614.entry#comment</wfw:comment><dcterms:modified>2007-02-05T19:53:52Z</dcterms:modified></item><item><title>Are you building a XAML based file format or class library?</title><link>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1594.entry</link><description>&lt;p&gt;We want to make sure we are aware of customers (different groups, companies, or individuals) that are design XAML based XML formats and/or class libraries. &lt;p&gt;As I &lt;a href="http://www.windows-now.com/blogs/rrelyea/archive/2006/03/27/XamlLanguageAndFormats.aspx"&gt;blogged previously&lt;/a&gt;, within Microsoft, we have already shipped several: &lt;p&gt;http://schemas.microsoft.com/winfx/2006/xaml/presentation - WPF (Windows Presentation Foundation) types&lt;br&gt;http://schemas.microsoft.com/client/2007 - WPF/E*&lt;br&gt;http://schemas.microsoft.com/winfx/2006/xaml/workflow - WF (Windows Workflow Foundation) types&lt;br&gt;http://schemas.microsoft.com/xps/2005/06 - &lt;a href="http://microsoft.com/xps"&gt;XPS&lt;/a&gt; (Xml Paper Specification)&lt;br&gt;http://schemas.microsoft.com/winfx/2006/xaml/composite-font - &lt;a href="http://msdn2.microsoft.com/en-gb/library/system.windows.media.fontfamily.aspx"&gt;.compositeFont sdk entry&lt;/a&gt;. &lt;a href="http://blogs.msdn.com/text/archive/2006/07/10/Font-Families-and-Friendly-Names.aspx"&gt;More&lt;/a&gt;. &lt;br&gt;* - Currently only available as a CTP (community technology preview) release. &lt;p&gt;There are many people who are designing class libraries that are extensions of those - such as a set of custom controls for WPF or custom activities for WF. Right now I'm interested in learning of new formats and uses that people are finding XAML useful for - outside of extensions of previous declarative systems. &lt;p&gt;Please email me at rob.relyea at microsoft dot com.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=1619844122537416190&amp;page=RSS%3a+Are+you+building+a+XAML+based+file+format+or+class+library%3f&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=rrelyea.spaces.live.com&amp;amp;GT1=rrelyea"&gt;</description><comments>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1594.entry#comment</comments><guid isPermaLink="true">http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1594.entry</guid><pubDate>Sun, 21 Jan 2007 14:44:20 GMT</pubDate><slash:comments>4</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!1594/comments/feed.rss</wfw:commentRss><wfw:comment>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1594.entry#comment</wfw:comment><dcterms:modified>2007-01-22T17:21:23Z</dcterms:modified></item><item><title>Intellisense in XAML for your types too!</title><link>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!695.entry</link><description>&lt;p&gt;Recently there were renewed requests from a control vendor and &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=729649&amp;amp;SiteID=1"&gt;some&lt;/a&gt; &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=636968&amp;amp;SiteID=1"&gt;developers&lt;/a&gt; &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=283363&amp;amp;SiteID=1"&gt;in&lt;/a&gt; &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=353383&amp;amp;SiteID=1"&gt;the&lt;/a&gt; forums for intellisense support for non-&amp;quot;xaml/presentation&amp;quot; types. &lt;p&gt;&lt;strong&gt;&lt;u&gt;Looky here:&lt;/u&gt;&lt;/strong&gt; &lt;p&gt;&lt;a href="http://tk3.storage.msn.com/x1pfkRmU0-KkUwdojkRAsbrXX0b2k0COCcI4gn_4BmFAyVh4vHnwkoJ7-6AC_Jz4BHUK2Oo3ywJJYy12f-JXLCDf86FhqypN7rPuFHOuRTJY1BRj6r95tS3fd9iTS5oFnizkF-40Ezr_Wuk5EmxCy2ogA"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=192 alt="XML editor view showing elements from a clr-namespace mixed in with element from xaml/presentation." src="http://tk3.storage.msn.com/x1pfkRmU0-KkUwdojkRAsbrXX0b2k0COCcI4gn_4BmFAyWPz42zhi6z0j8GdQg62WBxzR3QxEmw46pIGzUCPc3MUMPP-YDs3ai9E_XpZdj3781AnaHtxL_60Mlk003rfx4wh0d3656f-2kYHmZ8cUYtMQ" width=890 border=0&gt;&lt;/a&gt; &lt;h6&gt;(This shows an XML editor view showing elements from a clr-namespace mixed in with element from xaml/presentation.) &lt;/h6&gt; &lt;p&gt;  &lt;p&gt;I've spent some time the past few days trying to complete building a solution to enable this. &lt;p&gt;&lt;strong&gt;&lt;u&gt;History of the XSD Generator&lt;/u&gt;&lt;/strong&gt; &lt;p&gt;The ASP.NET team had to do similar things...generate an XSD using reflection against .Net assemblies.  Several years ago, probably 2002 or early 2003, I got a drop of their code.  I had a pm intern build a tool that would reflect on PresentationFramework, PresentationCore and WindowsBase and generate an XSD for &amp;quot;Avalon's&amp;quot; types. &lt;p&gt;Over the years, I ended up enhancing this tool to improve the intellisense experience for XAML inside of XSD aware tools.  This included a major push during August of 2005 to make the XSD relect most of what was possible. (I no longer enforced that only a Page or Window could be at the root, for example, any object would be fine.)  During that push, I ended up adding the concept of SubstitutionGroups to the XamlPresentation2006.xsd. &lt;p&gt;&lt;strong&gt;&lt;u&gt;Substitution Groups&lt;/u&gt;&lt;/strong&gt; &lt;p&gt;Substitution Groups enable you to model subclassing like model in schema.  It gave me hope that I could support non-&amp;quot;xaml/presentation&amp;quot; types in XSD appropriately - something I had long though impossile with XSD. &lt;p&gt;Now I have been working on adapting the xsd generator to work on different .dlls. &lt;p&gt;For example, in my WpfUtilities dll that I am working on, I define a ProxyElement (which I'll write about in the future).  If a new XSD is created that defines this element: &lt;p&gt;&amp;lt;xs:element name=&amp;quot;ProxyElement&amp;quot; type=&amp;quot;dProxyElement&amp;quot; substitutionGroup=&amp;quot;wpf:sgDecorator&amp;quot;/&amp;gt; &lt;p&gt;And if we put that XSD in c:\program files\microsoft visual studio 8\xml\schemas with the right clr-namespace uri, intellisense works. &lt;p&gt;&lt;strong&gt;&lt;u&gt;What is left&lt;/u&gt;&lt;/strong&gt; &lt;p&gt;Unfortunately, I had to hand modify the output of the schema generation tool to make it work.  I still need to: &lt;ul&gt; &lt;li&gt;adapt the XSD Generator to do all those things the right way &lt;li&gt;consider how to fix a problem I noticed in XamlPresentation2006.xsd (i didn't create substitution groups for elements which don't have subclasses.) &lt;li&gt;figure out where/how to ship this tool (and potential changes necessary for XamlPresentation2006.xsd) - i want to get it out soon...&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;Stop-Gap&lt;/u&gt;&lt;/strong&gt; &lt;p&gt;As I've probably written about a few times, the Visual Studio team is planning on building a native XAML Editor...one that doesn't use XSD, but instead just directly examines types in assemblies, etc... &lt;p&gt;So, hopefully we can count the number of months that this will be useful on 1 (or maybe 2 hands)...&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=1619844122537416190&amp;page=RSS%3a+Intellisense+in+XAML+for+your+types+too!&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=rrelyea.spaces.live.com&amp;amp;GT1=rrelyea"&gt;</description><comments>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!695.entry#comment</comments><guid isPermaLink="true">http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!695.entry</guid><pubDate>Wed, 20 Sep 2006 13:40:10 GMT</pubDate><slash:comments>4</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://rrelyea.spaces.live.com/blog/cns!167AD7A5AB58D5FE!695/comments/feed.rss</wfw:commentRss><wfw:comment>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!695.entry#comment</wfw:comment><dcterms:modified>2006-09-20T13:49:49Z</dcterms:modified></item><item><title>XamlWriter, creating types to work well in XamlReader/Writer &amp; sample XamlWriter</title><link>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!686.entry</link><description>&lt;p&gt;Mike Hillberg wrote up an &lt;a href="http://blogs.msdn.com/mikehillberg/archive/2006/09/16/XamlWriter.aspx"&gt;article about XamlWriter&lt;/a&gt;.  It has many details about how your CLR based types should be defined to work well with XamlReader/Writer. &lt;p&gt;Seperately, &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=718466&amp;amp;SiteID=1"&gt;a few customers have&lt;/a&gt; told us that XamlWriter is too slow, especially compared to XamlReaders perf.  Clearly, we've focused more energy on the Reading side of Xaml so far.  Luckily, XamlWriter is written on top of some lower level apis - MarkupObject, MarkupProperty, etc... - which I wrote a sample XamlWriter on top of.  My writer does less, but does those things faster.  (that same forum post has the code..) &lt;p&gt;On yet another &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=729418&amp;amp;SiteID=1"&gt;forum post&lt;/a&gt;, there is a discussion about generatng XSD for custom types...in it, people are discussing the pros/cons of using XAML as a serialization format for types outside of WPF types. &lt;p&gt;--- &lt;p&gt;Have a great weekend...I'll try to resist the urge to code...  :-)&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=1619844122537416190&amp;page=RSS%3a+XamlWriter%2c+creating+types+to+work+well+in+XamlReader%2fWriter+%26+sample+XamlWriter&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=rrelyea.spaces.live.com&amp;amp;GT1=rrelyea"&gt;</description><comments>http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!686.entry#comment</comments><guid isPermaLink="true">http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!686.entry</guid><pubDate>Sat, 16 