<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.wintellect.com/CS/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Jeff Prosise's Blog</title><link>http://www.wintellect.com/CS/blogs/jprosise/default.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.2)</generator><item><title>Dynamic Page Loading in Silverlight</title><link>http://www.wintellect.com/CS/blogs/jprosise/archive/2010/06/27/dynamic-page-loading-in-silverlight-navigation-apps.aspx</link><pubDate>Sun, 27 Jun 2010 03:04:00 GMT</pubDate><guid isPermaLink="false">c9b5046a-91b6-4822-a57a-d848b8cb6435:16189</guid><dc:creator>jprosise</dc:creator><slash:comments>8</slash:comments><comments>http://www.wintellect.com/CS/blogs/jprosise/comments/16189.aspx</comments><wfw:commentRss>http://www.wintellect.com/CS/blogs/jprosise/commentrss.aspx?PostID=16189</wfw:commentRss><description>&lt;P&gt;A while back, I blogged about the&lt;A title=INavigationContentLoader href="http://www.wintellect.com/CS/blogs/jprosise/archive/2010/02/08/silverlight-4-s-new-inavigationcontentloader-interface.aspx" target=_blank&gt; INavigationContentLoader interface&lt;/A&gt; introduced in Silverlight 4. INavigationContentLoader is an extensibility point in Silverlight’s navigation framework that lets you provide your own plug-in for loading pages. Silverlight 4 comes with one INavigationContentLoader implementation in a class named PageResourceContentLoader, which loads pages from assemblies in an application’s XAP file. I recently put INavigationContentLoader to work by building my own content loader that loads pages from local XAP files as well as remote assemblies. I named my implementation DynamicContentLoader, and you can &lt;A title=DynamicNavigationDemo href="http://www.wintellect.com/downloads/DynamicContentLoader.zip"&gt;download a Visual Studio 2010 project&lt;/A&gt; that uses it from Wintellect’s Web site.&lt;/P&gt;
&lt;P&gt;My goal in building DynamicContentLoader was to create a content loader that supports the partitioning of large navigation apps. Imagine you’re writing a navigation app that contains hundreds, perhaps thousands, of pages. Depending on how the user interacts with the app, you may not need all those pages, and you don’t want every user to have to pay the price for downloading them, which is exactly what happens if you put all those pages in the application’s XAP. DynamicContentLoader supports a special syntax that lets you identify auxiliary assemblies containing “external” pages. The first time you load an external page, DynamicContentLoader downloads the assembly, loads it into the appdomain, and creates the page. It also caches information allowing that page (and other pages in the same assembly) to be loaded again without redownloading the assembly.&lt;/P&gt;
&lt;P&gt;My sample begins with the following goo in MainPage.xaml:&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;Grid&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt; x&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;="LayoutRoot"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt; Background&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;="White"&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;nav&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;Frame&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt; Source&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;="Page1"&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;nav&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;Frame.ContentLoader&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;local&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;DynamicContentLoader&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt; /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;nav&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;Frame.ContentLoader&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;nav&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;Frame.UriMapper&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;map&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;UriMapper&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;map&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;UriMapping&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt; Uri&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;=""&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt; MappedUri&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;="/Page1.xaml" /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;map&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;UriMapping&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt; Uri&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;="Page1"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt; MappedUri&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;="/Page1.xaml" /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;map&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;UriMapping&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt; Uri&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;="Page2"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt; MappedUri&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;="/EXT:ExternalPages.dll|Page2.xaml" /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;map&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;UriMapping&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt; Uri&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;="Page3"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt; MappedUri&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;="/EXT:ExternalPages.dll|Page3.xaml" /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;map&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;UriMapper&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;nav&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;Frame.UriMapper&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;nav&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;Frame&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;Grid&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;The URI mappings target the app’s three pages: Page1.xaml, Page2.xaml, and Page3.xaml. Page1.xaml lives in the application’s XAP file. Page2.xaml and Page3.xaml do not; they live in an external assembly named ExternalPages.dll. That assembly isn’t embedded in the XAP; it was created from a separate Silverlight project and copied into ClientBin, where it sits beside the application’s XAP file. If the user never navigates to Page2.xaml or Page3.xaml, the assembly never gets loaded. But the moment the user navigates to one of these pages, ExternalPages.dll gets downloaded from ClientBin and loaded into the application. There is no limit to the number of auxiliary assemblies you can deploy. If you wanted to add pages 4 and 5 to the app and house them in an assembly named MorePages.dll, you could modify the URI mappings as follows:&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;map&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;UriMapping&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt; Uri&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;=""&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt; MappedUri&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;="/Page1.xaml" /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;map&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;UriMapping&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt; Uri&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;="Page1"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt; MappedUri&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;="/Page1.xaml" /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;map&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;UriMapping&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt; Uri&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;="Page2"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt; MappedUri&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;="/EXT:ExternalPages.dll|Page2.xaml" /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;map&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;UriMapping&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt; Uri&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;="Page3"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt; MappedUri&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;="/EXT:ExternalPages.dll|Page3.xaml" /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;map&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;UriMapping&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt; Uri&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;="Page4"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt; MappedUri&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;="/EXT:MorePages.dll|Page4.xaml" /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;map&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;UriMapping&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt; Uri&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;="Page5"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt; MappedUri&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;="/EXT:MorePages.dll|Page5.xaml" /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;All you have to do is preface the assembly URI with /EXT:, and separate the assembly URI from the page URI with a vertical bar (|). DynamicContentLoader will do the rest.&lt;/P&gt;
&lt;P&gt;My DynamicContentLoader class is implemented as follows:&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt; &lt;SPAN style="COLOR:blue;"&gt;class&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;DynamicContentLoader&lt;/SPAN&gt; : &lt;SPAN style="COLOR:#2b91af;"&gt;INavigationContentLoader&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;{&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;const&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;string&lt;/SPAN&gt; _extern = &lt;SPAN style="COLOR:#a31515;"&gt;"/EXT:"&lt;/SPAN&gt;;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;const&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;char&lt;/SPAN&gt; _separator = &lt;SPAN style="COLOR:#a31515;"&gt;'|'&lt;/SPAN&gt;;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;PageResourceContentLoader&lt;/SPAN&gt; _loader = &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;PageResourceContentLoader&lt;/SPAN&gt;();&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;// Maps URIs to types (e.g., "/EXT:ExternalPages.dll/Page2.xaml" -&amp;gt; typeof(Page2))&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;// Used to determine whether a page has been requested before and to instantiate it&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;// quickly if it has&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;static&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;Dictionary&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR:blue;"&gt;string&lt;/SPAN&gt;, &lt;SPAN style="COLOR:#2b91af;"&gt;Type&lt;/SPAN&gt;&amp;gt; _pages = &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;Dictionary&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR:blue;"&gt;string&lt;/SPAN&gt;, &lt;SPAN style="COLOR:#2b91af;"&gt;Type&lt;/SPAN&gt;&amp;gt;();&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;// Maps downloaded DLLs to assembly info (e.g., "ExternalPages.dll" -&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;// "ExternalPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null")&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;// Used to determine whether an assembly has been downloaded before and to&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;// store info needed to get information about types in that assembly&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;static&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;Dictionary&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR:blue;"&gt;string&lt;/SPAN&gt;, &lt;SPAN style="COLOR:blue;"&gt;string&lt;/SPAN&gt;&amp;gt; _assemblies = &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;Dictionary&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR:blue;"&gt;string&lt;/SPAN&gt;, &lt;SPAN style="COLOR:blue;"&gt;string&lt;/SPAN&gt;&amp;gt;();&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;IAsyncResult&lt;/SPAN&gt; BeginLoad(&lt;SPAN style="COLOR:#2b91af;"&gt;Uri&lt;/SPAN&gt; targetUri, &lt;SPAN style="COLOR:#2b91af;"&gt;Uri&lt;/SPAN&gt; currentUri, &lt;SPAN style="COLOR:#2b91af;"&gt;AsyncCallback&lt;/SPAN&gt; userCallback, &lt;SPAN style="COLOR:blue;"&gt;object&lt;/SPAN&gt; asyncState)&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;if&lt;/SPAN&gt; (!targetUri.ToString().StartsWith(_extern))&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;// If the URI doesn't start with "EXT:," let the default loader handle it&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;return&lt;/SPAN&gt; _loader.BeginLoad(targetUri, currentUri, userCallback, asyncState);&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;else&lt;/SPAN&gt; &lt;SPAN style="COLOR:green;"&gt;// Otherwise handle it here&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;NavigationAsyncResult&lt;/SPAN&gt; ar = &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;NavigationAsyncResult&lt;/SPAN&gt;(userCallback, asyncState);&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;string&lt;/SPAN&gt; fullUri = targetUri.ToString();&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;// If this page has been loaded before, instantiate it&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;// using type information generated the first time and&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;// cached in the _pages dictionary&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;Type&lt;/SPAN&gt; type;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;if&lt;/SPAN&gt; (_pages.TryGetValue(fullUri.ToLower(), &lt;SPAN style="COLOR:blue;"&gt;out&lt;/SPAN&gt; type))&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ar.Result = &lt;SPAN style="COLOR:#2b91af;"&gt;Activator&lt;/SPAN&gt;.CreateInstance(type);&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ar.CompleteCall(&lt;SPAN style="COLOR:blue;"&gt;true&lt;/SPAN&gt;);&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;return&lt;/SPAN&gt; ar;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;// Extract the page URI (e.g., "Page2.xaml")&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;int&lt;/SPAN&gt; index = fullUri.IndexOf(_separator) + 1;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;string&lt;/SPAN&gt; pageUri = fullUri.Substring(index, fullUri.Length - index);&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;if&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt; ((index = pageUri.IndexOf(&lt;SPAN style="COLOR:#a31515;"&gt;'?'&lt;/SPAN&gt;)) &amp;gt; 0)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;pageUri = pageUri.Substring(0, index); &lt;SPAN style="COLOR:green;"&gt;// Strip off query string&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;// Extract the assembly URI (e.g., "ExternalPages.dll")&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;int&lt;/SPAN&gt; len = _extern.Length;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;string&lt;/SPAN&gt; assemblyUri = fullUri.Substring(len, fullUri.Length - len);&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;assemblyUri = assemblyUri.Substring(0, assemblyUri.IndexOf(_separator));&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;// If the assembly has been downloaded before, instantiate&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;// the page without downloading the assembly again&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;string&lt;/SPAN&gt; fullName;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;if&lt;/SPAN&gt; (_assemblies.TryGetValue(assemblyUri.ToLower(), &lt;SPAN style="COLOR:blue;"&gt;out&lt;/SPAN&gt; fullName))&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;// Instantiate the page&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;type = GetXamlPageType(pageUri, fullName);&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ar.Result = &lt;SPAN style="COLOR:#2b91af;"&gt;Activator&lt;/SPAN&gt;.CreateInstance(type);&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;_pages.Add(fullUri.ToLower(), type);&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ar.CompleteCall(&lt;SPAN style="COLOR:blue;"&gt;true&lt;/SPAN&gt;);&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;return&lt;/SPAN&gt; ar;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;// Prepare the IAsyncResult&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ar.TargetUri = fullUri;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-ansi-language:FR;mso-fareast-font-family:'Times New Roman';"&gt;ar.PageUri = pageUri;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-ansi-language:FR;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-ansi-language:FR;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ar.AssemblyUri = assemblyUri;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-ansi-language:FR;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-ansi-language:FR;mso-fareast-font-family:'Times New Roman';"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-ansi-language:FR;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-ansi-language:FR;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:green;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;// Begin downloading the assembly&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;WebClient&lt;/SPAN&gt; wc = &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;WebClient&lt;/SPAN&gt;();&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;wc.OpenReadCompleted += &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;OpenReadCompletedEventHandler&lt;/SPAN&gt;(OnOpenReadCompleted);&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;wc.OpenReadAsync(&lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;Uri&lt;/SPAN&gt;(assemblyUri, &lt;SPAN style="COLOR:#2b91af;"&gt;UriKind&lt;/SPAN&gt;.Relative), ar);&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;return&lt;/SPAN&gt; ar;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;void&lt;/SPAN&gt; OnOpenReadCompleted(&lt;SPAN style="COLOR:blue;"&gt;object&lt;/SPAN&gt; sender, &lt;SPAN style="COLOR:#2b91af;"&gt;OpenReadCompletedEventArgs&lt;/SPAN&gt; e)&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;if&lt;/SPAN&gt; (e.Error == &lt;SPAN style="COLOR:blue;"&gt;null&lt;/SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;NavigationAsyncResult&lt;/SPAN&gt; ar = e.UserState &lt;SPAN style="COLOR:blue;"&gt;as&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;NavigationAsyncResult&lt;/SPAN&gt;;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;// Load the downloaded assembly into the appdomain&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;AssemblyPart&lt;/SPAN&gt; part = &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;AssemblyPart&lt;/SPAN&gt;();&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;Assembly&lt;/SPAN&gt; assembly = part.Load(e.Result);&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;string&lt;/SPAN&gt; fullName = assembly.FullName;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;// Instantiate the page&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;Type&lt;/SPAN&gt; type = GetXamlPageType(ar.PageUri, fullName);&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ar.Result = &lt;SPAN style="COLOR:#2b91af;"&gt;Activator&lt;/SPAN&gt;.CreateInstance(type);&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;// Update the dictionaries&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;_pages.Add(ar.TargetUri.ToLower(), type);&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;_assemblies.Add(ar.AssemblyUri.ToLower(), fullName);&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;// Signal that loading is finished&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;ar.CompleteCall(&lt;SPAN style="COLOR:blue;"&gt;false&lt;/SPAN&gt;);&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;else&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;throw&lt;/SPAN&gt; e.Error;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;bool&lt;/SPAN&gt; CanLoad(&lt;SPAN style="COLOR:#2b91af;"&gt;Uri&lt;/SPAN&gt; targetUri, &lt;SPAN style="COLOR:#2b91af;"&gt;Uri&lt;/SPAN&gt; currentUri)&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;if&lt;/SPAN&gt; (targetUri.ToString().StartsWith(_extern))&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;return&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;true&lt;/SPAN&gt;;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;else&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;return&lt;/SPAN&gt; _loader.CanLoad(targetUri, currentUri);&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;void&lt;/SPAN&gt; CancelLoad(&lt;SPAN style="COLOR:#2b91af;"&gt;IAsyncResult&lt;/SPAN&gt; asyncResult)&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;// Do nothing&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;LoadResult&lt;/SPAN&gt; EndLoad(&lt;SPAN style="COLOR:#2b91af;"&gt;IAsyncResult&lt;/SPAN&gt; asyncResult)&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;if&lt;/SPAN&gt; (asyncResult &lt;SPAN style="COLOR:blue;"&gt;is&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;NavigationAsyncResult&lt;/SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;return&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;LoadResult&lt;/SPAN&gt;((asyncResult &lt;SPAN style="COLOR:blue;"&gt;as&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;NavigationAsyncResult&lt;/SPAN&gt;).Result);&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;else&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;return&lt;/SPAN&gt; _loader.EndLoad(asyncResult);&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;/////////////////////////////////////////////////////////////////&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;// Given the URI of a XAML page (e.g., Page2.xaml) and the name&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;// of the assembly that hosts the page, GetXamlPageType extracts&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;// the page from the assembly, finds the x:Class attribute, and&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;// returns the corresponding type.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;//&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;Type&lt;/SPAN&gt; GetXamlPageType(&lt;SPAN style="COLOR:blue;"&gt;string&lt;/SPAN&gt; pageUri, &lt;SPAN style="COLOR:blue;"&gt;string&lt;/SPAN&gt; assemblyFullName)&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;string&lt;/SPAN&gt; shortName = assemblyFullName.Substring(0, assemblyFullName.IndexOf(&lt;SPAN style="COLOR:#a31515;"&gt;','&lt;/SPAN&gt;));&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;string&lt;/SPAN&gt; path = shortName + &lt;SPAN style="COLOR:#a31515;"&gt;";component/"&lt;/SPAN&gt; + pageUri;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;StreamResourceInfo&lt;/SPAN&gt; sri = &lt;SPAN style="COLOR:#2b91af;"&gt;Application&lt;/SPAN&gt;.GetResourceStream(&lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;Uri&lt;/SPAN&gt;(path, &lt;SPAN style="COLOR:#2b91af;"&gt;UriKind&lt;/SPAN&gt;.Relative));&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;using&lt;/SPAN&gt; (&lt;SPAN style="COLOR:#2b91af;"&gt;XmlReader&lt;/SPAN&gt; reader = &lt;SPAN style="COLOR:#2b91af;"&gt;XmlReader&lt;/SPAN&gt;.Create(sri.Stream))&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;reader.Read();&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;string&lt;/SPAN&gt; name = reader.GetAttribute(&lt;SPAN style="COLOR:#a31515;"&gt;"x:Class"&lt;/SPAN&gt;);&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;return&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;Type&lt;/SPAN&gt;.GetType(name + &lt;SPAN style="COLOR:#a31515;"&gt;", "&lt;/SPAN&gt; + assemblyFullName, &lt;SPAN style="COLOR:blue;"&gt;false&lt;/SPAN&gt;, &lt;SPAN style="COLOR:blue;"&gt;true&lt;/SPAN&gt;);&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:'Times New Roman';"&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT:115%;FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-ansi-language:EN-US;mso-fareast-font-family:'Times New Roman';mso-fareast-language:EN-US;"&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;There’s a lot going on inside, but the gist of it is that before loading a new page, the navigation framework calls the registered content loader’s CanLoad method to determine whether the page can be loaded. DynamicContentLoader’s CanLoad method checks for a /EXT: prefix at the beginning of the URI. If the prefix is present, CanLoad returns true. If there is no such prefix, CanLoad delegates to an instance of PageResourceContentLoader so that “normal” pages will work as usual.&lt;/P&gt;
&lt;P&gt;The real action happens in BeginLoad, which is called to begin an asynchronous page load. The workflow in my implementation can be summed up as follows:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Check to see if the requested URI contains a /EXT: prefix. If not, delegate to PageResourceContentLoader to do the loading.&lt;/LI&gt;
&lt;LI&gt;Check the _pages dictionary to see if the page (and the assembly containing it) has been loaded before. If so, extract a Type object representing the page from the dictionary and pass the Type to Activator.CreateInstance to create an instance of that page.&lt;/LI&gt;
&lt;LI&gt;If the page has not been loaded before, check the _assemblies dictionary to see whether the assembly designated in the URI has been loaded before. If so, inspect the assembly and create a Type object representing the page. Then use Activator.CreateInstance to create an instance of the page and cache the Type object in the _pages dictionary.&lt;/LI&gt;
&lt;LI&gt;If neither the page nor the assembly has been loaded before, use WebClient to asynchronously download the assembly. When the download is complete, load the assembly into the appdomain with AssemblyPart.Load and create a Type object representing the page. Then use Activator.CreateInstance to create an instance of the page, and cache the Type object in the _pages dictionary and information about the downloaded assembly in the _assemblies dictionary.&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;The helper method named GetXamlPageType plays a key role in content loading. Given the URI of a page resource (for example, Page2.xaml), it uses a little trick with Application.GetResourceInfo to extract the resource from the designated assembly. Then it uses an XmlReader to find the x:Class attribute on the page’s root element. That attribute identifies the class that corresponds to the XAML page.&lt;/P&gt;
&lt;P&gt;David Poll has &lt;A title="David Poll" href="http://www.davidpoll.com/2009/11/30/opening-up-silverlight-4-navigation-introduction-to-inavigationcontentloader/" target=_blank&gt;blogged extensively about INavigationContentLoader&lt;/A&gt;, but to my knowledge, this is the only example out there of a content loader that loads pages dynamically based on XAML page URIs rather than class names. One idea I have for extending DynamicContentLoader is to give it the ability to download auxiliary XAPs containing external pages. Conceptually, it wouldn’t be hard: just download the XAP file, enumerate the assemblies inside, and load them one by one with AssemblyPart.Load. I’ve done that in other extensibility demos, and it’s not difficult. But because I just landed in Beijing in preparation for spending a week at the Microsoft office here, and because I want to do some sightseeing before work starts tomorrow, for now, I’ll leave that enhancement up to you. :-)&lt;/P&gt;
&lt;P&gt;UPDATE: I modified the code to strip query strings from page URIs. The downloadable zip file containing the finished project has been updated accordingly.&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;img src="http://www.wintellect.com/CS/aggbug.aspx?PostID=16189" width="1" height="1"&gt;</description></item><item><title>Dynamic Localization in Silverlight</title><link>http://www.wintellect.com/CS/blogs/jprosise/archive/2010/06/21/dynamic-localization-in-silverlight.aspx</link><pubDate>Mon, 21 Jun 2010 16:33:00 GMT</pubDate><guid isPermaLink="false">c9b5046a-91b6-4822-a57a-d848b8cb6435:15513</guid><dc:creator>jprosise</dc:creator><slash:comments>10</slash:comments><comments>http://www.wintellect.com/CS/blogs/jprosise/comments/15513.aspx</comments><wfw:commentRss>http://www.wintellect.com/CS/blogs/jprosise/commentrss.aspx?PostID=15513</wfw:commentRss><description>&lt;P&gt;Localization is (and has always been) a hot topic in Silverlight. There are many ways to do it, but most solutions that I've seen use some variation of the technique described in the Silverlight documentation, which puts localization resources in RESXes and uses data binding to bind XAML elements to localized resources. It works, but it has always left a bad taste in my mouth. For one thing, all the satellite assemblies built from the RESX files are packaged in the application's XAP file, meaning the XAP can grow quite large. That's wasteful, because for a given user, you probably only need one of those satellite assemblies. (A user who prefers to see content in French probably has no need to see it in Manadarin Chinese, too.) For another, you often need the ability to switch between languages at run-time so you can present a list of language choices to the user and immediately switch to the language they selected. Finally, Visual Studio suffers from a long-standing bug that leaves the constructor of the ResourceManager wrapper class it generates marked internal when you change the class's access modifier to public. This means that whenever you modify the primary RESX file, forcing a code regen, you have to manually change internal to public on the constructor in the generated code. It beats me why this hasn't been fixed after all these years, but it hasn't.&lt;/P&gt;
&lt;P&gt;I came up with a solution that addresses all of these issues and that so far has proven to be reasonably maintainable and robust. It starts with a class that I call ObservableResources:&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt; &lt;SPAN style="COLOR:blue;"&gt;class&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;ObservableResources&lt;/SPAN&gt;&amp;lt;T&amp;gt; : &lt;SPAN style="COLOR:#2b91af;"&gt;INotifyPropertyChanged&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;static&lt;/SPAN&gt; T _resources;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;public&lt;/SPAN&gt; T LocalizationResources&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;get&lt;/SPAN&gt; { &lt;SPAN style="COLOR:blue;"&gt;return&lt;/SPAN&gt; _resources; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;event&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;PropertyChangedEventHandler&lt;/SPAN&gt; PropertyChanged;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;public&lt;/SPAN&gt; ObservableResources(T resources)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;_resources = resources;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;void&lt;/SPAN&gt; UpdateBindings()&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;if&lt;/SPAN&gt; (PropertyChanged != &lt;SPAN style="COLOR:blue;"&gt;null&lt;/SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;PropertyChanged(&lt;SPAN style="COLOR:blue;"&gt;this&lt;/SPAN&gt;, &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;PropertyChangedEventArgs&lt;/SPAN&gt;(&lt;SPAN style="COLOR:#a31515;"&gt;"LocalizationResources"&lt;/SPAN&gt;));&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT:115%;FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-ansi-language:EN-US;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-language:AR-SA;mso-fareast-language:EN-US;"&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;The inspiration for this class came from a &lt;A title="Silverlight and Localizing String Data" href="http://timheuer.com/blog/archive/2009/08/26/silverlight-string-localization.aspx" target=_blank&gt;blog post by Tim Heuer&lt;/A&gt;. The idea is that instead of binding XAML elements to the ResourceManager wrapper generated by Visual Studio, you bind them to an object that wraps the wrapper (whose class name comes from the names of your RESX files and is passed to ObservableResources as a template parameter) and implements INotifyPropertyChanged. Now you can change the culture at run-time and call ObservableResources.UpdatingBindings to update the binding targets. A side benefit of wrapping the wrapper is that it eliminates the need to change the Visual Studio-generated wrapper class’s constructor from internal to public. (Now if only Silverlight would allow you to declaratively instantiate generic types. Grrr. Because you have to instantiate ObservableResources programmatically, you lose design-time support.)&lt;/P&gt;
&lt;P&gt;The second part of the solution is a helper class named LocalizationManager. I won’t post the source code here, but LocalizationManager exposes a simple API for changing cultures. If necessary,&amp;nbsp;it downloads external XAPs containing localization resources and loads them into the appdomain so ResourceManager can find them. My implementation has intimate knowledge of which localization resources are stored in which XAPs, but you could easily build a more generic version that works in any application. LocalizationManager’s API looks like this:&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt; &lt;SPAN style="COLOR:blue;"&gt;event&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;EventHandler&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR:#2b91af;"&gt;CultureChangedEventArgs&lt;/SPAN&gt;&amp;gt; CultureChanged;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt; &lt;SPAN style="COLOR:blue;"&gt;event&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;EventHandler&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR:#2b91af;"&gt;CultureChangedErrorEventArgs&lt;/SPAN&gt;&amp;gt; CultureChangeFailed;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-ansi-language:FR;"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-ansi-language:FR;"&gt; &lt;SPAN style="COLOR:blue;"&gt;void&lt;/SPAN&gt; ChangeCulture(&lt;SPAN style="COLOR:#2b91af;"&gt;CultureInfo&lt;/SPAN&gt; culture);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;To demonstrate the ObservableResources/LocalizationManager approach to localization, I built a sample app with this in MainPage.xaml:&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;Grid&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; x&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="LayoutRoot"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; Background&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="Green"&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;StackPanel&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; Orientation&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="Vertical"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; VerticalAlignment&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="Center"&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;TextBlock&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; Text&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;Binding&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; LocalizationResources&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;.Greeting}"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Foreground&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="LightYellow"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; FontSize&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="72"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; FontWeight&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="Bold"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;HorizontalAlignment&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="Center"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; VerticalAlignment&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="Center"&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;TextBlock.Effect&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;DropShadowEffect&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; BlurRadius&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="12"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; ShadowDepth&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="12"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; Opacity&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="0.5" /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;TextBlock.Effect&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;TextBlock&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;StackPanel&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; Orientation&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="Horizontal"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; HorizontalAlignment&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="Center"&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;Button&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; Width&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="120"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; Height&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="60"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Content&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;Binding&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; LocalizationResources&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;.EnglishLabel}"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Tag&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="en"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; Click&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="OnChangeCulture"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; Margin&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="5" /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;Button&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; Width&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="120"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; Height&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="60"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Content&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;Binding&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; LocalizationResources&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;.FrenchLabel}"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Tag&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="fr"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; Click&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="OnChangeCulture"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; Margin&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="5" /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;Button&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; Width&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="120"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; Height&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="60"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Content&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;Binding&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; LocalizationResources&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;.GermanLabel}"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Tag&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="de"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; Click&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="OnChangeCulture"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; Margin&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="5" /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;Button&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; Width&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="120"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; Height&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="60"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Content&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;Binding&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; LocalizationResources&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;.SpanishLabel}"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;Tag&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="es"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; Click&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="OnChangeCulture"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; Margin&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="5" /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;StackPanel&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;StackPanel&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;Grid&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;And this in MainPage.xaml.cs:&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt; &lt;SPAN style="COLOR:blue;"&gt;partial&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;class&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;MainPage&lt;/SPAN&gt; : &lt;SPAN style="COLOR:#2b91af;"&gt;UserControl&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;LocalizationManager&lt;/SPAN&gt; _manager = &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;LocalizationManager&lt;/SPAN&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;ObservableResources&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR:#2b91af;"&gt;Resources&lt;/SPAN&gt;&amp;gt; _resources =&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;ObservableResources&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR:#2b91af;"&gt;Resources&lt;/SPAN&gt;&amp;gt;(&lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;Resources&lt;/SPAN&gt;());&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;public&lt;/SPAN&gt; MainPage()&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;InitializeComponent();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;// Set LayoutRoot's DataContext to specify binding sources for child elements&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;LayoutRoot.DataContext = _resources;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;void&lt;/SPAN&gt; OnChangeCulture(&lt;SPAN style="COLOR:blue;"&gt;object&lt;/SPAN&gt; sender, &lt;SPAN style="COLOR:#2b91af;"&gt;RoutedEventArgs&lt;/SPAN&gt; args)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;// Change the culture, and then rebind&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;_manager.CultureChanged += (s, e) =&amp;gt; _resources.UpdateBindings();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;_manager.CultureChangeFailed += (s, e) =&amp;gt; &lt;SPAN style="COLOR:#2b91af;"&gt;MessageBox&lt;/SPAN&gt;.Show(e.Error.Message);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;_manager.ChangeCulture(&lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;CultureInfo&lt;/SPAN&gt;((sender &lt;SPAN style="COLOR:blue;"&gt;as&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;FrameworkElement&lt;/SPAN&gt;).Tag.ToString()));&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;When the app starts up, you see this:&lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH:500px;HEIGHT:330px;" title="Dynamic Localization (English)" alt="Dynamic Localization (English)" src="http://www.wintellect.com/CS/photos/prosise/images/15514/500x330.aspx" width=500 height=330&gt;&lt;/P&gt;
&lt;P&gt;And when you click the Spanish button, you see this:&lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH:500px;HEIGHT:329px;" title="Dynamic Localization (2)" alt="Dynamic Localization (2)" src="http://www.wintellect.com/CS/photos/prosise/images/15515/500x329.aspx" width=500 height=329&gt;&lt;/P&gt;
&lt;P&gt;The application XAP contains a single RESX file (Resources.resx) containing strings for the default language (English). Strings for other languages live in a separate XAP named ExternalResources.xap. Clicking one of the language buttons executes a call to LocalizationManager.ChangeCulture, which does the following:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV&gt;Downloads ExternalResources.xap if it hasn’t been downloaded before, and sets a flag to prevent it from being downloaded again&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;Extracts all satellite assemblies from the XAP and loads them into the appdomain&lt;/LI&gt;
&lt;LI&gt;Changes the culture by assigning the specified CultureInfo to the CurrentCulture and CurrentUICulture properties of the current thread&lt;/LI&gt;
&lt;LI&gt;Fires a CultureChanged event to let you know that the culture has changed&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;My CultureChanged event handler calls UpdateBindings on the ObservableResources object, forcing the bindings that provide data to my TextBlock and Button elements to be reevaluated. Thus, the UI updates automatically.&lt;/P&gt;
&lt;P&gt;That’s the crux of the solution, and, of course, there are details that I haven’t covered. I didn’t make my helper classes thread-safe, because I’m assuming that they’ll only be called from the UI thread. If you’d like to see the entire solution, you can &lt;A title=DynamicLocalizationDemo href="http://www.wintellect.com/downloads/dynamiclocalizationdemo.zip"&gt;download it from Wintellect’s Web site&lt;/A&gt;. It’s not the final word on Silverlight localization (not by a long shot), but it’s a big step in the right direction.&lt;/P&gt;&lt;img src="http://www.wintellect.com/CS/aggbug.aspx?PostID=15513" width="1" height="1"&gt;</description></item><item><title>Dynamic XAP Discovery with Silverlight MEF</title><link>http://www.wintellect.com/CS/blogs/jprosise/archive/2010/06/17/dynamic-xap-discovery-with-silverlight-mef.aspx</link><pubDate>Thu, 17 Jun 2010 12:03:00 GMT</pubDate><guid isPermaLink="false">c9b5046a-91b6-4822-a57a-d848b8cb6435:15359</guid><dc:creator>jprosise</dc:creator><slash:comments>7</slash:comments><comments>http://www.wintellect.com/CS/blogs/jprosise/comments/15359.aspx</comments><wfw:commentRss>http://www.wintellect.com/CS/blogs/jprosise/commentrss.aspx?PostID=15359</wfw:commentRss><description>&lt;P&gt;I've spent copious amounts&amp;nbsp;of time lately digging into Silverlight 4's new Managed Extensibility Framework (MEF) and seem to find new uses for it every day. I love the fact that you can download a remote XAP file and import all of its exported parts with basically two lines of code:&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#2b91af;FONT-SIZE:10pt;"&gt;DeploymentCatalog&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt; dc = &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;DeploymentCatalog&lt;/SPAN&gt;(&lt;SPAN style="COLOR:#a31515;"&gt;"MoreWidgets.xap"&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;dc.DownloadAsync();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;What's missing, it seems, is a mechanism to dynamically discover the XAPs that are available on the server. If I'm using MEF to support a plug-in architecture, for example, I might want to drop a XAP containing a new plug-in into a folder on the server and have the plug-in automatically show up in my browser the next time the application runs.&lt;/P&gt;
&lt;P&gt;MEF won't do that on its own, but it will if you lend it a helping hand. After discussing various ways to do dynamic discovery in MEF with &lt;A title="Jeremy Likness's Blog" href="http://www.wintellect.com/CS/blogs/jlikness/default.aspx" target=_blank&gt;Jeremy Likness&lt;/A&gt;, I wrote a sample to demonstrate a technique based on passing InitParams to the Silverlight control. The technique is pretty simple.&lt;/P&gt;
&lt;P&gt;You begin by modifying the ASPX file that hosts your Silverlight application. First, you add an empty InitParams &amp;lt;params&amp;gt; element to the &amp;lt;object&amp;gt; element that instantiates the Silverlight control, and you include an ID and a runat="server" attribute so you can manipulate the element from server-side code:&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:maroon;FONT-SIZE:10pt;"&gt;param&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt; &lt;SPAN style="COLOR:red;"&gt;name&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;="initParams"&lt;/SPAN&gt; &lt;SPAN style="COLOR:red;"&gt;id&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;="ip"&lt;/SPAN&gt; &lt;SPAN style="COLOR:red;"&gt;runat&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;="server"&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Next, you add the following C#&amp;nbsp;code to the ASPX file:&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;private&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt; &lt;SPAN style="COLOR:blue;"&gt;void&lt;/SPAN&gt; Page_Load(&lt;SPAN style="COLOR:blue;"&gt;object&lt;/SPAN&gt; sender, &lt;SPAN style="COLOR:#2b91af;"&gt;EventArgs&lt;/SPAN&gt; e)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;StringBuilder&lt;/SPAN&gt; sb = &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;StringBuilder&lt;/SPAN&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;DirectoryInfo&lt;/SPAN&gt; di = &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;DirectoryInfo&lt;/SPAN&gt;(Server.MapPath(&lt;SPAN style="COLOR:#a31515;"&gt;"ClientBin"&lt;/SPAN&gt;));&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-ansi-language:FR;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;FileInfo&lt;/SPAN&gt;[] files = di.GetFiles(&lt;SPAN style="COLOR:#a31515;"&gt;"*.xap"&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-ansi-language:FR;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;foreach&lt;/SPAN&gt; (&lt;SPAN style="COLOR:#2b91af;"&gt;FileInfo&lt;/SPAN&gt; file &lt;SPAN style="COLOR:blue;"&gt;in&lt;/SPAN&gt; files)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;sb.Append(file.Name);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;sb.Append(&lt;SPAN style="COLOR:#a31515;"&gt;"=,"&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ip.Attributes.Add(&lt;SPAN style="COLOR:#a31515;"&gt;"value"&lt;/SPAN&gt;, sb.ToString());&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;This little piece of code enumerates the XAP files in ClientBin and writes them to the &amp;lt;object&amp;gt; element as InitParams. The resulting &amp;lt;param&amp;gt; element might look like this:&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:white;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-fareast-font-family:'Times New Roman';"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:maroon;FONT-SIZE:10pt;mso-fareast-font-family:'Times New Roman';"&gt;param&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-fareast-font-family:'Times New Roman';"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;mso-fareast-font-family:'Times New Roman';"&gt;id&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-fareast-font-family:'Times New Roman';"&gt;="ip" &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;mso-fareast-font-family:'Times New Roman';"&gt;name&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-fareast-font-family:'Times New Roman';"&gt;="initParams" &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;mso-fareast-font-family:'Times New Roman';"&gt;value&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-fareast-font-family:'Times New Roman';"&gt;="Widgets.xap=,MoreWidgets.xap=,YetMoreWidgets.xap=,"&amp;gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:maroon;FONT-SIZE:10pt;mso-fareast-font-family:'Times New Roman';"&gt;param&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-fareast-font-family:'Times New Roman';"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;
&lt;P&gt;The final step is to add logic to your Silverlight app to process InitParams and turn each XAP file listed there into a DeploymentCatalog that begins downloading when the app starts up. Here's how I did it:&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#2b91af;FONT-SIZE:10pt;"&gt;AggregateCatalog&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt; catalog = &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;AggregateCatalog&lt;/SPAN&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;foreach&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt; (&lt;SPAN style="COLOR:blue;"&gt;string&lt;/SPAN&gt; uri &lt;SPAN style="COLOR:blue;"&gt;in&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;Application&lt;/SPAN&gt;.Current.Host.InitParams.Keys)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#2b91af;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;DeploymentCatalog&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt; dc = &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;DeploymentCatalog&lt;/SPAN&gt;(uri);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;catalog.Catalogs.Add(dc);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;dc.DownloadAsync();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#2b91af;FONT-SIZE:10pt;"&gt;CompositionHost&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;.Initialize(catalog);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#2b91af;FONT-SIZE:10pt;"&gt;CompositionInitializer&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;.SatisfyImports(&lt;SPAN style="COLOR:blue;"&gt;this&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;
&lt;P&gt;In real life, you'd probably want to process DownloadCompleted events to make sure the XAPs are downloaded successfully. And, of course, you'll need to have recomposition enabled on your imports so the new exports will show up as the downloads complete.&lt;/P&gt;&lt;img src="http://www.wintellect.com/CS/aggbug.aspx?PostID=15359" width="1" height="1"&gt;</description></item><item><title>Understanding Input Scope in Silverlight for Windows Phone</title><link>http://www.wintellect.com/CS/blogs/jprosise/archive/2010/05/11/understanding-input-scope-in-silverlight-for-windows-phone.aspx</link><pubDate>Tue, 11 May 2010 12:36:00 GMT</pubDate><guid isPermaLink="false">c9b5046a-91b6-4822-a57a-d848b8cb6435:14069</guid><dc:creator>jprosise</dc:creator><slash:comments>2</slash:comments><comments>http://www.wintellect.com/CS/blogs/jprosise/comments/14069.aspx</comments><wfw:commentRss>http://www.wintellect.com/CS/blogs/jprosise/commentrss.aspx?PostID=14069</wfw:commentRss><description>&lt;P&gt;If you write applications for Silverlight for Windows Phone, one of the features you quickly become familiar with is the Software Input Panel, or SIP. The SIP is the virtual keyboard that appears when a text-input control such as a TextBox gets the input focus. You don't have to do anything to make the SIP appear; that happens automatically. But you can lend Silverlight a hand by specifying an input scope for each text-input control that you create. This enables the runtime to stylize the SIP to match the type of data you expect the user to enter.&lt;/P&gt;
&lt;P&gt;You specify an input scope on a per-control basis by assigning a value to the control's InputScope property. To demonstrate, I created a new Silverlight for Windows Phone project and added the following TextBlock and TextBox declarations to a vertical StackPanel in MainPage.xaml:&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;TextBlock&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; Text&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="Name"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; Margin&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="12,0,0,0" &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt;Style&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;StaticResource&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; PhoneTextNormalStyle&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;}" /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;TextBox&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; InputScope&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="Default"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; Style&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;StaticResource&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; PhoneTextBoxStyle&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;}" /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;TextBlock&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; Text&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="E-Mail Address"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; Margin&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="12,0,0,0" &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt;Style&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;StaticResource&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; PhoneTextNormalStyle&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;}" /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;TextBox&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; InputScope&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="EmailSmtpAddress" &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt;Style&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;StaticResource&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; PhoneTextBoxStyle&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;}" /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;TextBlock&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; Text&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="Phone Number"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; Margin&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="12,0,0,0" &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt;Style&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;StaticResource&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; PhoneTextNormalStyle&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;}" /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;TextBox&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; InputScope&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="TelephoneNumber" &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt;Style&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;StaticResource&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; PhoneTextBoxStyle&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;}" /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;TextBlock&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; Text&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="Blog Url"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; Margin&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="12,0,0,0" &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt;Style&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;StaticResource&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; PhoneTextNormalStyle&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;}" /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;TextBox&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; InputScope&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="Url"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt; &lt;SPAN style="COLOR:red;"&gt;Style&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="COLOR:#a31515;"&gt;StaticResource&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt; PhoneTextBoxStyle&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;}" /&amp;gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;When you run the application and the "Name" box has the focus, the UI looks like this:&lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH:190px;HEIGHT:375px;" title="Default InputScope" alt="Default InputScope" src="http://www.wintellect.com/CS/photos/prosise/images/14065/190x375.aspx" width=190 height=375&gt;&lt;/P&gt;
&lt;P&gt;When the "E-Mail Address" box has the focus, the SIP changes slightly to include "@" and ".com" keys:&lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH:190px;HEIGHT:375px;" title="E-Mail InputScope" alt="E-Mail InputScope" src="http://www.wintellect.com/CS/photos/prosise/images/14066/190x375.aspx" width=190 height=375&gt;&lt;/P&gt;
&lt;P&gt;And when the "Phone Number" box&amp;nbsp;has the focus, the SIP morphs into a telephone keypad:&lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH:190px;HEIGHT:375px;" title="Telephone InputScope" alt="Telephone InputScope" src="http://www.wintellect.com/CS/photos/prosise/images/14067/190x375.aspx" width=190 height=375&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;SIPs differ not only in appearance but in behavior. For example, the Default SIP does little in the way of helping the user enter text. But setting InputScope to "Text" turns on auto-capitalization, auto-completion, and other helpful features.&lt;/P&gt;
&lt;P&gt;The current Silverlight for Windows Phone CTP includes more than 60 InputScopes. Some of them, such as Bopomofo and KatakanaHalfWidth, you'll probably never use. A handful, including Xml and RegularExpression,&amp;nbsp;generate runtime exceptions. (This is, after all, a preview release.) But&amp;nbsp;others, such as Text and TelephoneNumber, are extraordinarily useful and will probably be used by a majority of developers.&lt;/P&gt;
&lt;P&gt;You can view a list of InputScopes in IntelliSense&amp;nbsp;if you use the more verbose property-element syntax to specify an InputScope name:&lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH:508px;HEIGHT:246px;" title="InputScope IntelliSense" alt="InputScope IntelliSense" src="http://www.wintellect.com/CS/photos/prosise/images/14070/original.aspx" width=508 height=246&gt;&lt;/P&gt;
&lt;P&gt;You can use reflection to generate a list of InputScopes in code:&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#2b91af;FONT-SIZE:10pt;"&gt;List&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&amp;lt;&lt;SPAN style="COLOR:blue;"&gt;string&lt;/SPAN&gt;&amp;gt; names = &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;List&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR:blue;"&gt;string&lt;/SPAN&gt;&amp;gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;for&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt; (&lt;SPAN style="COLOR:blue;"&gt;int&lt;/SPAN&gt; i = -10; i &amp;lt; 100; i++)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;if&lt;/SPAN&gt; (&lt;SPAN style="COLOR:#2b91af;"&gt;Enum&lt;/SPAN&gt;.IsDefined(&lt;SPAN style="COLOR:blue;"&gt;typeof&lt;/SPAN&gt;(&lt;SPAN style="COLOR:#2b91af;"&gt;InputScopeNameValue&lt;/SPAN&gt;), i))&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;names.Add(&lt;SPAN style="COLOR:#2b91af;"&gt;Enum&lt;/SPAN&gt;.GetName(&lt;SPAN style="COLOR:blue;"&gt;typeof&lt;/SPAN&gt;(&lt;SPAN style="COLOR:#2b91af;"&gt;InputScopeNameValue&lt;/SPAN&gt;), i));&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT:115%;FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-ansi-language:EN-US;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-bidi-language:AR-SA;mso-fareast-language:EN-US;"&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;You can even assign an InputScope to a control programmatically:&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;MyTextBox.InputScope = &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;InputScope&lt;/SPAN&gt;()&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { Names = { &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;InputScopeName&lt;/SPAN&gt;() { NameValue = &lt;SPAN style="COLOR:#a31515;"&gt;"Text"&lt;/SPAN&gt; } } };&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Using InputScope to produce context-aware SIPs improves the user experience. Use them liberally if you build phone applications that support keyboard data entry!&lt;/P&gt;&lt;img src="http://www.wintellect.com/CS/aggbug.aspx?PostID=14069" width="1" height="1"&gt;</description></item><item><title>Understanding Page Orientation in Silverlight for Windows Phone</title><link>http://www.wintellect.com/CS/blogs/jprosise/archive/2010/05/10/understanding-page-orientation-in-silverlight-for-windows-phone.aspx</link><pubDate>Mon, 10 May 2010 11:05:00 GMT</pubDate><guid isPermaLink="false">c9b5046a-91b6-4822-a57a-d848b8cb6435:14023</guid><dc:creator>jprosise</dc:creator><slash:comments>3</slash:comments><comments>http://www.wintellect.com/CS/blogs/jprosise/comments/14023.aspx</comments><wfw:commentRss>http://www.wintellect.com/CS/blogs/jprosise/commentrss.aspx?PostID=14023</wfw:commentRss><description>&lt;P&gt;At MIX this year, Silverlight developers were handed a real treat: their first look at Silverlight for Windows Phone. Silverlight is the primary platform that developers will use to write applications for the new Windows phone, which will debut later this year. I can't remember being this excited about a platform since...well, since Silverlight 1.0. If you're an iPhone user like me, and you'd love to write iPhone apps but don't care for&amp;nbsp;Objective-C (soooooo 1990s!), Silverlight for Windows Phone is the hottest thing since color TV. Just think: you can leverage the skills you acquired writing Silverlight apps for the browser to write Silverlight apps for phones. You already know 90% of what you need to know; all you have to do is learn about the relatively few differences between Silverlight for the browser and Silverlight for the phone.&lt;/P&gt;
&lt;P&gt;One of those differences is page orientation. When you write browser-based (or out-of-browser) Silverlight apps, you don't have to worry about a user turning&amp;nbsp;his or her&amp;nbsp;monitor on its side. The phone, of course, is different. Silverlight for Windows Phone introduces the concept of page orientation, which tells you whether the phone is upright, upside-down, or on its side. Most apps don't have to do much&amp;nbsp;to rotate the entire display when the phone itself rotates; Silverlight does that for them. But some apps will need to know when the phone has rotated so they can customize the UI programmatically.&lt;/P&gt;
&lt;P&gt;To demonstrate, I built a simple app that displays Dooby the Penguin:&lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH:190px;HEIGHT:375px;" title=Portrait alt=Portrait src="http://www.wintellect.com/CS/photos/prosise/images/14018/190x375.aspx" width=190 height=375&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;When you create a new Silverlight for Windows Phone application, Visual Studio includes the following line of code in MainPage's constructor in MainPage.xaml.cs:&lt;/P&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-ansi-language:FR;"&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-ansi-language:FR;"&gt;SupportedOrientations = &lt;SPAN style="COLOR:#2b91af;"&gt;SupportedPageOrientation&lt;/SPAN&gt;.Portrait | &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-ansi-language:FR;"&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;SupportedPageOrientation&lt;/SPAN&gt;.Landscape;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/SPAN&gt;
&lt;P&gt;This tells the runtime that the application supports both portrait and landscape orientations, and when the phone is rotated onto a side, Silverlight automatically rotates the display:&lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH:400px;HEIGHT:201px;" title="Landscape Rotated" alt="Landscape Rotated" src="http://www.wintellect.com/CS/photos/prosise/images/14020/500x252.aspx" width=400 height=201&gt;&lt;/P&gt;
&lt;P&gt;When you design a Silverlight for Windows Phone application that supports portrait and landscape modes, you strive to&amp;nbsp;create a XAML UI that produces the look you want in either orientation without code intervention. In this example, because the penguin is positioned inside a Grid cell, it is automatically centered in the display whether the phone is upright or on its side.&lt;/P&gt;
&lt;P&gt;If you don't want the display to rotate when the orientation changes, you can remove Landscape from the page's supported orientations:&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-ansi-language:FR;"&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-ansi-language:FR;"&gt;SupportedOrientations = &lt;SPAN style="COLOR:#2b91af;"&gt;SupportedPageOrientation&lt;/SPAN&gt;.Portrait&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-ansi-language:FR;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;/SPAN&gt;Now turning the phone on its side will produce this:&lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH:400px;HEIGHT:201px;" title="Landscape Unrotated" alt="Landscape Unrotated" src="http://www.wintellect.com/CS/photos/prosise/images/14019/500x253.aspx" width=400 height=201&gt;&lt;/P&gt;
&lt;P&gt;The more interesting case is when code intervention is required to achieve the look you want when the orientation changes. For example, suppose you want to display one penguin in portrait mode, but two penguins in landscape mode:&lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH:400px;HEIGHT:201px;" title="Landscape Customized" alt="Landscape Customized" src="http://www.wintellect.com/CS/photos/prosise/images/14021/500x252.aspx" width=400 height=201&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If SupportedOrientations is &lt;FONT face=Consolas&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;SupportedPageOrientation&lt;/SPAN&gt;.Portrait | &lt;SPAN style="COLOR:#2b91af;"&gt;SupportedPageOrientation&lt;/SPAN&gt;.Landscape &lt;/FONT&gt;(or simply &lt;FONT face=Consolas&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;SupportedPageOrientation&lt;/SPAN&gt;.PortraitOrLandscape&lt;/FONT&gt;), the page fires an OrientationChanging event when&amp;nbsp;a turn begins and an OrientationChanged event once the turn is complete. You can use these events&amp;nbsp;to modify the XAML UI. For example, I structured my XAML this way to display one penguin in portrait mode and two in landscape mode:&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;Grid&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; x&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="LayoutRoot"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; Background&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;StaticResource&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; PhoneBackgroundBrush&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;}"&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;Grid.RowDefinitions&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;RowDefinition&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; Height&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="Auto"/&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;RowDefinition&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; Height&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="*"/&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;Grid.RowDefinitions&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:green;FONT-SIZE:10pt;"&gt;&amp;lt;!--TitleGrid is the name of the application and page title--&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;Grid&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; x&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="TitleGrid"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; Grid.Row&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="0"&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;TextBlock&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; Text&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="ORIENTATION DEMO"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; x&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="textBlockPageTitle"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Style&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;StaticResource&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; PhoneTextPageTitle1Style&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;}"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;HorizontalAlignment&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="Center"/&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;Grid&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:green;FONT-SIZE:10pt;"&gt;&amp;lt;!--ContentGrid is empty. Place new content here--&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;Grid&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; x&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="ContentGrid"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; Grid.Row&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="1"&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;Grid&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;Grid.ColumnDefinitions&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;ColumnDefinition&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; Width&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="*" /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;ColumnDefinition&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; Width&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="0"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; x&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="SecondColumn" /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;Grid.ColumnDefinitions&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;local&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;PenguinUserControl&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; Grid.Column&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="0" /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;local&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;PenguinUserControl&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; Grid.Column&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="1"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Visibility&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="Collapsed"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt; x&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;="SecondPenguin" /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;Grid&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;Grid&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;"&gt;Grid&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Then I did this in the code-behind:&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt; &lt;SPAN style="COLOR:blue;"&gt;partial&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;class&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;MainPage&lt;/SPAN&gt; : &lt;SPAN style="COLOR:#2b91af;"&gt;PhoneApplicationPage&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;public&lt;/SPAN&gt; MainPage()&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;InitializeComponent();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;SupportedOrientations = &lt;SPAN style="COLOR:#2b91af;"&gt;SupportedPageOrientation&lt;/SPAN&gt;.Portrait |&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR:#2b91af;"&gt;SupportedPageOrientation&lt;/SPAN&gt;.Landscape;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;this&lt;/SPAN&gt;.OrientationChanged +=&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;EventHandler&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR:#2b91af;"&gt;OrientationChangedEventArgs&lt;/SPAN&gt;&amp;gt;(OnOrientationChanged);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;void&lt;/SPAN&gt; OnOrientationChanged(&lt;SPAN style="COLOR:blue;"&gt;object&lt;/SPAN&gt; sender, &lt;SPAN style="COLOR:#2b91af;"&gt;OrientationChangedEventArgs&lt;/SPAN&gt; e)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;if&lt;/SPAN&gt; ((e.Orientation &amp;amp; &lt;SPAN style="COLOR:#2b91af;"&gt;PageOrientation&lt;/SPAN&gt;.Landscape) != 0)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;SecondPenguin.Visibility = &lt;SPAN style="COLOR:#2b91af;"&gt;Visibility&lt;/SPAN&gt;.Visible;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;SecondColumn.Width = &lt;SPAN style="COLOR:#2b91af;"&gt;GridLength&lt;/SPAN&gt;.Auto;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;else&lt;/SPAN&gt; &lt;SPAN style="COLOR:green;"&gt;// Portrait&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;SecondPenguin.Visibility = &lt;SPAN style="COLOR:#2b91af;"&gt;Visibility&lt;/SPAN&gt;.Collapsed;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;SecondColumn.Width = &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;GridLength&lt;/SPAN&gt;(0);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT:115%;FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;mso-bidi-language:AR-SA;mso-fareast-language:EN-US;"&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;The Orientation property of the OrientationChangedEventArgs passed to the event handler is a PageOrientation object, which is defined this way in the Silverlight for Windows Phone runtime:&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt; &lt;SPAN style="COLOR:blue;"&gt;enum&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;PageOrientation&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Landscape = 2,&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;LandscapeLeft = 0x12,&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;LandscapeRight = 0x22,&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;None = 0,&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Portrait = 1,&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;PortraitDown = 9,&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;PortraitUp = 5&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT:115%;FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-US;mso-bidi-language:AR-SA;mso-fareast-language:EN-US;"&gt;}&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;It follows that you can determine exactly what the phone's orientation is (upright, upside-down, on its left side, or on its right side) by comparing e.Orientation to specific values such as PortraitUp and LandscapeRight. But the more common case is that you simply want to know whether the phone is oriented vertically or horizontally. You can check for the latter by ANDing e.Orientation with Landscape and checking for a nonzero value. That's precisely what I'm doing in the OnOrientationChanged method above.&lt;/P&gt;
&lt;P&gt;Interestingly enough, you can't determine the phone's orientation by checking the ActualWidth and ActualHeight properties of the Silverlight control or any other control; these properties&amp;nbsp;don't change when the orientation changes. (That's how it works in the Silverlight for Windows Phone CTP, anyway; I can't guarantee that will be the case in the final version.) Nor does there appear to be any way to determine what the phone's orientation is at startup. However, if the application starts up in landscape mode, the page immediately fires its OrientationChanging and OrientationChanged events, so you can design your UI to assume that the application starts up in portrait mode and let your event handlers adjust the display if in fact it starts up in landscape mode.&lt;/P&gt;&lt;img src="http://www.wintellect.com/CS/aggbug.aspx?PostID=14023" width="1" height="1"&gt;</description></item><item><title>Silverlight 4 is Here!</title><link>http://www.wintellect.com/CS/blogs/jprosise/archive/2010/04/17/silverlight-4-is-here.aspx</link><pubDate>Sat, 17 Apr 2010 04:51:00 GMT</pubDate><guid isPermaLink="false">c9b5046a-91b6-4822-a57a-d848b8cb6435:13393</guid><dc:creator>jprosise</dc:creator><slash:comments>0</slash:comments><comments>http://www.wintellect.com/CS/blogs/jprosise/comments/13393.aspx</comments><wfw:commentRss>http://www.wintellect.com/CS/blogs/jprosise/commentrss.aspx?PostID=13393</wfw:commentRss><description>&lt;P&gt;Silverlight 4 shipped this week, and you can download it along with all the tools you need to develop for it from the &lt;A title=Silverlight.net href="http://www.silverlight.net/" target=_blank&gt;Silverlight Web site&lt;/A&gt;. Silverlight 4 represents a milestone of sorts in that it adds the features you need to build line-of-business (LOB) apps that run inside or outside the browser. Among the most exciting new features is support for "trusted applications" that run outside the browser and enjoy an expanded sandbox.&lt;/P&gt;
&lt;P&gt;I blogged about Silverlight 4 a lot during the beta cycle and will be blogging more in weeks to come. Right now I'm in the middle of several weeks of travel (much of it international) and am so jet-lagged I can barely stay awake when I'm not at work!&lt;/P&gt;
&lt;P&gt;In little more than a week, I'll be delivering a session on Silverlight 4 at &lt;A title=Devscovery href="http://www.devscovery.com/" target=_blank&gt;Devscovery&lt;/A&gt; in New York. I would love to have you attend the session. Plus, Charles Petzold will deliver a special session on using Silverlight to develop for the Windows phone. I'll bet that session will be jam-packed, and I plan to be there early to secure a seat!&lt;/P&gt;
&lt;P&gt;I have also agreed to deliver a &lt;A title="Silverlight Precon at TechEd" href="http://northamerica.msteched.com/preconferenceseminars?fbid=S9smEGTsurK" target=_blank&gt;Silverlight 4 precon&lt;/A&gt; at Microsoft TechEd in New Orleans in June. Help me make this session SRO by signing up to attend! The buzz around Silverlight is huge, and I have some cool code samples to share that exploit the very best features Silverlight 4 has to offer. I intend to have some cool phone samples ready, too, to make this the most exciting TechEd precon I've delivered in years.&lt;/P&gt;
&lt;P&gt;See you in New York and New Orleans!&lt;/P&gt;&lt;img src="http://www.wintellect.com/CS/aggbug.aspx?PostID=13393" width="1" height="1"&gt;</description></item><item><title>Asynchronous Controllers in ASP.NET MVC 2</title><link>http://www.wintellect.com/CS/blogs/jprosise/archive/2010/03/29/asynchronous-controllers-in-asp-net-mvc-2.aspx</link><pubDate>Mon, 29 Mar 2010 19:19:00 GMT</pubDate><guid isPermaLink="false">c9b5046a-91b6-4822-a57a-d848b8cb6435:12904</guid><dc:creator>jprosise</dc:creator><slash:comments>10</slash:comments><comments>http://www.wintellect.com/CS/blogs/jprosise/comments/12904.aspx</comments><wfw:commentRss>http://www.wintellect.com/CS/blogs/jprosise/commentrss.aspx?PostID=12904</wfw:commentRss><description>&lt;P&gt;I've been working with version 2 of Microsoft's ASP.NET MVC framework and have found a lot&amp;nbsp;to like about it, particularly the new support for client-side validation based on data annotations. But the feature that excites me the most is support for asynchronous controllers and controller methods. Asynchronous pages have always been the secret to writing ASP.NET apps that scale, and now we can apply the same asynchronous magic to I/O-bound methods in our MVC controllers, too.&lt;/P&gt;
&lt;P&gt;As an example, suppose you have a simple controller with a synchronous action method that reaches out to Abcnews.com to fetch an RSS feed containing top news stories:&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt; &lt;SPAN style="COLOR:blue;"&gt;class&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;HomeController&lt;/SPAN&gt; : &lt;SPAN style="COLOR:#2b91af;"&gt;Controller&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;ActionResult&lt;/SPAN&gt; Index()&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;RssFeed&lt;/SPAN&gt; feed = &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;RssFeed&lt;/SPAN&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;IEnumerable&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR:#2b91af;"&gt;SyndicationItem&lt;/SPAN&gt;&amp;gt; items =&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;feed.GetRssFeed(&lt;SPAN style="COLOR:#a31515;"&gt;"http://feeds.abcnews.com/abcnews/topstories"&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ViewData[&lt;SPAN style="COLOR:#a31515;"&gt;"SyndicationItems"&lt;/SPAN&gt;] = items;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;return&lt;/SPAN&gt; View();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;The Index view could then render the SyndicationItems into hyperlinks by doing this:&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;BACKGROUND:yellow;FONT-SIZE:10pt;mso-highlight:yellow;"&gt;&amp;lt;%&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt; &lt;SPAN style="COLOR:blue;"&gt;foreach&lt;/SPAN&gt; (&lt;SPAN style="COLOR:#2b91af;"&gt;SyndicationItem&lt;/SPAN&gt; item &lt;SPAN style="COLOR:blue;"&gt;in&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;(&lt;SPAN style="COLOR:#2b91af;"&gt;IEnumerable&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR:#2b91af;"&gt;SyndicationItem&lt;/SPAN&gt;&amp;gt;)ViewData[&lt;SPAN style="COLOR:#a31515;"&gt;"SyndicationItems"&lt;/SPAN&gt;]) { &lt;SPAN style="BACKGROUND:yellow;mso-highlight:yellow;"&gt;%&amp;gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:maroon;"&gt;a&lt;/SPAN&gt; &lt;SPAN style="COLOR:red;"&gt;href&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;="&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND:yellow;mso-highlight:yellow;"&gt;&amp;lt;%&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;=&lt;/SPAN&gt; item.Id &lt;SPAN style="BACKGROUND:yellow;mso-highlight:yellow;"&gt;%&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;"&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND:yellow;mso-highlight:yellow;"&gt;&amp;lt;%&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;=&lt;/SPAN&gt; item.Title.Text &lt;SPAN style="BACKGROUND:yellow;mso-highlight:yellow;"&gt;%&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR:maroon;"&gt;a&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;&amp;gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:maroon;"&gt;br&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;/&amp;gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;BACKGROUND:yellow;FONT-SIZE:10pt;mso-highlight:yellow;"&gt;&amp;lt;%&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt; } &lt;SPAN style="BACKGROUND:yellow;mso-highlight:yellow;"&gt;%&amp;gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;The problem with this approach is that once the call to Abcnews.com goes out on the wire, you have no control over how long it will take to return. If the controller is synchronous, the request-processing thread must wait for the call to complete. Meanwhile, it's not available to process other calls, and with a finite-sized CLR thread pool to draw from, you can quickly run out of threads.&lt;/P&gt;
&lt;P&gt;Asynchronous controllers offer an elegant and (relatively) simple solution to the problem of I/O-bound threads. In MVC 2, you can rewrite the controller this way:&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt; &lt;SPAN style="COLOR:blue;"&gt;class&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;HomeController&lt;/SPAN&gt; : &lt;SPAN style="COLOR:#2b91af;"&gt;AsyncController&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;void&lt;/SPAN&gt; IndexAsync()&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;AsyncManager.OutstandingOperations.Increment();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;RssFeed&lt;/SPAN&gt; feed = &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;RssFeed&lt;/SPAN&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;feed.GetRssFeedAsyncCompleted += (s, e) =&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;AsyncManager.Parameters[&lt;SPAN style="COLOR:#a31515;"&gt;"items"&lt;/SPAN&gt;] = e.Items;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;AsyncManager.OutstandingOperations.Decrement();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;};&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;feed.GetRssFeedAsync(&lt;SPAN style="COLOR:#a31515;"&gt;"http://feeds.abcnews.com/abcnews/topstories"&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;ActionResult&lt;/SPAN&gt; IndexCompleted(&lt;SPAN style="COLOR:#2b91af;"&gt;IEnumerable&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR:#2b91af;"&gt;SyndicationItem&lt;/SPAN&gt;&amp;gt; items)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ViewData[&lt;SPAN style="COLOR:#a31515;"&gt;"SyndicationItems"&lt;/SPAN&gt;] = items;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;return&lt;/SPAN&gt; View();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;}&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;
&lt;P&gt;Observe that the&amp;nbsp;controller class now derives from AsyncController rather than Controller. In addition, the Index action method has been split into methods named IndexAsync and IndexCompleted, which are analagous to the Begin and End methods in asynchronous pages. Logically, the controller still exposes a single action method named Index. But physically, the method implementation has been broken up using a variation on the async pattern used throughout the .NET framework.&lt;/P&gt;
&lt;P&gt;When the Index action is invoked, the MVC framework calls IndexAsync. That method makes an asynchronous call into the model (note that it now calls GetRssFeedAsync rather than GetRssFeed) to fetch the RSS feed asynchronously. When GetRssFeedAsync completes, the controller first creates the parameter passed to IndexCompleted by adding an item named "items" to AsyncManager's Parameters collection. Then it calls AsyncManager.OutstandingOperations.Decrement to reduce the&amp;nbsp;count of "outstanding operations" (read: asynchronous tasks) from 1 to 0. When the count reaches 0, AsyncManager knows that all asynchronous tasks are complete. It responds by letting the framework know, and the framework responds by calling IndexCompleted. One aspect of this schema is that an asynchronous action method could launch several asynchronous tasks in parallel, but the action itself wouldn't complete&amp;nbsp;until all&amp;nbsp;asynchronous tasks&amp;nbsp;are complete. Moreover, the asynchronous tasks don't have to know about one another. Each tasks simply does its thing, decrements the operation count when it's done, and lets the framework do the rest.&lt;/P&gt;
&lt;P&gt;These code samples come from a&amp;nbsp;project that I created to demonstrate the basics of asynchronous MVC controllers. Here's the application running in IE and showing the day's top headlines from a live RSS feed:&lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH:500px;HEIGHT:366px;" title="MVC Async Demo" alt="MVC Async Demo" src="http://www.wintellect.com/CS/photos/prosise/images/12907/500x366.aspx" width=500 height=366&gt;&lt;/P&gt;
&lt;P&gt;But rather than take my word for it, &lt;A title="MVC Async Demo" href="http://www.wintellect.com/downloads/MvcAsyncDemo.zip"&gt;download the sample code&lt;/A&gt; and try it&amp;nbsp;yourself!&lt;/P&gt;&lt;img src="http://www.wintellect.com/CS/aggbug.aspx?PostID=12904" width="1" height="1"&gt;</description></item><item><title>Silverlight 4's New INavigationContentLoader Interface</title><link>http://www.wintellect.com/CS/blogs/jprosise/archive/2010/02/08/silverlight-4-s-new-inavigationcontentloader-interface.aspx</link><pubDate>Mon, 08 Feb 2010 13:37:00 GMT</pubDate><guid isPermaLink="false">c9b5046a-91b6-4822-a57a-d848b8cb6435:12063</guid><dc:creator>jprosise</dc:creator><slash:comments>3</slash:comments><comments>http://www.wintellect.com/CS/blogs/jprosise/comments/12063.aspx</comments><wfw:commentRss>http://www.wintellect.com/CS/blogs/jprosise/commentrss.aspx?PostID=12063</wfw:commentRss><description>&lt;P&gt;One of the extensibility points added to the run-time in Silverlight 4 is the new INavigationContentLoader interface, which allows applications that use Silverlight's navigation framework to take control of page loading. In Silverlight 3, navigation URIs had to target XAML files containing Silverlight pages. In Silverlight 4, a navigation URI can target anything—a class name, a Web service that provides page content dynamically, or a XAML file contained in a remote XAP, for example—as long as an INavigationContentLoader implementation is present to support it.&lt;/P&gt;
&lt;P&gt;David Poll has blogged extensively about INavigationContentLoader and about the different scenarios in which it can be used. Here, for example, is a great post on using a custom content loader to &lt;A title="On-demand loading of assemblies with Silverlight Navigation" href="http://www.davidpoll.com/2010/02/01/on-demand-loading-of-assemblies-with-silverlight-navigation-revisited-for-silverlight-4-beta/" target=_blank&gt;load pages from XAPs that are downloaded on demand&lt;/A&gt;. Here's another that demonstrates how to use a custom content loader to &lt;A title="Opening up Silverlight 4 Navigation: Authentication/Authorization in an INavigationContentLoader" href="http://www.davidpoll.com/2010/01/01/opening-up-silverlight-4-navigation-authenticationauthorization-in-an-inavigationcontentloader/" target=_blank&gt;authorize access to a page&lt;/A&gt; before navigating to it. It seems there is no end to the purposes that INavigationContentLoader might serve.&lt;/P&gt;
&lt;P&gt;To demonstrate the bare-bones basics of INavigationContentLoader, I implemented one that serves a simple purpose: it appends ".xaml" to the file names of the pages targeted by navigation URIs. Rather than declare your Frame control and URI mappings this way:&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;nav&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;Frame&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;"&gt; x&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;="Main"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;"&gt; Source&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;="Home"&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;nav&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;Frame.UriMapper&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;map&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;UriMapper&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;map&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;UriMapping&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;"&gt; Uri&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;=""&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;"&gt; MappedUri&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;="/Index.xaml" /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;map&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;UriMapping&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;"&gt; Uri&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;="Home"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;"&gt; MappedUri&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;="/Index.xaml" /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;map&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;UriMapping&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;"&gt; Uri&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;="Detail/{id}"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;"&gt; MappedUri&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;="/Detail.xaml?id={id}" /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;map&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;UriMapper&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;nav&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;Frame.UriMapper&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;nav&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;Frame&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;
&lt;P&gt;With my CustomContentLoader class, you do it this way instead:&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;nav&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;Frame&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;"&gt; x&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;="Main"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;"&gt; Source&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;="Home"&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;nav&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;Frame.UriMapper&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;map&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;UriMapper&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;map&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;UriMapping&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;"&gt; Uri&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;=""&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;"&gt; MappedUri&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;="/Index" /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;map&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;UriMapping&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;"&gt; Uri&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;="Home"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;"&gt; MappedUri&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;="/Index" /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;map&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;UriMapping&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;"&gt; Uri&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;="Detail/{id}"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;"&gt; MappedUri&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;="/Detail?id={id}" /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;map&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;UriMapper&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;nav&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;Frame.UriMapper&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;nav&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;Frame.ContentLoader&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;local&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;CustomContentLoader&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt; /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;nav&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;Frame.ContentLoader&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;nav&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;Frame&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;
&lt;P&gt;Note the new ContentLoader property on the Frame control, which allows you to replace Silverlight's default content loader with a custom content loader. The default content loader is an instance of PageResourceContentLoader, which loads pages from local XAML files. My CustomContentLoader wraps an instance of PageResourceContentLoader and appends ".xaml" to target URIs before delegating to PageResourceContentLoader to do the actual loading. Here's the source code:&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt; &lt;SPAN style="COLOR:blue;"&gt;class&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;CustomContentLoader&lt;/SPAN&gt; : &lt;SPAN style="COLOR:#2b91af;"&gt;INavigationContentLoader&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;PageResourceContentLoader&lt;/SPAN&gt; _loader = &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;PageResourceContentLoader&lt;/SPAN&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;IAsyncResult&lt;/SPAN&gt; BeginLoad(&lt;SPAN style="COLOR:#2b91af;"&gt;Uri&lt;/SPAN&gt; targetUri, &lt;SPAN style="COLOR:#2b91af;"&gt;Uri&lt;/SPAN&gt; currentUri,&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;AsyncCallback&lt;/SPAN&gt; userCallback, &lt;SPAN style="COLOR:blue;"&gt;object&lt;/SPAN&gt; asyncState)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;return&lt;/SPAN&gt; _loader.BeginLoad(AddFileNameExtension(targetUri),&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;currentUri, userCallback, asyncState);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;bool&lt;/SPAN&gt; CanLoad(&lt;SPAN style="COLOR:#2b91af;"&gt;Uri&lt;/SPAN&gt; targetUri, &lt;SPAN style="COLOR:#2b91af;"&gt;Uri&lt;/SPAN&gt; currentUri)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;return&lt;/SPAN&gt; _loader.CanLoad(AddFileNameExtension(targetUri), currentUri);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;void&lt;/SPAN&gt; CancelLoad(&lt;SPAN style="COLOR:#2b91af;"&gt;IAsyncResult&lt;/SPAN&gt; asyncResult)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;_loader.CancelLoad(asyncResult);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;LoadResult&lt;/SPAN&gt; EndLoad(&lt;SPAN style="COLOR:#2b91af;"&gt;IAsyncResult&lt;/SPAN&gt; asyncResult)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;return&lt;/SPAN&gt; _loader.EndLoad(asyncResult);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;Uri&lt;/SPAN&gt; AddFileNameExtension(&lt;SPAN style="COLOR:#2b91af;"&gt;Uri&lt;/SPAN&gt; uri)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;int&lt;/SPAN&gt; index = uri.OriginalString.IndexOf(&lt;SPAN style="COLOR:#a31515;"&gt;'?'&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;if&lt;/SPAN&gt; (index == -&lt;SPAN style="COLOR:brown;"&gt;1&lt;/SPAN&gt;) &lt;SPAN style="COLOR:green;"&gt;// No query string; append extension&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;return&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;Uri&lt;/SPAN&gt;(uri.OriginalString + &lt;SPAN style="COLOR:#a31515;"&gt;".xaml"&lt;/SPAN&gt;, &lt;SPAN style="COLOR:#2b91af;"&gt;UriKind&lt;/SPAN&gt;.Relative);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;else&lt;/SPAN&gt; &lt;SPAN style="COLOR:green;"&gt;// Insert extension before query string&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;return&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;Uri&lt;/SPAN&gt;(uri.OriginalString.Insert(index, &lt;SPAN style="COLOR:#a31515;"&gt;".xaml"&lt;/SPAN&gt;), &lt;SPAN style="COLOR:#2b91af;"&gt;UriKind&lt;/SPAN&gt;.Relative);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;
&lt;P&gt;Note the asynchronous design of INavigationContentLoader.&amp;nbsp;When you implement it, you often have to implement IAsyncResult, too. I didn't have to in CustomContentLoader because I used the IAsyncResult returned by PageResourceContentLoader. While the asynchronous design complicates matters when writing a synchronous loader, it's&amp;nbsp;perfect for content loaders that load pages using Silverlight's asynchronous networking stack.&lt;/P&gt;
&lt;P&gt;This is a trivial example, but it still demonstrates the power of INavigationContentLoader. The upshot is that in Silverlight 4, navigation URIs no longer have to target local XAML files, but can be virtualized instead. Look for this to come in handy not only for application developers, but for future versions of Silverlight as well.&lt;/P&gt;&lt;img src="http://www.wintellect.com/CS/aggbug.aspx?PostID=12063" width="1" height="1"&gt;</description></item><item><title>Silverlight 4's New Notification Windows</title><link>http://www.wintellect.com/CS/blogs/jprosise/archive/2010/01/09/silverlight-4-s-new-notification-windows.aspx</link><pubDate>Sat, 09 Jan 2010 13:44:00 GMT</pubDate><guid isPermaLink="false">c9b5046a-91b6-4822-a57a-d848b8cb6435:11461</guid><dc:creator>jprosise</dc:creator><slash:comments>2</slash:comments><comments>http://www.wintellect.com/CS/blogs/jprosise/comments/11461.aspx</comments><wfw:commentRss>http://www.wintellect.com/CS/blogs/jprosise/commentrss.aspx?PostID=11461</wfw:commentRss><description>&lt;P&gt;Silverlight 4 includes a slew of features designed to make out-of-browser applications richer. One of those features is notification windows, also known as “toast” windows. This feature is available to all OOBs, regardless of whether they are trusted. It is not available to applications that run inside the browser.&lt;/P&gt;
&lt;P&gt;A notification window is one that pops up in the lower right corner of the screen, similar to the ones that Outlook uses to notify users about incoming e-mails. (On the Macintosh, notification windows appear at the top of the screen rather than the bottom.) Notification windows are normally used to let the user know something important has happened. A classic use for them is to inform the user that an updated version of an out-of-browser application is available when the OOB is launched from the desktop or Start menu:&lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH:330px;HEIGHT:126px;" title="Notification window" alt="Notification window" src="http://www.wintellect.com/CS/photos/prosise/images/11460/original.aspx" width=330 height=126&gt;&lt;/P&gt;
&lt;P&gt;This notification window was created by first declaring a user control named UpdateNotification that contained the following content:&lt;/P&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;
&lt;P style="MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;Grid&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt; x&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;="LayoutRoot"&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;Border&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt; x&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;="Frame"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt; Width&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;="300"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt; Height&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;="100"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt; Background&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;="LightYellow"&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;StackPanel&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt; Orientation&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;="Vertical"&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;Border&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt; Width&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;="290"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt; Height&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;="24"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt; CornerRadius&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;="4"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt; Margin&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;="2,4,2,4"&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;Border.Background&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;LinearGradientBrush&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt; StartPoint&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;="0.5,0.0"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;EndPoint&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;="0.5,1.0"&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;GradientStop&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt; Offset&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;="0.2"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt; Color&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;="#FF1C68A0" /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;GradientStop&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt; Offset&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;="1.0"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt; Color&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;="#FF54A7E2" /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;LinearGradientBrush&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;Border.Background&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;Border.Effect&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;DropShadowEffect&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt; BlurRadius&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;="4"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt; ShadowDepth&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;="4"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;Opacity&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;="0.4" /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;Border.Effect&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;TextBlock&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt; Text&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;="Update Available"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt; FontSize&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;="12"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;FontWeight&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;="Bold"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt; Foreground&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;="White"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt; Margin&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;="4" /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;Border&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;StackPanel&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt; Orientation&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;="Horizontal"&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;Image&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt; Source&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;="Images/Update.png"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt; Width&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;="32"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt; Height&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;="34"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;Stretch&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;="Fill"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt; Margin&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;="4"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt; VerticalAlignment&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;="Top" /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;TextBlock&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt; Width&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;="240"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt; Text&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;="An updated version..."&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;FontSize&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;="11"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt; Foreground&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;="#FF202020"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt; TextWrapping&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;="Wrap"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;Margin&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;="4" /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;StackPanel&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;StackPanel&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;Border&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;Grid&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/SPAN&gt;
&lt;P style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;Then it was displayed by creating an instance of System.Windows.NotificationWindow, instantiating the user control and assigning it to the NotificationWindow’s Content property, and calling NotificationWindow.Show:&lt;/P&gt;
&lt;P style="MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#2b91af;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;NotificationWindow&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt; win = &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;NotificationWindow&lt;/SPAN&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#2b91af;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;UpdateNotification&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt; un = &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;UpdateNotification&lt;/SPAN&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;win.Width = un.Width;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;win.Height = un.Height;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;win.Content = un;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;win.Show(&lt;SPAN style="COLOR:brown;"&gt;10000&lt;/SPAN&gt;);&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:9pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;
&lt;P&gt;The parameter passed to NotificationWindow.Show is a time-out parameter that specifies how long the notification window will be displayed—in this case, 10 seconds. If desired, you can call NotificationWindow.Close to close the notification window early—for example, in response to a mouse click.&lt;/P&gt;
&lt;P&gt;Another new feature available only to OOBs is the ability to interact with host windows. In Silverlight 3, out-of-browser applications had limited control over their environment. It was not possible, for example, for an OOB to resize the window in which it was hosted.&lt;/P&gt;
&lt;P&gt;This changes in Silverlight 4 with the addition of the System.Windows.Window class and the new Application.MainWindow property. An out-of-browser application can get a reference to its window through the MainWindow property, and it can use Window properties and methods to interrogate and even modify the host window. The following code snippet resizes the host window programmatically:&lt;/P&gt;
&lt;P style="MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#2b91af;FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;Window&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt; win = &lt;SPAN style="COLOR:#2b91af;"&gt;Application&lt;/SPAN&gt;.Current.MainWindow;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;win.Width = &lt;SPAN style="COLOR:brown;"&gt;1024&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;"&gt;win.Height = &lt;SPAN style="COLOR:brown;"&gt;768&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;
&lt;P&gt;The Window class also features properties named Left and Top for repositioning host windows, WindowState for minimizing, maximizing, and restoring host windows, and TopMost for controlling the host window’s topmost state. And it includes an Activate method for bringing a host window to the foreground and assigning it the focus.&lt;/P&gt;&lt;img src="http://www.wintellect.com/CS/aggbug.aspx?PostID=11461" width="1" height="1"&gt;</description></item><item><title>Silverlight 4's New Managed Extensibility Framework</title><link>http://www.wintellect.com/CS/blogs/jprosise/archive/2010/01/04/silverlight-4-s-new-managed-extensibility-framework.aspx</link><pubDate>Mon, 04 Jan 2010 14:46:00 GMT</pubDate><guid isPermaLink="false">c9b5046a-91b6-4822-a57a-d848b8cb6435:11236</guid><dc:creator>jprosise</dc:creator><slash:comments>9</slash:comments><comments>http://www.wintellect.com/CS/blogs/jprosise/comments/11236.aspx</comments><wfw:commentRss>http://www.wintellect.com/CS/blogs/jprosise/commentrss.aspx?PostID=11236</wfw:commentRss><description>&lt;P&gt;One of the less-talked-about features of Silverlight 4 is the new Managed Extensibility Framework, or MEF.&amp;nbsp;MEF has been evolving on CodePlex for a while now. It's slated to be integrated into .NET 4.0 and Silverlight 4, and as such is something with which developers should be familiar.&lt;/P&gt;
&lt;P&gt;As its name implies, MEF is a framework for building extensible applications. It provides infrastructure for loose coupling between components and can be used&amp;nbsp;to create&amp;nbsp;composable applications—apps that pull together "parts" from various locations to compose an aggregate to present to the user. One of the key concepts in MEF is that of the catalog, which tells MEF where to&amp;nbsp;look for parts that make up an application. An application can import parts from the catalog with [Import] attributes, and parts themselves can use [Export] attributes to expose themselves to importers. That's the&amp;nbsp;big picture, and of course it ignores&amp;nbsp;hundreds of little details, but understanding these core concepts is a big help in understanding MEF as a whole.&lt;/P&gt;
&lt;P&gt;To demonstrate how Silverlight developers might use MEF in a somewhat real-world scenario, I built a sample application named MEFDemo, which you can &lt;A title="MEFDemo source code" href="http://www.wintellect.com/downloads/MEFDemo.zip"&gt;download from Wintellect's Web site&lt;/A&gt;. MEFDemo is an extensible&amp;nbsp;Silverlight 4 image editor. You load photos into it through an OpenFileDialog, and then you click buttons to apply filters of various types to the photos. Here's MEFDemo showing a photo I snapped in the Vatican a few years ago:&lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH:481px;HEIGHT:480px;" title="MEFDemo before filtering" alt="MEFDemo before filtering" src="http://www.wintellect.com/CS/photos/prosise/images/11234/481x480.aspx" width=481 height=480&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;And here's how it looked after I clicked the Blur button a few times&amp;nbsp;and then embossed the image:&lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH:481px;HEIGHT:480px;" title="MEFDemo after filtering" alt="MEFDemo after filtering" src="http://www.wintellect.com/CS/photos/prosise/images/11235/481x480.aspx" width=481 height=480&gt;&lt;/P&gt;
&lt;P&gt;Out of the box, MEFDemo offers three image filters: a grayscale filter, a blur filter, and an embossing filter. Because the filters are MEF plug-ins, you can easily write filters of your own and plug them into the application.&lt;/P&gt;
&lt;P&gt;One of the filters—the grayscale filter—is embedded in the main application. It's found in GrayscaleFilter.cs and it implements an interface named IImageFilter:&lt;/P&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';"&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR:blue;"&gt;class&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;GrayscaleFilter&lt;/SPAN&gt;&lt;FONT color=#000000&gt; : &lt;/FONT&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;IImageFilter&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';"&gt;&lt;FONT color=#000000&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;public&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR:blue;"&gt;string&lt;/SPAN&gt;&lt;FONT color=#000000&gt; Label&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;get&lt;/SPAN&gt;&lt;FONT color=#000000&gt; { &lt;/FONT&gt;&lt;SPAN style="COLOR:blue;"&gt;return&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR:#a31515;"&gt;"Grayscale"&lt;/SPAN&gt;&lt;FONT color=#000000&gt;; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;public&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR:blue;"&gt;void&lt;/SPAN&gt;&lt;FONT color=#000000&gt; Execute(&lt;/FONT&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;WriteableBitmap&lt;/SPAN&gt;&lt;FONT color=#000000&gt; bitmap)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;...&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-bidi-font-family:'Times New Roman';"&gt;&lt;FONT color=#000000&gt;}&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/SPAN&gt;
&lt;P&gt;IImageFilter is defined a separate project named ImageFilterContract and is decorated with an [InheritedExport] attribute, which means all types that implement the interface should be exported by MEF:&lt;/P&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';"&gt;[&lt;SPAN style="COLOR:#2b91af;"&gt;InheritedExport&lt;/SPAN&gt;]&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';"&gt; &lt;SPAN style="COLOR:blue;"&gt;interface&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;IImageFilter&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;void&lt;/SPAN&gt; Execute(&lt;SPAN style="COLOR:#2b91af;"&gt;WriteableBitmap&lt;/SPAN&gt; bitmap);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;string&lt;/SPAN&gt; Label { &lt;SPAN style="COLOR:blue;"&gt;get&lt;/SPAN&gt;; }&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;/SPAN&gt;
&lt;P&gt;The other two filters are exported from a separate project named ConvolutionFilters. Because the project type is Silverlight Application, not Silverlight Class Library, building the solution places two XAP files in the Web site's ClientBin folder: MEFDemo.xap, which contains the main application, and ConvolutionFilters.xap, which contains BlurFilter and EmbossFilter. These filters, too, implement IImageFilter and are automatically exported from the XAP as a result of the [InheritedExport] attribute.&lt;/P&gt;
&lt;P&gt;In MEF terminology, the exported image filters are "parts." Which begs the question: how and where do the parts get imported?&lt;/P&gt;
&lt;P&gt;Look in MainPage.xaml.cs and you'll find the following property declaration:&lt;/P&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';"&gt;[&lt;SPAN style="COLOR:#2b91af;"&gt;ImportMany&lt;/SPAN&gt;(AllowRecomposition = &lt;SPAN style="COLOR:blue;"&gt;true&lt;/SPAN&gt;)]&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;ObservableCollection&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR:#2b91af;"&gt;IImageFilter&lt;/SPAN&gt;&amp;gt; Filters { &lt;SPAN style="COLOR:blue;"&gt;get&lt;/SPAN&gt;; &lt;SPAN style="COLOR:blue;"&gt;set&lt;/SPAN&gt;; }&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/SPAN&gt;
&lt;P&gt;The [ImportMany] attribute tells MEF to look for all exported parts that implement IImageFilter and to populate the ObservableCollection with references to those parts.&amp;nbsp;In MainPage's constructor, a single line of code binds the ObservableCollection to an ItemsControl to&amp;nbsp;produce buttons representing the imported image filters. The ItemsControl uses the following item template to create the buttons:&lt;/P&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';"&gt;ItemsControl.ItemTemplate&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';"&gt;DataTemplate&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';"&gt;Button&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';"&gt; Content&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';"&gt;Binding&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';"&gt; Label&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';"&gt;}"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';"&gt; Width&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';"&gt;="96"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';"&gt; Height&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';"&gt;="32"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Margin&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';"&gt;="0,12,12,12"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';"&gt; Tag&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';"&gt;Binding&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';"&gt;}"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';"&gt; Click&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';"&gt;="OnExecuteFilter" /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';"&gt;DataTemplate&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;ItemsControl.ItemTemplate&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/SPAN&gt;
&lt;P&gt;The text on the face of each button comes from the associated image filter's Label property, and&amp;nbsp;the Tag property holds an IImageFilter&amp;nbsp;reference to the&amp;nbsp;filter itself. When a button is clicked, it's a simple matter to retrieve the IImageFilter reference and use it to invoke the filter:&lt;/P&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#2b91af;FONT-SIZE:9pt;"&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#2b91af;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';"&gt;IImageFilter&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;FONT color=#000000&gt; filter = (sender &lt;/FONT&gt;&lt;SPAN style="COLOR:blue;"&gt;as&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;Button&lt;/SPAN&gt;&lt;FONT color=#000000&gt;).Tag &lt;/FONT&gt;&lt;SPAN style="COLOR:blue;"&gt;as&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;IImageFilter&lt;/SPAN&gt;&lt;FONT color=#000000&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;FONT color=#000000&gt;filter.Execute(_bitmap);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/SPAN&gt;
&lt;P&gt;With MEF, we can export parts and we can import parts.&amp;nbsp;But&amp;nbsp;how does MEF know where to look for&amp;nbsp;parts to satisfy our imports? The answer is found in MainPage's constructor:&lt;/P&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:green;FONT-SIZE:9pt;"&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:green;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';"&gt;// Create a catalog and add this XAP to it&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#2b91af;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';"&gt;PackageCatalog&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';"&gt;&lt;FONT color=#000000&gt; catalog = &lt;/FONT&gt;&lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;PackageCatalog&lt;/SPAN&gt;&lt;FONT color=#000000&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';"&gt;&lt;FONT color=#000000&gt;catalog.AddPackage(&lt;/FONT&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;Package&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.Current);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:green;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';"&gt;// Download additional XAPs and add them to the catalog&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#2b91af;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';"&gt;Package&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';"&gt;&lt;FONT color=#000000&gt;.DownloadPackageAsync(&lt;/FONT&gt;&lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;Uri&lt;/SPAN&gt;&lt;FONT color=#000000&gt;(&lt;/FONT&gt;&lt;SPAN style="COLOR:#a31515;"&gt;"ConvolutionFilters.xap"&lt;/SPAN&gt;&lt;FONT color=#000000&gt;, &lt;/FONT&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;UriKind&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.Relative),&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';"&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (s, p) =&amp;gt; catalog.AddPackage(p));&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:green;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';"&gt;// Pass the catalog to the MEF and compose the parts&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';mso-bidi-font-family:'Times New Roman';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';mso-ansi-language:FR;mso-bidi-font-family:'Times New Roman';"&gt;var&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-fareast-font-family:'Times New Roman';mso-ansi-language:FR;mso-bidi-font-family:'Times New Roman';"&gt;&lt;FONT color=#000000&gt; container = &lt;/FONT&gt;&lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;CompositionContainer&lt;/SPAN&gt;&lt;FONT color=#000000&gt;(catalog);&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:'Times New Roman','serif';FONT-SIZE:12pt;mso-fareast-font-family:'Times New Roman';mso-ansi-language:FR;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;BACKGROUND:#dbe5f1;mso-layout-grid-align:none;mso-background-themecolor:accent1;mso-background-themetint:51;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-bidi-font-family:'Times New Roman';"&gt;&lt;FONT color=#000000&gt;container.ComposeParts(&lt;/FONT&gt;&lt;SPAN style="COLOR:blue;"&gt;this&lt;/SPAN&gt;&lt;FONT color=#000000&gt;);&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/SPAN&gt;
&lt;P&gt;The first line creates a package catalog. The second&amp;nbsp;line adds the current package (MEFDemo.xap) to the catalog, which allows MEF to find the GrayscaleFilter class exported&amp;nbsp;from MEFDemo.xap. The third line&amp;nbsp;initiates an asynchronous download of ConvolutionFilters.xap and adds&amp;nbsp;it to the catalog when the download completes. This allows MEF to find the BlurFilter and EmbossFilter classes in&amp;nbsp;that XAP. Adding image filters to the application is as simple as&amp;nbsp;placing additional XAP files containing the filters in ClientBin and adding one line of code per XAP to download the&amp;nbsp;package and add it to the catalog. Once filters are exported and added to the catalog, buttons representing them&amp;nbsp;will automatically show up in the UI.&lt;/P&gt;
&lt;P&gt;This example demonstrates the basics of MEF, but it could go even further. For example, MEF allows you to attach metadata to parts, and to read that metadata without instantiating the parts. Rather than use a Label property to expose text for buttons, image filters could use metadata instead. Glenn Block of Microsoft discusses metadata and lazy loading of imported types in &lt;A title="MEF metadata and lazy loading" href="http://blogs.msdn.com/gblock/archive/2009/12/05/building-hello-mef-part-ii-metadata-and-why-being-lazy-is-a-good-thing.aspx" target=_blank&gt;Building Hello MEF Part II&lt;/A&gt;. Glenn's blog is a great source of information on MEF, as is&lt;A title="Jeremy Likness's blog" href="http://www.wintellect.com/CS/blogs/jlikness/default.aspx" target=_blank&gt; Jeremy Likness's blog&lt;/A&gt;, which is currently exploring the integration of MEF and Prism. In addition, Mike Taulty has posted a great series of &lt;A title="Silverlight MEF video tutorials" href="http://channel9.msdn.com/tags/learnMEFSL4/" target=_blank&gt;video tutorials on Silverlight MEF&lt;/A&gt; on Channel 9.&lt;/P&gt;
&lt;P&gt;MEF makes composability a first-class citizen in Silverlight, and it's going to be interesting to see how much of an impact it has on Silverlight design and development. One thing's for sure: there has never been a more exciting time to be a Silverlight programmer!&lt;/P&gt;&lt;img src="http://www.wintellect.com/CS/aggbug.aspx?PostID=11236" width="1" height="1"&gt;</description></item><item><title>Silverlight 4's New HTML Hosting Support</title><link>http://www.wintellect.com/CS/blogs/jprosise/archive/2009/12/22/silverlight-4-s-new-html-hosting-support.aspx</link><pubDate>Tue, 22 Dec 2009 17:12:00 GMT</pubDate><guid isPermaLink="false">c9b5046a-91b6-4822-a57a-d848b8cb6435:11027</guid><dc:creator>jprosise</dc:creator><slash:comments>10</slash:comments><comments>http://www.wintellect.com/CS/blogs/jprosise/comments/11027.aspx</comments><wfw:commentRss>http://www.wintellect.com/CS/blogs/jprosise/commentrss.aspx?PostID=11027</wfw:commentRss><description>&lt;P&gt;Another of the new capabilities that Silverlight 4 brings to the platform is the ability to host HTML content inside a Silverlight control. This support isn't limited to static HTML content; the content can be interactive and can include script. It can even be Flash content or content that includes other Silverlight controls.&lt;/P&gt;
&lt;P&gt;To host HTML content in Silverlight, you can use either a WebBrowser control or an HtmlBrush. One way to display HTML content is to fire up a WebBrowser control and point it to a URL:&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="LINE-HEIGHT:115%;FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-bidi-language:AR-SA;mso-fareast-font-family:Calibri;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&lt;SPAN style="LINE-HEIGHT:115%;FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-bidi-language:AR-SA;mso-fareast-font-family:Calibri;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT:115%;FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;mso-bidi-language:AR-SA;mso-fareast-font-family:Calibri;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;WebBrowser&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT:115%;FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-bidi-language:AR-SA;mso-fareast-font-family:Calibri;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt; x&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT:115%;FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-bidi-language:AR-SA;mso-fareast-font-family:Calibri;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT:115%;FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-bidi-language:AR-SA;mso-fareast-font-family:Calibri;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT:115%;FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-bidi-language:AR-SA;mso-fareast-font-family:Calibri;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;="WebBrowserControl"&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT:115%;FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;mso-bidi-language:AR-SA;mso-fareast-font-family:Calibri;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt; Source&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT:115%;FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-bidi-language:AR-SA;mso-fareast-font-family:Calibri;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;="http://www.bing.com" /&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Another way to do it is to call NavigateToString and pass a string of content to the WebBrowser control:&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;WebBrowserControl.NavigateToString(&lt;SPAN style="COLOR:#a31515;"&gt;"&amp;lt;h1&amp;gt;Hello, Silverlight&amp;lt;/h1&amp;gt;"&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;HTML hosting is not available to in-browser apps (it applies to out-of-browser applications only), and if an OOB lacks elevated permissions, it can only display content that comes from the same domain as the Silverlight application. However, you can use a little trick&amp;nbsp;to display cross-domain content in OOBs that run without elevated permissions—simply pass an IFRAME targeting the remote content to NavigateToString:&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;WebBrowserControl.NavigateToString(&lt;SPAN style="COLOR:#a31515;"&gt;"&amp;lt;iframe src=\"http://www.bing.com\" style=\"width: 100%; height: 100%\"&amp;gt;&amp;lt;/iframe&amp;gt;"&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;You can render HTML content with HtmlBrush, too. The following XAML snippet paints a Rectangle with content retrieved from Bing:&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;WebBrowser&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;"&gt; x&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;="WebBrowserControl"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;"&gt; Source&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;="http://www.bing.com" /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;Rectangle&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;Rectangle.Fill&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;HtmlBrush&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:9pt;"&gt; SourceName&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;="WebBrowserControl" /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;"&gt;Rectangle.Fill&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT:115%;FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-bidi-language:AR-SA;mso-fareast-font-family:Calibri;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT:115%;FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:9pt;mso-bidi-language:AR-SA;mso-fareast-font-family:Calibri;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;Rectangle&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT:115%;FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;mso-bidi-language:AR-SA;mso-fareast-font-family:Calibri;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;One difference between WebBrowser and HtmlBrush is that the former displays "live" content, while the latter does not. Another difference is that HtmlBrush can have transforms applied to it, while WebBrowser cannot. For snazzy visual effects involving HTML content like the &lt;A title="HTML Puzzle Demo" href="http://www.silverlight.net/community/samples/silverlight-4-beta/html-puzzle/" target=_blank&gt;HTML puzzle demoed at the PDC&lt;/A&gt;, you'll probably find yourself using HtmlBrush. To display live, interactive content, you'll find WebBrowser more useful instead.&lt;/P&gt;
&lt;P&gt;One of the really cool things about the WebBrowser control is that&amp;nbsp;you&amp;nbsp;can&amp;nbsp;use its InvokeScript&amp;nbsp;method to&amp;nbsp;call JavaScript functions&amp;nbsp;in content&amp;nbsp;hosted by the&amp;nbsp;control. Conversely, JavaScript hosted&amp;nbsp;inside&amp;nbsp;a WebBrowser control can&amp;nbsp;use window.external.Notify to raise ScriptNotify events that can be handled in C#.&lt;/P&gt;
&lt;P&gt;To demonstrate why this might be useful (and how it works), I built a sample application that plays YouTube video using &lt;A title="YouTube Player Reference" href="http://code.google.com/apis/youtube/js_api_reference.html" target=_blank&gt;YouTube's API player&lt;/A&gt; and that uses the player's JavaScript API to drive the video playback from C#. The application runs as an OOB and requires elevated permissions:&lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH:473px;HEIGHT:375px;" title="Silverlight YouTube Application" alt="Silverlight YouTube Application" src="http://www.wintellect.com/CS/photos/prosise/images/11011/473x375.aspx" width=473 height=375&gt;&lt;/P&gt;
&lt;P&gt;The video that plays in the application is one I uploaded to YouTube; it shows one of my RC jets getting a workout at a recent jet meet near Atlanta, GA. You can &lt;A title="WebBrowserDemo source code" href="http://www.wintellect.com/downloads/WebBrowserDemo.zip"&gt;download the app&lt;/A&gt; and install it on your PC to try it out. Don't forget that it has to run outside the browser.&lt;/P&gt;
&lt;P&gt;The application uses a WebBrowser control to host the YouTube player. The content is stored in a text file packaged as a loose file inside the XAP file. It's extracted from the XAP with Application.GetResourceStream and passed to the WebBrowser control via NavigateToString:&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:green;FONT-SIZE:9pt;"&gt;// Read the HTML content from the XAP&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#2b91af;FONT-SIZE:9pt;"&gt;StreamResourceInfo&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt; sri = &lt;SPAN style="COLOR:#2b91af;"&gt;Application&lt;/SPAN&gt;.GetResourceStream&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;(&lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;Uri&lt;/SPAN&gt;(&lt;SPAN style="COLOR:#a31515;"&gt;"YouTubePlayer.txt"&lt;/SPAN&gt;, &lt;SPAN style="COLOR:#2b91af;"&gt;UriKind&lt;/SPAN&gt;.Relative));&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#2b91af;FONT-SIZE:9pt;"&gt;StreamReader&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt; reader = &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;StreamReader&lt;/SPAN&gt;(sri.Stream);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;string&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt; content = reader.ReadToEnd();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:green;FONT-SIZE:9pt;"&gt;// Feed the content to the WebBrowser control&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;Player.NavigateToString(content);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;The content itself includes a mix of HTML and JavaScript (mostly JavaScript). The script instantiates the YouTube player, forwards certain events from the&amp;nbsp;player to&amp;nbsp;the application&amp;nbsp;so they can be handled in C#, and provides a thin&amp;nbsp;JavaScript API layer that the application calls via InvokeScript&amp;nbsp;to control playback of the video. For example, when the user clicks the Play, Pause,&amp;nbsp;and Stop buttons, the application uses InvokeScript to call script funtions named play, pause, stop, and cue:&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;private&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt; &lt;SPAN style="COLOR:blue;"&gt;void&lt;/SPAN&gt; OnPlay(&lt;SPAN style="COLOR:blue;"&gt;object&lt;/SPAN&gt; sender, &lt;SPAN style="COLOR:#2b91af;"&gt;RoutedEventArgs&lt;/SPAN&gt; e)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Player.InvokeScript(&lt;SPAN style="COLOR:#a31515;"&gt;"play"&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;private&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt; &lt;SPAN style="COLOR:blue;"&gt;void&lt;/SPAN&gt; OnPause(&lt;SPAN style="COLOR:blue;"&gt;object&lt;/SPAN&gt; sender, &lt;SPAN style="COLOR:#2b91af;"&gt;RoutedEventArgs&lt;/SPAN&gt; e)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Player.InvokeScript(&lt;SPAN style="COLOR:#a31515;"&gt;"pause"&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;private&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt; &lt;SPAN style="COLOR:blue;"&gt;void&lt;/SPAN&gt; OnStop(&lt;SPAN style="COLOR:blue;"&gt;object&lt;/SPAN&gt; sender, &lt;SPAN style="COLOR:#2b91af;"&gt;RoutedEventArgs&lt;/SPAN&gt; e)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Player.InvokeScript(&lt;SPAN style="COLOR:#a31515;"&gt;"stop"&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Player.InvokeScript(&lt;SPAN style="COLOR:#a31515;"&gt;"cue"&lt;/SPAN&gt;, &lt;SPAN style="COLOR:#a31515;"&gt;"df6x4U0u7iQ"&lt;/SPAN&gt;);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT:115%;FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-bidi-language:AR-SA;mso-fareast-font-family:Calibri;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Similarly, when the state of the player changes—for example, when video playback begins or ends—script inside the control&amp;nbsp;uses window.external.Notify to&amp;nbsp;fire a ScriptNotify&amp;nbsp;event in&amp;nbsp;C# and activate a handler that updates the&amp;nbsp;visual states of the buttons:&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;function&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt; onYouTubePlayerStateChange(state) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:darkgreen;"&gt;// Ask the Silverlight control to update the YouTube video player&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;var&lt;/SPAN&gt; state = document.getElementById(&lt;SPAN style="COLOR:maroon;"&gt;"apiplayer"&lt;/SPAN&gt;).getPlayerState();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;window.external.Notify(&lt;SPAN style="COLOR:maroon;"&gt;'Update:'&lt;/SPAN&gt; + state.toString());&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT:115%;FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-bidi-language:AR-SA;mso-fareast-font-family:Calibri;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;}&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The end result is an application that demonstrates key features of the WebBrowser control and does something interesting, too. Merry Christmas and Happy Holidays!&lt;/P&gt;&lt;img src="http://www.wintellect.com/CS/aggbug.aspx?PostID=11027" width="1" height="1"&gt;</description></item><item><title>Silverlight's Big Image Problem (and What You Can Do About It)</title><link>http://www.wintellect.com/CS/blogs/jprosise/archive/2009/12/17/silverlight-s-big-image-problem-and-what-you-can-do-about-it.aspx</link><pubDate>Thu, 17 Dec 2009 17:46:00 GMT</pubDate><guid isPermaLink="false">c9b5046a-91b6-4822-a57a-d848b8cb6435:10907</guid><dc:creator>jprosise</dc:creator><slash:comments>16</slash:comments><comments>http://www.wintellect.com/CS/blogs/jprosise/comments/10907.aspx</comments><wfw:commentRss>http://www.wintellect.com/CS/blogs/jprosise/commentrss.aspx?PostID=10907</wfw:commentRss><description>&lt;P&gt;Quick: Can you spot the problem with these three lines of code?&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#2b91af;FONT-SIZE:9pt;"&gt;BitmapImage&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt; bi = &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;BitmapImage&lt;/SPAN&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;bi.SetSource(stream);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;TheImage.Source = bi;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;These statements create an image from a stream of PNG or JPG image bits&amp;nbsp;and display the image by assigning it to a XAML Image object named TheImage. It's boilerplate code used to&amp;nbsp;display images read from the local file system or obtained from a service. And while there's nothing inherently wrong with the code itself, you'll want to think carefully before including it in any Silverlight application.&lt;/P&gt;
&lt;P&gt;I call it "Silverlight's Big Image Problem." Not the kind of&amp;nbsp;image problem&amp;nbsp;a movie star might suffer, but an inherent memory-consumption problem&amp;nbsp;when dealing with large bitmap images in Silverlight.&lt;/P&gt;
&lt;P&gt;The problem&amp;nbsp;manifests itself when you handle large images in large numbers. The &lt;A title="My Pictures Viewer" href="http://www.wintellect.com/CS/blogs/jprosise/archive/2009/12/16/silverlight-4-s-new-local-file-system-support.aspx" target=_blank&gt;My Pictures Viewer&lt;/A&gt; that I blogged about yesterday is a case in point. When a user&amp;nbsp;running the application selects a folder containing one or more image files, the viewer displays clickable thumbnail versions of the images. The problem is that because Silverlight's BitmapImage class consumes&amp;nbsp;massive amounts of memory (up to 40 or 50 MB &lt;EM&gt;per image&lt;/EM&gt; for a typical&amp;nbsp;2 to&amp;nbsp;3 MB digital photo),&amp;nbsp;you simply can't have too many instances extant at once. But to create a thumbnail, you first need&amp;nbsp;a BitmapImage that wraps the entire image. You might create&amp;nbsp;a thumbnail by assigning the BitmapImage to an Image object that measures just 100 by 100 pixels, but if the original image measures 4,000 by 4,000 pixels, it's the latter figure you pay the price for.&lt;/P&gt;
&lt;P&gt;To demonstrate, I wrote a simple test harness that you can easily duplicate yourself. I began with an app that&amp;nbsp;pops up&amp;nbsp;an OpenFileDialog and lets the user select an image file from his or her hard disk. Once the image file is selected, the application generates a thumbnail version of the image and adds it to the scene. Then it generates another thumbnail, and then another, and so on and so forth until Silverlight throws an out-of-memory exception. Here is the helper method that I initially used to generate the thumbnails:&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;private&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;Image&lt;/SPAN&gt; CreateThumbnailImage(&lt;SPAN style="COLOR:#2b91af;"&gt;Stream&lt;/SPAN&gt; stream, &lt;SPAN style="COLOR:blue;"&gt;int&lt;/SPAN&gt; width)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;BitmapImage&lt;/SPAN&gt; bi = &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;BitmapImage&lt;/SPAN&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;bi.SetSource(stream);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;double&lt;/SPAN&gt; cx = width;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;double&lt;/SPAN&gt; cy = bi.PixelHeight * (cx / bi.PixelWidth);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;Image&lt;/SPAN&gt; image = &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;Image&lt;/SPAN&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;image.Width = cx;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;image.Height = cy;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;image.Source = bi;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;return&lt;/SPAN&gt; image;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT:115%;FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-bidi-language:AR-SA;mso-fareast-font-family:Calibri;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;And here's what happened when I ran the application and selected a 3,648 x 2,736 JPG&amp;nbsp;with a file size of 2.1 MB:&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH:466px;HEIGHT:375px;" title="Out of Memory" alt="Out of Memory" src="http://www.wintellect.com/CS/photos/prosise/images/10908/466x375.aspx" width=466 height=375&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;So get this. The application created&amp;nbsp;26 thumbnails, each measuring a mere&amp;nbsp;100&amp;nbsp;x 75 pixels. But attempting to&amp;nbsp;create a&amp;nbsp;27th&amp;nbsp;thumbnail produced an out-of-memory exception. When the exception occurred, Task Manager showed that the process's working&amp;nbsp;set size had grown from 30 MB to&amp;nbsp;nearly 1.5 GB! It seems crazy on the surface, because a full-color 100 x 75 image should only require about 30K of memory. But it makes a lot more sense when you realize that underlying each thumbnail is a gigantic BitmapImage that retains the full fidelity of the 3,648 x 2,736&amp;nbsp;original.&lt;/P&gt;
&lt;P&gt;The obvious question is what do you do about it? Is there a way to efficiently create thumbnail images from streams of image bits in Silverlight? It's a question that pops up time and again in discussion forums and on message boards. And the short answer is yes, there is a way. But the answer probably isn't the one you expect.&lt;/P&gt;
&lt;P&gt;Developers commonly attempt a solution along these lines:&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;private&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;Image&lt;/SPAN&gt; CreateThumbnailImage(&lt;SPAN style="COLOR:#2b91af;"&gt;Stream&lt;/SPAN&gt; stream, &lt;SPAN style="COLOR:blue;"&gt;int&lt;/SPAN&gt; width)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;BitmapImage&lt;/SPAN&gt; bi = &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;BitmapImage&lt;/SPAN&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;bi.SetSource(stream);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;double&lt;/SPAN&gt; cx = width;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;double&lt;/SPAN&gt; cy = bi.PixelHeight * (cx / bi.PixelWidth);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;Image&lt;/SPAN&gt; image = &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;Image&lt;/SPAN&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;image.Source = bi;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;WriteableBitmap&lt;/SPAN&gt; wb = &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;WriteableBitmap&lt;/SPAN&gt;((&lt;SPAN style="COLOR:blue;"&gt;int&lt;/SPAN&gt;)cx, (&lt;SPAN style="COLOR:blue;"&gt;int&lt;/SPAN&gt;)cy);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;ScaleTransform&lt;/SPAN&gt; transform = &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;ScaleTransform&lt;/SPAN&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;transform.ScaleX = cx / bi.PixelWidth;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;transform.ScaleY = cy / bi.PixelHeight;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;wb.Render(image, transform);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;wb.Invalidate();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;Image&lt;/SPAN&gt; thumbnail = &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;Image&lt;/SPAN&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;thumbnail.Width = cx;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;thumbnail.Height = cy;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;thumbnail.Source = wb;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;return&lt;/SPAN&gt; thumbnail;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT:115%;FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-bidi-language:AR-SA;mso-fareast-font-family:Calibri;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;}&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The basic idea is that&amp;nbsp;instead of creating a thumbnail by assigning a large BitmapImage to a small Image, you use WriteableBitmap.Render with a ScaleTransform to create a thumbnail, and then assign the&amp;nbsp;WriteableBitmap to an Image. Meanwhile, the BitmapImage and the Image it was temporarily assigned to—the one passed to WriteableBitmap.Render—go out of scope and are eventually picked up by the garbage collector.&lt;/P&gt;
&lt;P&gt;It works well in theory, but not so&amp;nbsp;well in practice, thanks to an undocumented behavior of WriteableBitmap. In fact, when I plugged the revised CreateThumbnailImage method into my test harness, the application ran out of memory just as quickly as before.&lt;/P&gt;
&lt;P&gt;The problem, it turns out, is that when you call WriteableBitmap.Render, WriteableBitmap apparently retains a reference to the XAML object passed in the first parameter. (I was stumped, too, until Jeffrey Richter and I did a little detective work and discovered what was happening under the hood. Jeffrey's my go-to guy for CLR issues, and I'm not sure I would have ever figured this out without him asking the right questions and suggesting solutions.) When CreateThumbnailImage returns an Image holding a reference to a WriteableBitmap, and the WriteableBitmap holds a reference to an Image, and the Image holds a reference to a BitmapImage, none of these objects gets garbage-collected. It seems that WriteableBitmap does nothing to solve the problem, especially given that there's no public method or property you can use to force the WriteableBitmap to release the reference.&lt;/P&gt;
&lt;P&gt;But all is not lost. You can make a &lt;EM&gt;copy&lt;/EM&gt; of the WriteableBitmap and assign it to the Image you return. And since you didn't call Render on the copy, it doesn't hold a reference to an Image that prevents the garbage collector from cleaning up the BitmapImage. Here is the fixed and final version of CreateThumbnailImage—this time, one that accomplishes what we set out to do:&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:9pt;"&gt;private&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;Image&lt;/SPAN&gt; CreateThumbnailImage(&lt;SPAN style="COLOR:#2b91af;"&gt;Stream&lt;/SPAN&gt; stream, &lt;SPAN style="COLOR:blue;"&gt;int&lt;/SPAN&gt; width)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;BitmapImage&lt;/SPAN&gt; bi = &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;BitmapImage&lt;/SPAN&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;bi.SetSource(stream);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;double&lt;/SPAN&gt; cx = width;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;double&lt;/SPAN&gt; cy = bi.PixelHeight * (cx / bi.PixelWidth);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;Image&lt;/SPAN&gt; image = &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;Image&lt;/SPAN&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;image.Source = bi;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;WriteableBitmap&lt;/SPAN&gt; wb1 = &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;WriteableBitmap&lt;/SPAN&gt;((&lt;SPAN style="COLOR:blue;"&gt;int&lt;/SPAN&gt;)cx, (&lt;SPAN style="COLOR:blue;"&gt;int&lt;/SPAN&gt;)cy);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;ScaleTransform&lt;/SPAN&gt; transform = &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;ScaleTransform&lt;/SPAN&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;transform.ScaleX = cx / bi.PixelWidth;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;transform.ScaleY = cy / bi.PixelHeight;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;wb1.Render(image, transform);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;wb1.Invalidate();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;WriteableBitmap&lt;/SPAN&gt; wb2 = &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;WriteableBitmap&lt;/SPAN&gt;((&lt;SPAN style="COLOR:blue;"&gt;int&lt;/SPAN&gt;)cx, (&lt;SPAN style="COLOR:blue;"&gt;int&lt;/SPAN&gt;)cy);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;for&lt;/SPAN&gt; (&lt;SPAN style="COLOR:blue;"&gt;int&lt;/SPAN&gt; i = &lt;SPAN style="COLOR:brown;"&gt;0&lt;/SPAN&gt;; i &amp;lt; wb2.Pixels.Length; i++)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;wb2.Pixels[i] = wb1.Pixels[i];&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;wb2.Invalidate();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;Image&lt;/SPAN&gt; thumbnail = &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;Image&lt;/SPAN&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;thumbnail.Width = cx;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;thumbnail.Height = cy;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;thumbnail.Source = wb2;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;return&lt;/SPAN&gt; thumbnail;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:9pt;"&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT:115%;FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-bidi-language:AR-SA;mso-fareast-font-family:Calibri;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;}&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;When I plugged this implementation into my test harness,&amp;nbsp;it successfully created hundreds of thumbnails (and could have created hundreds, perhaps thousands, more) without significantly increasing the working set size—and without throwing out-of-memory exceptions.&lt;/P&gt;
&lt;P&gt;The moral is that you should be very careful about how you use BitmapImage in Silverlight. Even one of them can swell the working set size dramatically, but a couple dozen of them wrapping digital photographs is more than most PCs can handle. With a little care, however, you can scale down the impact of BitmapImage so that memory consumption is proportional to the sizes of the images you're displaying rather than the sizes of the original, unreduced&amp;nbsp;images. And that, in the end, is a handy arrow to have in your arsenal.&lt;/P&gt;&lt;img src="http://www.wintellect.com/CS/aggbug.aspx?PostID=10907" width="1" height="1"&gt;</description></item><item><title>Silverlight 4's New Local File System Support</title><link>http://www.wintellect.com/CS/blogs/jprosise/archive/2009/12/16/silverlight-4-s-new-local-file-system-support.aspx</link><pubDate>Wed, 16 Dec 2009 19:56:00 GMT</pubDate><guid isPermaLink="false">c9b5046a-91b6-4822-a57a-d848b8cb6435:10896</guid><dc:creator>jprosise</dc:creator><slash:comments>5</slash:comments><comments>http://www.wintellect.com/CS/blogs/jprosise/comments/10896.aspx</comments><wfw:commentRss>http://www.wintellect.com/CS/blogs/jprosise/commentrss.aspx?PostID=10896</wfw:commentRss><description>&lt;P&gt;In my &lt;A title="Silverlight 4's New COM Automation Support" href="http://www.wintellect.com/CS/blogs/jprosise/archive/2009/12/14/silverlight-4-s-new-com-automation-support.aspx" target=_blank&gt;last blog post&lt;/A&gt;, I wrote about Silverlight 4 applications that run outside the browser with elevated permissions and their ability to&amp;nbsp;leverage COM automation servers on the host PC. Another privilege that applications with elevated permissions—also known as "trusted apps"—enjoy is the ability to access parts of the local file system without prompting the user with an OpenFileDialog or SaveFileDialog. This feature opens the door to types of applications that simply weren't possible with Silverlight 3.&lt;/P&gt;
&lt;P&gt;File access is limited to certain locations on the hard disk: primarily the "My" folders such as My Documents, My Pictures, and My Music. But within those constraints, file system access works pretty much the same in Silverlight as it does in .NET. You generally begin by calling Environment.GetFolderPath to acquire a path to the folder you wish to access.&amp;nbsp;The following code snippet enumerates the files in My Documents and stuffs the file names into a ListBox named FileList:&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;string&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt; path = &lt;SPAN style="COLOR:#2b91af;"&gt;Environment&lt;/SPAN&gt;.GetFolderPath(&lt;SPAN style="COLOR:#2b91af;"&gt;Environment&lt;/SPAN&gt;.&lt;SPAN style="COLOR:#2b91af;"&gt;SpecialFolder&lt;/SPAN&gt;.MyDocuments);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;foreach&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt; (&lt;SPAN style="COLOR:blue;"&gt;string&lt;/SPAN&gt; file &lt;SPAN style="COLOR:blue;"&gt;in&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;Directory&lt;/SPAN&gt;.EnumerateFiles(path))&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;FileList.Items.Add(file.Substring(file.LastIndexOf(&lt;SPAN style="COLOR:#a31515;"&gt;'\\'&lt;/SPAN&gt;) + &lt;SPAN style="COLOR:brown;"&gt;1&lt;/SPAN&gt;));&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT:115%;FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:AR-SA;mso-fareast-font-family:Calibri;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Of course, you're not limited to enumerating files. You can open files, create files, and delete files, and you can do the same with directories. Plus, there's no limit on the amount of data you can write to the hard disk since the user&amp;nbsp;okayed the&amp;nbsp;elevated permissions when the application was installed.&lt;/P&gt;
&lt;P&gt;To demonstrate Silverlight file access in action, I wrote the My Pictures Viewer&amp;nbsp;pictured below. When started, it populates a TreeView control with all the folders&amp;nbsp;and subfolders in your My Pictures directory. You can expand and collapse branches of the tree, and when you select a folder, the right half of the window is populated with thumbnail images of all the PNGs and JPGs in that directory. You can then click a thumbnail to see a close-up of the picture in a child window. Click the picture (or the X in the child window's upper right corner) to close the child window&amp;nbsp;and continue&amp;nbsp;photo browsing.&lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH:491px;HEIGHT:375px;" title="My Pictures Viewer" alt="My Pictures Viewer" src="http://www.wintellect.com/CS/photos/prosise/images/10894/491x375.aspx" width=491 height=375&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You can &lt;A title="My Pictures Viewer source code" href="http://www.wintellect.com/downloads/fileaccessdemo.zip"&gt;download the source code&lt;/A&gt; and try it for yourself. Run the application once in your browser and right-click it to install it as an out-of-browser application. Once&amp;nbsp;the viewer is&amp;nbsp;running outside the browser, you can begin browsing pictures.&lt;/P&gt;
&lt;P&gt;The code to populate the TreeView with folder names looks like this:&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;if&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt; (&lt;SPAN style="COLOR:#2b91af;"&gt;Application&lt;/SPAN&gt;.Current.HasElevatedPermissions)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;string&lt;/SPAN&gt; path = &lt;SPAN style="COLOR:#2b91af;"&gt;Environment&lt;/SPAN&gt;.GetFolderPath(&lt;SPAN style="COLOR:#2b91af;"&gt;Environment&lt;/SPAN&gt;.&lt;SPAN style="COLOR:#2b91af;"&gt;SpecialFolder&lt;/SPAN&gt;.MyPictures);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;foreach&lt;/SPAN&gt; (&lt;SPAN style="COLOR:blue;"&gt;string&lt;/SPAN&gt; dir &lt;SPAN style="COLOR:blue;"&gt;in&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;Directory&lt;/SPAN&gt;.EnumerateDirectories(path))&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;TreeViewItem&lt;/SPAN&gt; item = &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;TreeViewItem&lt;/SPAN&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;item.Header = dir.Substring(dir.LastIndexOf(&lt;SPAN style="COLOR:#a31515;"&gt;'\\'&lt;/SPAN&gt;) + &lt;SPAN style="COLOR:brown;"&gt;1&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;DirectoryTree.Items.Add(item);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ProcessFolder(dir, item.Items);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT:115%;FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:AR-SA;mso-fareast-font-family:Calibri;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;}&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;ProcessFolder is a recursive method that's implemented this way:&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;private&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt; &lt;SPAN style="COLOR:blue;"&gt;void&lt;/SPAN&gt; ProcessFolder(&lt;SPAN style="COLOR:blue;"&gt;string&lt;/SPAN&gt; path, &lt;SPAN style="COLOR:#2b91af;"&gt;ItemCollection&lt;/SPAN&gt; items)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;foreach&lt;/SPAN&gt; (&lt;SPAN style="COLOR:blue;"&gt;string&lt;/SPAN&gt; dir &lt;SPAN style="COLOR:blue;"&gt;in&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;Directory&lt;/SPAN&gt;.EnumerateDirectories(path))&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;TreeViewItem&lt;/SPAN&gt; item = &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;TreeViewItem&lt;/SPAN&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;item.Header = dir.Substring(dir.LastIndexOf(&lt;SPAN style="COLOR:#a31515;"&gt;'\\'&lt;/SPAN&gt;) + &lt;SPAN style="COLOR:brown;"&gt;1&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;items.Add(item);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ProcessFolder(dir, item.Items);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT:115%;FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:AR-SA;mso-fareast-font-family:Calibri;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;}&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Perhaps the most interesting part of the&amp;nbsp;source code is how it generates thumbnail images. It uses a BitmapImage to decode each image file. Then it assigns the BitmapImage to an Image object, uses WriteableBitmap.Render with a ScaleTransform to generate a thumbnail, and then, strangely enough, makes a copy of the WriteableBitmap in another WriteableBitmap. The second WriteableBitmap is the one that's ultimately assigned to an Image object to display the thumbnail on the screen.&lt;/P&gt;
&lt;P&gt;At first glance, this may appear gratuitous. Why not just assign the BitmapImage created from the image file directly to the Image that displays the thumbnail on the screen? Furthermore, why go to the trouble of making a copy of the WriteableBitmap? The short answer is that I did it this way to avoid out-of-memory exceptions, which are all too common in Silverlight applications that display digital photos. In fact, I'm planning a follow-up&amp;nbsp;blog post that covers this in detail. Stay tuned.&lt;/P&gt;&lt;img src="http://www.wintellect.com/CS/aggbug.aspx?PostID=10896" width="1" height="1"&gt;</description></item><item><title>Silverlight 4's New COM Automation Support</title><link>http://www.wintellect.com/CS/blogs/jprosise/archive/2009/12/14/silverlight-4-s-new-com-automation-support.aspx</link><pubDate>Mon, 14 Dec 2009 16:47:00 GMT</pubDate><guid isPermaLink="false">c9b5046a-91b6-4822-a57a-d848b8cb6435:10864</guid><dc:creator>jprosise</dc:creator><slash:comments>13</slash:comments><comments>http://www.wintellect.com/CS/blogs/jprosise/comments/10864.aspx</comments><wfw:commentRss>http://www.wintellect.com/CS/blogs/jprosise/commentrss.aspx?PostID=10864</wfw:commentRss><description>&lt;P&gt;One of Silverlight 4's most compelling new features is support for out-of-browser applications with elevated permissions. An app running with elevated permissions can perform actions that a normal sandboxed application can not. For example, it can access the local file system, and on Windows boxes, it can interact with COM automation servers. This latter feature—also new to Silverlight 4—is the subject of this blog post.&lt;/P&gt;
&lt;P&gt;Silverlight 4's &lt;A title="ComAutomationFactory class" href="http://msdn.microsoft.com/en-us/library/system.windows.interop.comautomationfactory(VS.96).aspx" target=_blank&gt;ComAutomationFactory&lt;/A&gt; class provides an API for instantiating COM automation objects and for determining whether COM automation is available. (It's not available if the app is running without elevated permissions, or if it's running on a Macintosh.) And C# 4.0's new &lt;A title="C# dynamic keyword" href="http://blogs.msdn.com/cburrows/archive/2008/10/27/c-dynamic.aspx" target=_blank&gt;dynamic&lt;/A&gt; keyword provides a means for interacting with automation objects, which by definition are late-bound (meaning they expose features to clients using&amp;nbsp;an IDispatch interface).&lt;/P&gt;
&lt;P&gt;One practical example of what you can do with Silverlight's COM automation support is sending an e-mail message via Outlook. The following sample does just that:&lt;/P&gt;&lt;SPAN style="LINE-HEIGHT:115%;FONT-FAMILY:Consolas;FONT-SIZE:9pt;mso-bidi-language:AR-SA;mso-fareast-font-family:Calibri;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;dynamic&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt; outlook = &lt;SPAN style="COLOR:#2b91af;"&gt;ComAutomationFactory&lt;/SPAN&gt;.CreateObject(&lt;SPAN style="COLOR:#a31515;"&gt;"Outlook.Application"&lt;/SPAN&gt;);&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;dynamic&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt; mail = outlook.CreateItem(&lt;SPAN style="COLOR:brown;"&gt;0&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;mail.Recipients.Add(&lt;SPAN style="COLOR:#a31515;"&gt;"webmaster@contoso.com"&lt;/SPAN&gt;);&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;mail.Subject = &lt;SPAN style="COLOR:#a31515;"&gt;"Hello, Silverlight"&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;mail.Body = &lt;SPAN style="COLOR:#a31515;"&gt;"This message was sent from Silverlight 4"&lt;/SPAN&gt;;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;mail.Save();&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;mail.Send();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/SPAN&gt;
&lt;P&gt;The code is exceedingly simple and it works just fine if Outlook is installed on the client and the user OKs the prompt from Outlook warning that an external application is attempting to use it. For added robustness, you should catch the System.Exception thrown from ComAutomationFactory.CreateObject if object creation fails. That's exactly what will happen if Outlook isn't installed on the host PC.&lt;/P&gt;
&lt;P&gt;For fun, I wrote a &lt;A title="SpeechDemo Source Code" href="http://www.wintellect.com/downloads/speechdemo.zip"&gt;downloadable demo&lt;/A&gt; that uses Microsoft's speech automation server to verbalize error messages. (I definitely wouldn't recommend using this in a production application because it is quite annoying, but it's just novel enough to get a few laughs from your friends.) Here's how the application looks when it's running:&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH:500px;HEIGHT:283px;" title="SpeechDemo Application" alt="SpeechDemo Application" src="http://www.wintellect.com/CS/photos/prosise/images/10863/500x283.aspx" width=500 height=283&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you click a button while the application is running inside the browser or outside the browser but without elevated permissions, the error message encapsulated in the ensuing exception is displayed in a message box. However, if you do the same with the application running with elevated permissions outside the browser, a friendly voice reads the error message out loud. Nothing calls attention to a null reference exception like a female voice informing you "Object reference not set to an instance of&amp;nbsp;an object." For added fun, you could append "I'm sorry, Dave; I'm afraid I can't do that" to every error message.&lt;/P&gt;
&lt;P&gt;When the application starts up, it attempts to instantiate the speech server and assign a reference to a local field:&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;"&gt;if&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt; (&lt;SPAN style="COLOR:#2b91af;"&gt;ComAutomationFactory&lt;/SPAN&gt;.IsAvailable)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;try&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;_speech = &lt;SPAN style="COLOR:#2b91af;"&gt;ComAutomationFactory&lt;/SPAN&gt;.CreateObject(&lt;SPAN style="COLOR:#a31515;"&gt;"Sapi.SpVoice"&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;catch&lt;/SPAN&gt; (&lt;SPAN style="COLOR:#2b91af;"&gt;Exception&lt;/SPAN&gt;) { }&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT:115%;FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:AR-SA;mso-fareast-font-family:Calibri;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;}&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Then, when an exception is thrown, it forwards the exception to a helper method named NotifyException, which verbalizes the error message if possible or displays it in a message box if not:&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-ansi-language:FR;"&gt;private&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-ansi-language:FR;"&gt; &lt;SPAN style="COLOR:blue;"&gt;void&lt;/SPAN&gt; NotifyException(&lt;SPAN style="COLOR:#2b91af;"&gt;Exception&lt;/SPAN&gt; ex)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;if&lt;/SPAN&gt; (_speech != &lt;SPAN style="COLOR:blue;"&gt;null&lt;/SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;_speech.Speak(ex.Message);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;else&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;MessageBox&lt;/SPAN&gt;.Show(ex.Message);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;"&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT:115%;FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:AR-SA;mso-fareast-font-family:Calibri;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;If you install the application locally and OK its request for elevated permissions, you should hear (rather than see) the error messages. How's that for an error UI? :-)&lt;/P&gt;&lt;img src="http://www.wintellect.com/CS/aggbug.aspx?PostID=10864" width="1" height="1"&gt;</description></item><item><title>Silverlight 4's New Commanding Support</title><link>http://www.wintellect.com/CS/blogs/jprosise/archive/2009/12/01/silverlight-4-s-new-command-support.aspx</link><pubDate>Tue, 01 Dec 2009 02:33:00 GMT</pubDate><guid isPermaLink="false">c9b5046a-91b6-4822-a57a-d848b8cb6435:10582</guid><dc:creator>jprosise</dc:creator><slash:comments>8</slash:comments><comments>http://www.wintellect.com/CS/blogs/jprosise/comments/10582.aspx</comments><wfw:commentRss>http://www.wintellect.com/CS/blogs/jprosise/commentrss.aspx?PostID=10582</wfw:commentRss><description>&lt;P&gt;One of the exciting new features in the Silverlight 4 beta is a pair of properties added to the ButtonBase and Hyperlink classes named Command and CommandParameter. These properties represent the first real support in Silverlight for commanding, which is primarily beneficial to to Model-View-ViewModel (MVVM) applications. MVVM has long been popular among WPF developers and is rapidly gaining popularity with Silverlight developers. And now, thanks to commanding, Silverlight comes a little closer to supporting pure MVVM implementations without help from auxiliary frameworks such as Prism.&lt;/P&gt;
&lt;P&gt;To demonstrate Silverlight 4's new commanding infrastructure, I took a sample that I originally wrote to show how to consume RSS in Silverlight. You type an RSS URL into a TextBox and click&amp;nbsp;the "View"&amp;nbsp;button. The app uses a WebClient to fetch the RSS feed,&amp;nbsp;and then renders the feed items into a ListBox using data binding:&lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH:520px;HEIGHT:480px;" title=CommandDemo alt=CommandDemo src="http://www.wintellect.com/CS/photos/prosise/images/10581/520x480.aspx" width=520 height=480&gt;&lt;/P&gt;
&lt;P&gt;I then rewrote the app as an MVVM app and took advantage of commanding to move all the logic that used to appear in the code-behind to the view-model. You can &lt;A title="CommandDemo Source Code" href="http://www.wintellect.com/downloads/CommandDemo.zip"&gt;download the source code&lt;/A&gt; to see how it works. Here are some of the highlights.&lt;/P&gt;
&lt;P&gt;First, my model is implemented in the RssModel class. RssModel exposes a method named GetRssFeedAsync that&amp;nbsp;the view-model&amp;nbsp;can use to fetch a live&amp;nbsp;RSS feed. It also implements a couple of events: an RssLoadComplete event that's fired following a successful RSS download, and an RssLoadError event that's fired if an RSS download fails. These methods and events are part of an interface named&amp;nbsp;IRssProvider, which you could mock in a unit-testing scenario to provide RSS content from a local source rather than a network source.&lt;/P&gt;
&lt;P&gt;Second, my view-model is implemented in a class named RssViewModel. Part of the intent of the view-model is to provide properties that the view can bind to to populate controls with data. To that end, RssViewModel exposes a string property named&amp;nbsp;RssUri which can be bound to the TextBox in the view, and an ObservableCollection property named RssFeed that can be bound to the ListBox. It also implements a read-only&amp;nbsp;ICommand property named GetRssFeed that returns an instance of a class named GetRssFeedCommand. This is where commanding enters the picture in Silverlight 4.&lt;/P&gt;
&lt;P&gt;Open the code-behind file for the view (RssView.xaml.cs) and you'll&amp;nbsp;see that it contains no code other than a constructor that calls InitializeComponent. In Silverlight 3,&amp;nbsp;I would have had to include a handler for the button's Click command that calls into the view-model to fetch the RSS feed and stuff the RSS items into the RssFeed property. Thanks to the new commanding infrastructure in Silverlight 4, I was able to&amp;nbsp;accomplish this declaratively. First, the view declares an instance of the view-model:&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;UserControl.Resources&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;local&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;RssViewModel&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt; x&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;Key&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;="RssViewModel" /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;UserControl.Resources&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Then it binds the view-model to the DataContext property of the Grid that&amp;nbsp;contains the TextBox, ListBox, and Button:&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;Grid&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt; x&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;="LayoutRoot"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt; Background&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;="#FFF4B3FA"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt; DataContext&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;StaticResource&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt; RssViewModel&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;}"&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;The TextBox's Text property and the ListBox's ItemsSource property are bound to the view-model's RssUri and RssFeed properties:&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;TextBox&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt; Text&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;Binding&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt; RssUri&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;,&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt; Mode&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;=TwoWay}"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;... /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;ListBox&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt; ItemsSource&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;Binding&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt; RssFeed&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;}"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;... &amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;More importantly, the Button is bound to the view-model this way:&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;Button&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt; Command&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;Binding&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt; GetRssFeed&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;}"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt; CommandParameter&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;="{&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:#a31515;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;Binding&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt; RssUri&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;}"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:red;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;... /&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Observe that the Button declaration doesn't contain a Click attribute; in other words, the Click event isn't bound to an event handler in the code-behind. Instead, when the button is clicked, it invokes the command exposed through the view-model's GetRssFeed property. That command is implemented this way:&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;COLOR:blue;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt; &lt;SPAN style="COLOR:blue;"&gt;class&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;GetRssFeedCommand&lt;/SPAN&gt; : &lt;SPAN style="COLOR:#2b91af;"&gt;ICommand&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;IRssProvider&lt;/SPAN&gt; _model;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;ObservableCollection&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR:#2b91af;"&gt;SyndicationItem&lt;/SPAN&gt;&amp;gt; _feed;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;public&lt;/SPAN&gt; GetRssFeedCommand(&lt;SPAN style="COLOR:#2b91af;"&gt;ObservableCollection&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR:#2b91af;"&gt;SyndicationItem&lt;/SPAN&gt;&amp;gt; feed, &lt;SPAN style="COLOR:#2b91af;"&gt;IRssProvider&lt;/SPAN&gt; model)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;_feed = feed;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;_model = model;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;event&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;EventHandler&lt;/SPAN&gt; CanExecuteChanged;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;bool&lt;/SPAN&gt; CanExecute(&lt;SPAN style="COLOR:blue;"&gt;object&lt;/SPAN&gt; parameter)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;return&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;true&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR:blue;"&gt;void&lt;/SPAN&gt; Execute(&lt;SPAN style="COLOR:blue;"&gt;object&lt;/SPAN&gt; parameter)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;_model.RssLoadComplete += &lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;EventHandler&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR:#2b91af;"&gt;RssEventArgs&lt;/SPAN&gt;&amp;gt;(OnRssLoadComplete);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;_model.GetRssFeedAsync(&lt;SPAN style="COLOR:blue;"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR:#2b91af;"&gt;Uri&lt;/SPAN&gt;((&lt;SPAN style="COLOR:blue;"&gt;string&lt;/SPAN&gt;)parameter, &lt;SPAN style="COLOR:#2b91af;"&gt;UriKind&lt;/SPAN&gt;.Absolute));&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;void&lt;/SPAN&gt; OnRssLoadComplete(&lt;SPAN style="COLOR:blue;"&gt;object&lt;/SPAN&gt; sender, &lt;SPAN style="COLOR:#2b91af;"&gt;RssEventArgs&lt;/SPAN&gt; e)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;if&lt;/SPAN&gt; (_feed != &lt;SPAN style="COLOR:blue;"&gt;null&lt;/SPAN&gt;) &lt;SPAN style="COLOR:green;"&gt;// Just to be sure&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;_feed.Clear();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;using&lt;/SPAN&gt; (&lt;SPAN style="COLOR:#2b91af;"&gt;XmlReader&lt;/SPAN&gt; reader = &lt;SPAN style="COLOR:#2b91af;"&gt;XmlReader&lt;/SPAN&gt;.Create(e.Result))&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;SyndicationFeed&lt;/SPAN&gt; feed = &lt;SPAN style="COLOR:#2b91af;"&gt;SyndicationFeed&lt;/SPAN&gt;.Load(reader);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;foreach&lt;/SPAN&gt; (&lt;SPAN style="COLOR:#2b91af;"&gt;SyndicationItem&lt;/SPAN&gt; item &lt;SPAN style="COLOR:blue;"&gt;in&lt;/SPAN&gt; feed.Items)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;_feed.Add(item);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT:normal;MARGIN:0in 0in 0pt;mso-layout-grid-align:none;" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;"&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT:115%;FONT-FAMILY:Consolas;FONT-SIZE:10pt;mso-bidi-language:TH;mso-fareast-font-family:Calibri;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-fareast-theme-font:minor-latin;"&gt;}&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;At run-time, invoking the command causes its Execute method to be called, and the command responds by using the model to fetch the RSS feed and parsing the&amp;nbsp;feed items into the view-model's RssFeed property. Thanks to the data binding between that property and the ListBox, and because RssFeed is an ObservableCollection, the items promptly appear in the ListBox.&lt;/P&gt;
&lt;P&gt;The binding between the Button and the view-model's GetRssFeed property is possible because of the Command property added to the Button class (actually, to ButtonBase) in Silverlight 4. In addition, Button now contains a CommandParameter property that can be used to pass a parameter to the command. In this example, CommandParameter is bound to the view-model's RssUri property, which ensures that the URL typed by the user is available to the command when the command is invoked.&lt;/P&gt;
&lt;P&gt;The upshot of all this is that Command and CommandParameter enabled me to&amp;nbsp;build a pure MVVM implementation that wasn't possible in Silverlight 3 without outside help. It's not the final word in commanding—after all, Silverlight still lacks commanding support in other controls such as ListBox—but it's a step in the right direction. And it's indicative of the fact that the Silverlight team is listening to developers, because commanding, along with printing and support for webcams and other devices,&amp;nbsp;is one of the features that developers&amp;nbsp;lobbied for the most.&lt;/P&gt;&lt;img src="http://www.wintellect.com/CS/aggbug.aspx?PostID=10582" width="1" height="1"&gt;</description></item></channel></rss>