<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0">  <channel>    <item>      <title>Getting Started with Knockout.js</title>      <link>http://feeds.johnpapa.net/~r/JohnPapa/~3/DTqXCLm81_M/getting-started-with-knockout.js</link>      <description>&lt;p align="justify"&gt;&lt;a href="http://jpapa.me/clientIn1202"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 5px 5px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" align="left" src="http://johnpapa.net/Media/Default/Windows-Live-Writer/Getting-Started-with-Knockout.js_1238B/image_3.png" width="230" height="210"&gt;&lt;/a&gt;I’m back! It’s been 2.5 years since I handed the reigns of my Data Points column in MSDN Magazine over to Julie Lerman (who has done a masterful job with it) when I went to work for Microsoft. Now that I am back on my own I decided to rekindle my old flame and begin a new column dedicated to client side technologies. &lt;a href="http://jpapa.me/clientIn1202"&gt;I’m happy to announce that this month the first article in my new column Client Insight is now available!&lt;/a&gt;&lt;/p&gt; &lt;p align="justify"&gt;What, 2 columns?! Yes, I am also continuing to write for &lt;a href="http://visualstudiomagazine.com/Articles/List/Papas-Perspective.aspx"&gt;VS Magazine in my monthly Papa’s Perspective column&lt;/a&gt;, which allows me to explore a variety of topics and give my take on how technology is evolving. So while Papa’s Perspective is more, well, my perspective, Client Insights is deeper, more technical, and is all about the client tech.&lt;/p&gt; &lt;p align="justify"&gt;The first topic I chose is to provide all y&lt;a href="http://johnpapa.net/Media/Default/Windows-Live-Writer/Getting-Started-with-Knockout.js_1238B/image_5.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 3px 0px 3px 5px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" align="right" src="http://johnpapa.net/Media/Default/Windows-Live-Writer/Getting-Started-with-Knockout.js_1238B/image_thumb_1.png" width="148" height="112"&gt;&lt;/a&gt;ou need to get started with data binding and MVVM to create HTML5 and JavaScript apps using &lt;a href="http://www.knockoutjs.com"&gt;Knockout.js&lt;/a&gt;. And if you like Knockout, be sure to check out my &lt;a href="http://www.pluralsight-training.net/microsoft/Authors/Details?handle=john-papa"&gt;new Pluralsight course on Knockout that is coming out later this month&lt;/a&gt;! Yeah, its about data, and has a definite lean towards patterns I love (like MVVM) … but hey, what can I say &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://johnpapa.net/Media/Default/Windows-Live-Writer/Getting-Started-with-Knockout.js_1238B/wlEmoticon-smile_2.png"&gt;&lt;/p&gt; &lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt; &lt;p align="justify"&gt;I intend to put out some great insight into client side topics such as Silverlight, JavaScript, XAML, Windows 8, Windows Phone, CSS,&amp;nbsp; HTML, and much more. Please check it out!&lt;/p&gt;&lt;div class="feedflare"&gt;&lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=DTqXCLm81_M:ALawmdDy4I8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?i=DTqXCLm81_M:ALawmdDy4I8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=DTqXCLm81_M:ALawmdDy4I8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?i=DTqXCLm81_M:ALawmdDy4I8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=DTqXCLm81_M:ALawmdDy4I8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=DTqXCLm81_M:ALawmdDy4I8:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JohnPapa/~4/DTqXCLm81_M" height="1" width="1"/&gt;</description>      <pubDate>Sat, 04 Feb 2012 02:01:42 GMT</pubDate>      <guid isPermaLink="false">http://johnpapa.net:80/getting-started-with-knockout.js</guid>      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://johnpapa.net:80/getting-started-with-knockout.js</origLink>    </item>    <item>      <title>Windows Phone Design Guidelines on MSDN</title>      <link>http://blogs.msdn.com/b/silverlight_sdk/archive/2012/02/01/windows-phone-design-guidelines-on-msdn.aspx</link>      <pubDate>Thu, 02 Feb 2012 06:18:07 GMT</pubDate>      <guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10263088</guid>      <creator xmlns="http://purl.org/dc/elements/1.1/">Cheryl Simmons - MSFT</creator>      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">0</comments>      <wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/silverlight_sdk/rsscomments.aspx?WeblogPostID=10263088</wfw:commentRss>      <comments>http://blogs.msdn.com/b/silverlight_sdk/archive/2012/02/01/windows-phone-design-guidelines-on-msdn.aspx#comments</comments>      <description>&lt;p&gt;&lt;font size="2"&gt;It was recently brought to my attention that we have done a poor job of evangelizing the &lt;a href="http://msdn.microsoft.com/en-us/library/hh202915(v=vs.92).aspx"&gt;Windows Phone Design Guidelines on MSDN&lt;/a&gt;. These guidelines were previously available in PDF format, but a few months ago a couple of folks worked really hard to bring these to MSDN. Given the success of one of my previous posts, &lt;a href="http://blogs.msdn.com/b/silverlight_sdk/archive/2011/01/07/windows-phone-7-design-guidelines-cheat-sheet.aspx"&gt;the design cheat sheet&lt;/a&gt;, I would guess that developers are looking for these design guidelines presented in an easy-to-consume format.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Along the lines of easy to consume are the &lt;a href="http://msdn.microsoft.com/en-us/library/hh202879(v=vs.92).aspx"&gt;control design guideline topics&lt;/a&gt;. There are design guideline topics for most controls that ship with the Windows Phone SDK. These topics typically contain an image of the control and describe the standard appearance of a control and its standard use. The best part of these topics, in my opinion, is the Design Guidelines section that lists the important points you need to remember when using the control in your UI. The following images show parts of the topic for the Button control.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-20-metablogapi/2110.image_5F00_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-20-metablogapi/3108.image_5F00_thumb.png" width="187" height="244" /&gt;&lt;/a&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-20-metablogapi/2626.image_5F00_4.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-84-20-metablogapi/6232.image_5F00_thumb_5F00_1.png" width="244" height="175" /&gt;&lt;/a&gt;&lt;/p&gt;      &lt;p&gt;&lt;font size="2"&gt;So please, check out these topics and let us know what you think. Post a comment to this post or just use the feedback mechanism on the MSDN page.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;--Cheryl&lt;/font&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10263088" width="1" height="1"&gt;</description>    </item>    <item>      <title>5 Minutes with Data Binding and JavaScript using Knockout and JsViews</title>      <link>http://feeds.johnpapa.net/~r/JohnPapa/~3/mYUBr3FUYD8/5-minutes-with-data-binding-and-javascript-using-knockout-and-jsviews</link>      <description>&lt;p&gt;For years when developers heard the term “data source control” it sent shivers down spines. It often referred to some tightly coupled object that managed binding the source data to the target controls and took you about 80% of the way t your goal. But it also often left you at the middle of the desert heat with nothing but a pair of sunglasses and a and a long way to go by foot to your destination as it drove off. &lt;/p&gt; &lt;p&gt;Thankfully, data sources and data binding have evolved considerably over the years and produced some fantastic solutions in various technologies that are both robust and extensible. Silverlight (and XAML) is one of the best shining examples of this. JavaScript has several data binding solutions, some of which have taken their queue from XAML bindings. 2 great solutions I have been impressed with are Knockout (now at v 2.0.0) and JsViews (not yet in beta, but coming soon).&amp;nbsp; Note that til JsViews is fully released, I expect API changes.&lt;/p&gt; &lt;p&gt;&lt;a href="http://knockoutjs.com/"&gt;Knockout&lt;/a&gt; is a library by &lt;a href="http://blog.stevensanderson.com/"&gt;Steve Sanderson&lt;/a&gt; that has a native templating engine (and also supports external templating libraries such as jQuery templates).&amp;nbsp; &lt;a href="https://github.com/BorisMoore/jsviews"&gt;JsViews&lt;/a&gt; is driven by &lt;a href="http://www.borismoore.com/"&gt;Boris Moore&lt;/a&gt; (you may know him from jQuery templates) and offers a slightly different approach while pairing its templating with &lt;a href="https://github.com/BorisMoore/jsrender"&gt;JsRender&lt;/a&gt; (soon to be the templating engine de jour).&lt;/p&gt; &lt;p&gt;&lt;a href="http://visualstudiomagazine.com/articles/2012/02/01/2-great-javascript-data-binding-libraries.aspx"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://johnpapa.net/Media/Default/Windows-Live-Writer/95ac931f6b0d_7037/image_3.png" width="932" height="274"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://visualstudiomagazine.com/articles/2012/02/01/2-great-javascript-data-binding-libraries.aspx"&gt;This month’s Papa’s Perspective hits both Knockout and JsViews&lt;/a&gt; from a high level to show how you can get started with them and their basic syntax, with examples. Take a look!&lt;/p&gt; &lt;p&gt;If you want to learn more about Knockout, be sure to check out my &lt;a href="http://www.pluralsight-training.net/"&gt;Pluralsight&lt;/a&gt; course on Knockout and MVVM , coming in mid-February –2012 ! &lt;/p&gt;&lt;div class="feedflare"&gt;&lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=mYUBr3FUYD8:Y40PM25o1Nw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?i=mYUBr3FUYD8:Y40PM25o1Nw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=mYUBr3FUYD8:Y40PM25o1Nw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?i=mYUBr3FUYD8:Y40PM25o1Nw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=mYUBr3FUYD8:Y40PM25o1Nw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=mYUBr3FUYD8:Y40PM25o1Nw:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JohnPapa/~4/mYUBr3FUYD8" height="1" width="1"/&gt;</description>      <pubDate>Wed, 01 Feb 2012 13:17:40 GMT</pubDate>      <guid isPermaLink="false">http://johnpapa.net:80/5-minutes-with-data-binding-and-javascript-using-knockout-and-jsviews</guid>      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://johnpapa.net:80/5-minutes-with-data-binding-and-javascript-using-knockout-and-jsviews</origLink>    </item>    <item>      <title>Yet Another Podcast #58–Julie Lerman and EF/CF</title>      <link>http://feedproxy.google.com/~r/JesseLiberty-SilverlightGeek/~3/KlUXYu6MokM/</link>      <comments>http://jesseliberty.com/2012/01/31/yet-another-podcast-58julie-lerman-and-efcf/#comments</comments>      <pubDate>Tue, 31 Jan 2012 16:34:48 +0000</pubDate>      <creator xmlns="http://purl.org/dc/elements/1.1/">Jesse Liberty</creator>      <category><![CDATA[Data]]></category>      <category><![CDATA[Essentials]]></category>      <category><![CDATA[Linq]]></category>      <category><![CDATA[Patterns & Skills]]></category>      <category><![CDATA[TDD]]></category>      <category><![CDATA[YapCast]]></category>      <guid isPermaLink="false">http://jesseliberty.com/?p=5193</guid>      <encoded xmlns="http://purl.org/rss/1.0/modules/content/"><![CDATA[Talking with&#160; Julie Lerman about Entity Framework and Code-First.&#160; Julie’s blog Julie’s Book website Microsoft Entity Framework Developer Center EF Team Blog Domain Driven Design Listen &#124; Yet Another Podcast Call in comments: 1-347-YAP-CAST<br/><br/>For the complete article and hyperlinks, please visit my blog at http://JesseLiberty.com<div class="feedflare"><a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=KlUXYu6MokM:-Y-0UE0dpjA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=KlUXYu6MokM:-Y-0UE0dpjA:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=KlUXYu6MokM:-Y-0UE0dpjA:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?i=KlUXYu6MokM:-Y-0UE0dpjA:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=KlUXYu6MokM:-Y-0UE0dpjA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?i=KlUXYu6MokM:-Y-0UE0dpjA:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=KlUXYu6MokM:-Y-0UE0dpjA:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?i=KlUXYu6MokM:-Y-0UE0dpjA:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=KlUXYu6MokM:-Y-0UE0dpjA:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?d=qj6IDK7rITs" border="0"></img></a></div><img src="http://feeds.feedburner.com/~r/JesseLiberty-SilverlightGeek/~4/KlUXYu6MokM" height="1" width="1"/>]]></encoded>      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://jesseliberty.com/2012/01/31/yet-another-podcast-58julie-lerman-and-efcf/feed/</commentRss>      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">0</comments>      <enclosure url="http://jesseliberty.com/wp-content/media/Show58.mp3" length="27316980" type="audio/mpeg" />      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://jesseliberty.com/2012/01/31/yet-another-podcast-58julie-lerman-and-efcf/</origLink>    </item>    <item>      <title>Windows 8 and the future of XAML: Part 2: The Windows Runtime (WinRT)</title>      <description>&lt;table width="20"&gt;    &lt;tbody&gt;        &lt;tr&gt;            &lt;td&gt;            &lt;div class="fb-like" data-show-faces="true" data-send="false" data-href="http://www.silverlightshow.net/items/Windows-8-and-the-future-of-XAML-Part-2-The-Windows-Runtime-WinRT.aspx" data-font="segoe ui" data-layout="button_count"&gt;&lt;/div&gt;            &lt;/td&gt;            &lt;td&gt;&lt;a href="https://twitter.com/share" class="twitter-share-button" data-via="silverlightshow" data-counturl="http://www.silverlightshow.net/items/Windows-8-and-the-future-of-XAML-Part-2-The-Windows-Runtime-WinRT.aspx" data-count="horizontal" data-text="Reading @gillcleeren's article: #Windows8 &amp;amp; the future of #XAML: Windows Runtime (#WinRT) #win8" data-url="http://slshow.net/A7PzMY"&gt;Tweet&lt;/a&gt;&lt;/td&gt;            &lt;td&gt;&lt;g:plusone size="medium" href="http://www.silverlightshow.net/items/Windows-8-and-the-future-of-XAML-Part-2-The-Windows-Runtime-WinRT.aspx"&gt;&lt;/g:plusone&gt;            &lt;/td&gt;            &lt;td&gt;            &lt;/td&gt;        &lt;/tr&gt;    &lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;Welcome to part 2 in this series on Windows 8 and the future of XAML. The goal of this series is to give you an overview of the Windows 8 platform and teach you how you will be building Metro style applications when Windows 8 will be released. &lt;/p&gt;&lt;div style="border:1px solid #dddddd;border-image: initial; padding-bottom: 5px; background-color: #f3f3f3; margin-top: 5px; padding-left: 10px; width: 200px; float: right; margin-left: 10px; margin-right: 5px; padding-top: 5px;"&gt;&lt;h3&gt;Don't miss...&lt;/h3&gt;&lt;ul style="list-style-type: circle; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-left: 20px; font-size: 12px;"&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/video/Recording-of-Webinar-Introduction-to-XAML-Development-on-Windows-8-by-Gill-Cleeren.aspx"&gt;Webinar recording: Introduction to XAML Development on Windows 8&lt;/a&gt; &lt;/li&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/items/Using-the-Live-SDK-in-Windows-8-XAML-C-Metro-Applications.aspx"&gt;Article: Using the Live SDK in Windows 8 XAML/C# Metro Applications&lt;/a&gt; &lt;/li&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/ebooks/win8_odata.aspx"&gt;Ebook: Windows 8 XAML Metro Apps with OData&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;p style="padding-bottom: 5px; text-align: center;"&gt;&lt;a href="http://www.silverlightshow.net/ebooks/win8_odata.aspx" target="_self"&gt;&lt;img style="width: 107px; height: 150px;" alt="Ebook: Windows 8 XAML Metro Apps with OData" src="http://www.silverlightshow.net/Storage/Ebooks/win8_odata.png" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="font-size: 12px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.silverlightshow.net/ebooks.aspx"&gt;All SilverlightShow Ebooks&lt;/a&gt;&amp;nbsp;&lt;img alt="" src="http://www.silverlightshow.net/Storage/arrow-content.jpg" /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;In the first of this series, we looked at the developer preview of Windows 8, mostly from an end-user perspective. While showing you the new version, along the way, I explained several concepts which are new in this upcoming version of Windows, such as tiles, Metro style apps, charms and many more. From this article onwards, I won&amp;rsquo;t be explaining these concepts, you can refer to the first part for an explanation (of course, when the concept wasn&amp;rsquo;t covered, we&amp;rsquo;ll look into it!).&lt;/p&gt;&lt;p&gt;More importantly, what will we be looking at in this part? In the first part, we saw that Metro style apps are built using the Windows Runtime (aka WinRT). One question that I had after watching the first sessions of the BUILD conference (www.buildwindows.com) was a very simple question: &amp;ldquo;What exactly is WinRT and how does it relate to .NET?&amp;rdquo;. On top of that, I wondered if I would have to learn a new language or be able to leverage my .NET/Silverlight knowledge. All valid questions that I reckon many people have today. In this (and the next) part of this series, I will dive into WinRT: we&amp;rsquo;ll start writing some code that will eventually lead us to writing our first Windows 8 Metro style app! Fasten your seatbelt; we are ready for take-off!&lt;/p&gt;&lt;h2&gt;Hello World&amp;hellip; sorry, WinRT&lt;/h2&gt;&lt;p&gt;What exactly is Windows Runtime (WinRT)? Well, it can be described as a new programming model/framework that enables us to build Metro style apps using the language of our choice, be that a managed language (C# or VB.NET), C++ or JavaScript. It enables developers to build applications that heavily use functionality exposed by Windows, which was previously difficult to achieve. Below, you can once again see the Windows 8 diagram, shown at BUILD and discussed a lot since then. Note here that WinRT sits right on top of Windows as a thin layer, exposing functions of Windows. These functions can be used in Metro style apps from all languages. In this context, Microsoft speaks of a language projection, which makes it possible to use WinRT in a way that is native to the language. For .NET developers, using WinRT is very similar to writing .NET code. Concepts such as constructors, properties, async development and many more are exactly the same when writing Metro style apps based on WinRT. We&amp;rsquo;ll see that further in this article.&lt;/p&gt;&lt;p&gt;&lt;img style="display: inline;        border-width: 0px;border-style: solid;" title="clip_image002[1]" alt="clip_image002[1]" src="http://www.silverlightshow.net/Storage/Users/gillcleeren/clip_image002%5B1%5D_381d7455-bb98-450f-92a5-c6b7287a9b30.png" width="609" height="437" /&gt;&lt;/p&gt;&lt;p&gt;Note that XAML is the way to build up your UI when using either a managed language (C# or VB.NET) or C++. When choosing the JavaScript way, we can only use pure HTML/CSS, at this point, there&amp;rsquo;s no support for example to use something like Razor syntax.&lt;/p&gt;&lt;p&gt;WinRT exposes quite a lot of functions to Metro style apps. A lot of things that we are used to doing by writing some .NET code is now covered by WinRT. Things like IO, service access and even XAML itself has now become a part of WinRT. In quite a few places though, including in XAML, you won&amp;rsquo;t even notice that you aren&amp;rsquo;t writing .NET code (but again, more on this later in this articles). The following image shows the functions covered by WinRT (this image comes from slides shown at BUILD).&lt;/p&gt;&lt;p&gt;&lt;img style="display: inline;        border-width: 0px;border-style: solid;" title="clip_image004[1]" alt="clip_image004[1]" src="http://www.silverlightshow.net/Storage/Users/gillcleeren/clip_image004%5B1%5D_434e4713-b003-41f8-862b-3f235061fa45.png" width="609" height="405" /&gt;&lt;/p&gt;&lt;h2&gt;WinRT architecture&lt;/h2&gt;&lt;p&gt;Take a look at the image below. This schema gives an overview of the architecture of WinRT; we explain the different parts next.&lt;/p&gt;&lt;p&gt;&lt;img style="display: inline;        border-width: 0px;border-style: solid;" title="clip_image006[1]" alt="clip_image006[1]" src="http://www.silverlightshow.net/Storage/Users/gillcleeren/clip_image006%5B1%5D_5a5b65cf-0bdd-4a78-97e2-95fd646517c4.png" width="609" height="405" /&gt;&lt;/p&gt;&lt;p&gt;At the very base, we have Windows. Directly on top of Windows, we have the core building blocks of WinRT. As mentioned above, WinRT contains quite a few things we&amp;rsquo;ll discover later, such as XAML, pickers (FilePicker), IO and storage&amp;hellip;&lt;/p&gt;&lt;h3&gt;Windows Metadata&lt;/h3&gt;&lt;p&gt;The Windows Metadata is depicted on the left in the picture above. Windows Metadata (aka WinMD) refers to metadata files, similar to metadata for assemblies we have in .NET (a self-describing assembly). In WinRT, WinMD is conceptually the same: it describes what a WinRT component can do. It&amp;rsquo;s different in that it&amp;rsquo;s a separate file (whereas in .NET, metadata is included in the assembly itself). WinMD files are present on every installation of Windows 8 and they form the base of IntelliSense when writing Metro style apps in Visual Studio.&lt;/p&gt;&lt;p&gt;To see the WinMD files, simply points your Windows Explorer to Windows &amp;ndash;&amp;gt; System32 -&amp;gt; WinMetaData as shown below. Note that these *.winmd files only contain the metadata itself!&lt;/p&gt;&lt;p&gt;&lt;img style="display: inline;        border-width: 0px;border-style: solid;" title="clip_image008[1]" alt="clip_image008[1]" src="http://www.silverlightshow.net/Storage/Users/gillcleeren/clip_image008%5B1%5D_11b3b0ec-71d8-4449-8a2e-4bd2fa05fa78.jpg" width="609" height="366" /&gt;&lt;/p&gt;&lt;p&gt;We can even open these files with ILDASM and browse the code inside. Below, I have opened the Windows.Storage.Pickers metadata file. We can see all the methods and much more supported by this component. As you can see, there&amp;rsquo;s a definite influence by .NET on the way WinRT was built.&lt;/p&gt;&lt;p&gt;&lt;img style="display: inline;        border-width: 0px;border-style: solid;" title="clip_image010[1]" alt="clip_image010[1]" src="http://www.silverlightshow.net/Storage/Users/gillcleeren/clip_image010%5B1%5D_25ea2ecd-bfad-46ff-99ce-d50339bbf19c.jpg" width="417" height="529" /&gt;&lt;/p&gt;&lt;p&gt;The Windows namespace refers to the fact that all WinRT classes are under the Windows.* namespace.&lt;/p&gt;&lt;h3&gt;Language projections&lt;/h3&gt;&lt;p&gt;We have briefly touched already on the language projection. WinRT is written in native (C++) code. Being native, the WinRT APIs would normally have to be called using interop code (COM). Most developers don&amp;rsquo;t like to write COM code; luckily for us Microsoft understood this. They didn&amp;rsquo;t give us the native APIs to work with. No, instead, we get language projections. Basically such a projection enables us to use the native components in a way that&amp;rsquo;s natural and familiar for the language. Microsoft isn&amp;rsquo;t forcing us to learn a new language: they simply &amp;ldquo;project&amp;rdquo; WinRT in languages we already have and know today. We&amp;rsquo;ll see some code soon that proves this!&lt;/p&gt;&lt;p&gt;The Metro style apps we will write are built using WinRT components but using a managed language, C++ or JavaScript.&lt;/p&gt;&lt;h3&gt;The runtime broker&lt;/h3&gt;&lt;p&gt;Finally, the broker is responsible for checking if a Metro style app is declaring all its capabilities (such as accessing the Pictures library) and showing the user whether or not he/she permits this. We&amp;rsquo;ll see this broker further in this articles series again when we work with the webcam.&lt;/p&gt;&lt;h3&gt;Being async&lt;/h3&gt;&lt;p&gt;If you&amp;rsquo;ve watched some of the BUILD sessions online, you probably heard one of the speakers refer to the Windows 8 user experience being &amp;ldquo;Fast and Fluid&amp;rdquo;. Microsoft is clearly committed to performance with Windows 8. They want to user to have a responsive device, even on lower end devices. To achieve fast and fluid, we as developers need to break with a habit of the past: writing synchronous code and adopt the fact that we&amp;rsquo;ll have to focus on asynchronous code.&lt;/p&gt;&lt;p&gt;This &amp;ldquo;being async&amp;rdquo; is baked into the WinRT platform. Every call that takes longer than 50ms is by default now async. Previously in Silverlight, calls to a service were already asynchronous. That very concept is now applied on a much wider scale throughout Windows and WinRT. This results in writing async code when for example accessing the file system.&lt;/p&gt;&lt;p&gt;To anticipate on this, Microsoft introduced the &amp;ldquo;await&amp;rdquo; keyword in C#: this makes dealing with async calls in WinRT APIs much easier. Through the language projection, which makes WinRT feel familiar to the managed developer, we are able to use this keyword when writing Metro style apps. We&amp;rsquo;ll see in the code samples in the coming articles how this works.&lt;/p&gt;&lt;h2&gt;What&amp;rsquo;s in WinRT &lt;/h2&gt;&lt;p&gt;Now that we have a clearer understanding of WinRT, let&amp;rsquo;s take a look at what exactly there is available in WinRT. The following is a list of top-level namespaces in the WinRT API (developer preview):&lt;/p&gt;&lt;ul&gt;    &lt;li&gt;Windows.ApplicationModel &lt;/li&gt;    &lt;li&gt;Windows.Data &lt;/li&gt;    &lt;li&gt;Windows.Devices &lt;/li&gt;    &lt;li&gt;Windows.Foundation &lt;/li&gt;    &lt;li&gt;Windows.Globalization &lt;/li&gt;    &lt;li&gt;Windows.Graphics &lt;/li&gt;    &lt;li&gt;Windows.Management &lt;/li&gt;    &lt;li&gt;Windows.Media &lt;/li&gt;    &lt;li&gt;Windows.Networking &lt;/li&gt;    &lt;li&gt;Windows.Security &lt;/li&gt;    &lt;li&gt;Windows.Storage &lt;/li&gt;    &lt;li&gt;Windows.System &lt;/li&gt;    &lt;li&gt;Windows.UI[.Xaml] &lt;/li&gt;    &lt;li&gt;Windows.Web &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;A lot of things that were previously covered by .NET are now moved into WinRT. For these functionalities, you will be using WinRT APIs in your code. When writing XAML and you&amp;rsquo;re using a Button control, you are no longer using the System.Windows.Controls namespace and the Button class that&amp;rsquo;s part of it. Instead, you are using the Button class which is now living in the Windows.UI.Xaml namespace, courtesy of WinRT.&lt;/p&gt;&lt;p&gt;But what if you want to use something that&amp;rsquo;s part of .NET but isn&amp;rsquo;t covered in WinRT? Things like LINQ, threading&amp;hellip; Aren&amp;rsquo;t they available anymore?&lt;/p&gt;&lt;p&gt;The answer is: probably yes. I say probably because of the following. Microsoft adds a so-called Windows 8 Tailored Profile of .NET. The following image tries to clarify this concept. &lt;/p&gt;&lt;p&gt;We have the huge .NET API. Silverlight&amp;rsquo;s API is a tailored profile. It&amp;rsquo;s basically a subset of .NET. The same goes for Windows Phone 7: it contains some APIs of the full .NET and some specific ones, not used in any other tailored profile.&lt;/p&gt;&lt;p&gt;For Windows 8, there&amp;rsquo;s also a tailored profile available.&lt;/p&gt;&lt;p&gt;&lt;img style="display: inline;        border-width: 0px;border-style: solid;" title="clip_image012[1]" alt="clip_image012[1]" src="http://www.silverlightshow.net/Storage/Users/gillcleeren/clip_image012%5B1%5D_fa77a918-1a84-43d9-b7f1-e5741a51cfd0.png" width="490" height="490" /&gt;&lt;/p&gt;&lt;p&gt;In that tailored profile of Windows 8, the following APIs are available:&lt;/p&gt;&lt;ul&gt;    &lt;li&gt;System.Collections &lt;/li&gt;    &lt;li&gt;System.ComponentModel &lt;/li&gt;    &lt;li&gt;System.Diagnostics &lt;/li&gt;    &lt;li&gt;System.Dynamic &lt;/li&gt;    &lt;li&gt;System.Globalization &lt;/li&gt;    &lt;li&gt;System.IO &lt;/li&gt;    &lt;li&gt;System.Linq &lt;/li&gt;    &lt;li&gt;System.Net &lt;/li&gt;    &lt;li&gt;System.Numerics &lt;/li&gt;    &lt;li&gt;System.Reflection &lt;/li&gt;    &lt;li&gt;System.Resources &lt;/li&gt;    &lt;li&gt;System.Runtime &lt;/li&gt;    &lt;li&gt;System.Security &lt;/li&gt;    &lt;li&gt;System.ServiceModel &lt;/li&gt;    &lt;li&gt;System.Text &lt;/li&gt;    &lt;li&gt;System.Threading &lt;/li&gt;    &lt;li&gt;System.Xml &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Although the list is quite long, the tailored profile is in fact quite small. It&amp;rsquo;s even smaller currently than the Windows Phone one. As Metro-style apps are focused on the consumer side of things, the enterprise level stuff is not covered. There&amp;rsquo;s no Console support, ASP.NET integration, Entity Framework support&amp;hellip; Keep this in mind when thinking of your first Metro-style app!&lt;/p&gt;&lt;h2&gt;Summary&lt;/h2&gt;&lt;p&gt;In this article, we&amp;rsquo;ve now deeply covered technical concepts surrounding the development of WinRT, setting the stage for writing Metro-style apps. And that&amp;rsquo;s exactly what we&amp;rsquo;ll be doing in the next articles of this series. Stay tuned for part 3!&lt;/p&gt;&lt;h2&gt;About Gill Cleeren&lt;/h2&gt;&lt;p&gt;Gill Cleeren is Microsoft Regional Director (&lt;a href="http://www.theregion.com/"&gt;www.theregion.com&lt;/a&gt;), Silverlight MVP (former ASP.NET MVP) and Telerik MVP. He lives in Belgium where he works as .NET architect at Ordina (&lt;a href="http://www.ordina.be/"&gt;http://www.ordina.be/&lt;/a&gt;). Passionate about .NET, he&amp;rsquo;s always playing with the newest bits. In his role as Regional Director, Gill has given many sessions, webcasts and trainings on new as well as existing technologies, such as Silverlight, ASP.NET and WPF at conferences including TechEd Berlin 2010, TechDays Belgium &amp;ndash; Switzerland - Sweden, DevDays NL, NDC Oslo Norway, SQL Server Saturday Switserland, Spring Conference UK, Silverlight Roadshow in Sweden, Telerik RoadShow UK&amp;hellip; He&amp;rsquo;s also the author of many articles in various developer magazines and for SilverlightShow.net and he organizes the yearly Community Day event in Belgium. He also leads Visug (&lt;a href="http://www.visug.be/"&gt;www.visug.be&lt;/a&gt;), the largest .NET user group in Belgium. Gill recently published his first book: &amp;ldquo;&lt;a href="https://www.packtpub.com/microsoft-silverlight-4-data-and-services-cookbook/book"&gt;Silverlight 4 Data and Services Cookbook&lt;/a&gt;&amp;rdquo; (Packt Publishing). His second book, &lt;a href="http://www.packtpub.com/microsoft-silverlight-5-data-and-services-cookbook/book"&gt;Silverlight 5 Data and Services Cookbook&lt;/a&gt; will be released early 2012. You can find his blog at &lt;a href="http://www.snowball.be/"&gt;www.snowball.be&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;Twitter: @gillcleeren&lt;/p&gt;</description>      <link>http://www.silverlightshow.net/items/Windows-8-and-the-future-of-XAML-Part-2-The-Windows-Runtime-WinRT.aspx</link>      <author>editorial@silverlightshow.net (Gill Cleeren )</author>      <comments>http://www.silverlightshow.net/items/Windows-8-and-the-future-of-XAML-Part-2-The-Windows-Runtime-WinRT.aspx#comments</comments>      <guid isPermaLink="true">http://www.silverlightshow.net/items/Windows-8-and-the-future-of-XAML-Part-2-The-Windows-Runtime-WinRT.aspx</guid>      <pubDate>Tue, 31 Jan 2012 00:37:06 GMT</pubDate>    </item>    <item>      <title>Using the Live SDK in Windows 8 XAML/C# Metro Applications</title>      <description>&lt;table width="20"&gt;    &lt;tbody&gt;        &lt;tr&gt;            &lt;td&gt;            &lt;div class="fb-like" data-show-faces="true" data-send="false" data-href="http://www.silverlightshow.net/items/Using-the-Live-SDK-in-Windows-8-XAML-C-Metro-Applications.aspx" data-font="segoe ui" data-layout="button_count"&gt;&lt;/div&gt;            &lt;/td&gt;            &lt;td&gt;&lt;a href="https://twitter.com/share" class="twitter-share-button" data-via="silverlightshow" data-counturl="http://www.silverlightshow.net/items/Using-the-Live-SDK-in-Windows-8-XAML-C-Metro-Applications.aspx" data-count="horizontal" data-text="Reading @mbcrump's article 'Using the Live SDK in #Windows8 XAML/C# Metro Applications' #win8" data-url="http://slshow.net/zsh5cA"&gt;Tweet&lt;/a&gt;&lt;/td&gt;            &lt;td&gt;&lt;g:plusone size="medium" href="http://www.silverlightshow.net/items/Using-the-Live-SDK-in-Windows-8-XAML-C-Metro-Applications.aspx"&gt;&lt;/g:plusone&gt;            &lt;/td&gt;            &lt;td&gt;            &lt;/td&gt;        &lt;/tr&gt;    &lt;/tbody&gt;&lt;/table&gt;&lt;h3&gt;Introduction&lt;/h3&gt;&lt;p&gt;The Microsoft&amp;rsquo;s Live SDK (or commonly referred to as Live Connect), provides a set of controls and APIs that enables applications to integrate single sign-on (SSO) functionality using Windows Live ID. You can also use it to access data in SkyDrive, Hotmail, and Windows Live Messenger.&lt;/p&gt;&lt;div style="border:1px solid #dddddd;width: 200px; padding-top: 5px; padding-bottom: 5px; padding-left: 10px; margin-top: 5px; margin-right: 5px; margin-left: 10px; float: right; background-color: #f3f3f3; border-image: initial;"&gt;&lt;h3&gt;Don't miss...&lt;/h3&gt;&lt;ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-left: 20px; font-size: 12px; list-style-type: circle;"&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/video/Recording-of-Webinar-Introduction-to-XAML-Development-on-Windows-8-by-Gill-Cleeren.aspx"&gt;Webinar recording: Introduction to XAML Development on Windows 8&lt;/a&gt; &lt;/li&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/news/Free-SilverlightShow-Webinar-Metro-and-WinRT-for-the-Silverlight-WPF-Developer-.aspx"&gt;Webinar on Feb 2nd: Metro and WinRT for the Silverlight/WPF Developer&lt;/a&gt; &lt;/li&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/ebooks/win8_odata.aspx"&gt;Ebook: Windows 8 XAML Metro Apps with OData&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;p style="padding-bottom: 5px; text-align: center;"&gt;&lt;a href="http://www.silverlightshow.net/ebooks/win8_odata.aspx" target="_self"&gt;&lt;img style="width: 107px; height: 150px;" alt="Ebook: Windows 8 XAML Metro Apps with OData" src="http://www.silverlightshow.net/Storage/Ebooks/win8_odata.png" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="font-size: 12px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.silverlightshow.net/ebooks.aspx"&gt;All SilverlightShow Ebooks&lt;/a&gt;&amp;nbsp;&lt;img alt="" src="http://www.silverlightshow.net/Storage/arrow-content.jpg" /&gt;&lt;/p&gt;&lt;/div&gt;The library supports multiple platforms, including Windows Phone 7 Mango and Windows 8 Metro Style applications using either C#, Visual Basic or JavaScript.&amp;nbsp; In this article, we will build our first metro style application using the Live SDK and XAML/C#.&lt;h3&gt;Download the Bits&lt;/h3&gt;&lt;p&gt;Let&amp;rsquo;s begin by downloading the following items:&lt;/p&gt;&lt;ul&gt;    &lt;li&gt;You will need to download the &lt;a href="http://msdn.microsoft.com/en-us/windows/"&gt;Windows 8 Developer Preview&lt;/a&gt; to follow along with this article. This will install Windows 8 along with the new Visual Studio 11 which is required to build Metro applications. &lt;/li&gt;    &lt;li&gt;Download the &lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=28195"&gt;Live SDK v5.0&lt;/a&gt; or higher - The Live SDK provides a set of controls and APIs that enable applications to integrate single sign-on (SSO) using Windows Live ID and to access data in SkyDrive, Hotmail, and Windows Live Messenger. &lt;/li&gt;    &lt;li&gt;Optional, but highly recommended - The &lt;a href="http://code.msdn.microsoft.com/windowsapps/"&gt;Metro Style App Samples&lt;/a&gt; which provides various sample metro applications for future reference. It is licensed for public use, so feel free to use it in your own applications. &lt;/li&gt;    &lt;li&gt;Optional, but recommended - Read the &lt;a href="http://download.microsoft.com/download/1/E/4/1E455D53-C382-4A39-BA73-55413F183333/Windows_Developer_Preview-Windows8_guide.pdf"&gt;Windows 8 Developer Preview guide&lt;/a&gt; to start learning about the features/functionality coming in Windows 8. &lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;   &lt;br /&gt;Signing into Windows 8 Using your Windows Live ID&lt;/h3&gt;&lt;p&gt;One of the most important things to learn before building your first application that uses the Live SDK is the various ways to sign into your Windows 8 machine.    &lt;br /&gt;&lt;br /&gt;You currently have two ways to sign into your Windows 8 machine and each way determines the prompts the users will receive when launching a application that uses the Live SDK. &lt;/p&gt;&lt;ol&gt;    &lt;li&gt;A Local Account &amp;ndash; which stores all of the data regarding your profile on the local machine.    &lt;ul&gt;        &lt;li&gt;If you user is using this method, then they will get the prompt to sign in and to allow access. &lt;/li&gt;    &lt;/ul&gt;    &lt;/li&gt;    &lt;li&gt;A Windows Live ID &amp;ndash; retrieves profile information directly from your Live ID and enables features such as roaming and easy sign-on to Microsoft services.    &lt;ul&gt;        &lt;li&gt;If you user is using this method, then they will only get the prompt to allow access.&amp;nbsp; &lt;/li&gt;    &lt;/ul&gt;    &lt;/li&gt;&lt;/ol&gt;&lt;p&gt;In this tutorial, we will be signing into &lt;strong&gt;Windows 8 using our Live ID&lt;/strong&gt;. &lt;/p&gt;&lt;p&gt;If you have already setup a &amp;ldquo;Local Account&amp;rdquo; then you can switch very easily by going to Control Panel &amp;ndash;&amp;gt; Users then clicking on &amp;ldquo;Switch to a Windows Live ID&amp;rdquo; as shown below. &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/mbcrump/__1_4.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="1" alt="1" src="http://www.silverlightshow.net/Storage/Users/mbcrump/__1_thumb_1.png" width="574" height="108" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;You will then be prompted to enter your current password of the local account and log in using your Live ID username/password. If you don&amp;rsquo;t have one then you may sign up for one through this wizard. &lt;/p&gt;&lt;p&gt;Immediately following you should receive an email similar to the one below: &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/mbcrump/___________2_2.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="2" alt="2" src="http://www.silverlightshow.net/Storage/Users/mbcrump/___________2_thumb.png" width="569" height="301" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;If you click on the link to confirm your identity then a web browser will pop open and you will be greeted with &amp;ldquo;Manage Security Info&amp;rdquo;. This screen will list mobile devices, email address and trusted PC linked to your account. As we can see below that I have three Windows 8 machines linked to my account. &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/mbcrump/__________3_2.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="3" alt="3" src="http://www.silverlightshow.net/Storage/Users/mbcrump/__________3_thumb.png" width="331" height="106" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;You can also add a new trusted PC manually with the &amp;ldquo;Add New&amp;rdquo; link. To use this feature, you must access your account using Internet Explorer and have Windows Live Essentials installed.&lt;/p&gt;&lt;h3&gt;Let&amp;rsquo;s Get Started&lt;/h3&gt;&lt;p&gt;Now that we have the necessary tools to begin building a Metro Application using C#/XAML and we we have signed into Windows 8 using our Live ID, let&amp;rsquo;s begin. &lt;/p&gt;&lt;p&gt;In this sample application, we are going to retrieve the following information from the users profile: &lt;/p&gt;&lt;ul&gt;    &lt;li&gt;Users First and Last Name &lt;/li&gt;    &lt;li&gt;What gender they are and what region they live in &lt;/li&gt;    &lt;li&gt;URL to their Live Profile &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;As well as add a contact to their address book. &lt;/p&gt;&lt;p&gt;Launch Visual Studio 11 Developer Preview and select &lt;strong&gt;Visual C#&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Windows Metro style&lt;/strong&gt; &amp;ndash;&amp;gt; &lt;strong&gt;Application&lt;/strong&gt;. Give the project the name &lt;strong&gt;MyFirstLiveConnectApp&lt;/strong&gt; and hit OK. &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/mbcrump/_________4_2.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="4" alt="4" src="http://www.silverlightshow.net/Storage/Users/mbcrump/_________4_thumb.png" width="663" height="419" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;Adding the Live SDK References&lt;/h3&gt;&lt;p&gt;In case you haven&amp;rsquo;t already, please download and install the &lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=28195"&gt;Live SDK v5.0&lt;/a&gt; before proceeding.&amp;nbsp; &lt;/p&gt;&lt;p&gt;Once that is complete, we can add the references to our project by Right Clicking on References inside of Visual Studio 11 and selecting &amp;ldquo;Add Reference&amp;rdquo;. Next, you will need to select Windows &amp;ndash;&amp;gt; Extension SDKs &amp;ndash;&amp;gt; Live SDK then Add. &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/mbcrump/_5_4.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="5" alt="5" src="http://www.silverlightshow.net/Storage/Users/mbcrump/_5_thumb_1.png" width="629" height="353" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;Registering the Application with Windows Live&lt;/h3&gt;&lt;p&gt;Before we begin building this app, you need to register it with Windows Live.&amp;nbsp; You can register your app by going to the &lt;a href="https://manage.dev.live.com/build"&gt;application management site&lt;/a&gt; and following the instructions on the site.&lt;/p&gt;&lt;p&gt;The only item that you want to pay special attention to is the &lt;strong&gt;Package Name&lt;/strong&gt; in Step 3 as you will copy and paste that into your &lt;strong&gt;Application&amp;rsquo;s Package.appxmanifest&lt;/strong&gt; file. (A walk-through is included in that site).&lt;/p&gt;&lt;p&gt;If you don&amp;rsquo;t register your application and try to use Live services, then your user will be presented with the following error message. &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/mbcrump/6_6.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="6" alt="6" src="http://www.silverlightshow.net/Storage/Users/mbcrump/6_thumb_2.png" width="469" height="114" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Once this process is complete you can view your registered applications &lt;a href="https://manage.dev.live.com/Applications/Index"&gt;here&lt;/a&gt;. This page will contain all the API settings needed to use the Live SDK in your projects. &lt;/p&gt;&lt;h3&gt;Understanding what is under the hood&amp;hellip;&lt;/h3&gt;&lt;p&gt;When we select the C#/XAML Application template, Visual Studio 11 provides us with basic application structure. Before we begin building our own, it makes sense to spend a few minutes examining the XAML pages included in the existing structure.&amp;nbsp; &lt;/p&gt;&lt;ul&gt;    &lt;li&gt;&lt;strong&gt;References &amp;ndash; &lt;/strong&gt;It is empty by default because Microsoft decided that all the WinRT assemblies are always referenced by default and they have no reason to display them. Any of your own referenced assemblies or third party references will be shown as in this case our Windows Live SDK is shown. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;App.xaml&lt;/strong&gt; is used by Metro applications (amongst other XAML technologies) to declare shared resources like brushes, various style objects etc. The code behind file of App.xaml is used to handle global application level events like OnLaunched and OnActivated. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;MainPage.xaml&lt;/strong&gt; contains the markup of what our user interface will look like once the application is executed. The default Metro MainPage.xaml file consists of a UserControl and a Grid. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Package.appxmanifest&lt;/strong&gt; &amp;ndash; Is basically an XML file, but if you double click it then you will notice four tab panels inside it (named: Application UI, Capabilities, Declarations and Packaging) &lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;   &lt;br /&gt;Back to Building a Simple User Interface&lt;/h3&gt;&lt;p&gt;Here is a mock-up screen of what our app will look like: &lt;/p&gt;&lt;h3&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/mbcrump/_____8_2.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="8" alt="8" src="http://www.silverlightshow.net/Storage/Users/mbcrump/______8_thumb.png" width="556" height="271" /&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;As you can see we have 2 buttons: &lt;/p&gt;&lt;ol&gt;    &lt;li&gt;Windows Live Sign-In &amp;ndash; Provided by the Live SDK and is used to log the user into the app to retrieve Live Services information. &lt;/li&gt;    &lt;li&gt;Create Contact &amp;ndash; Just a regular button that will be used to create a contact in the users address book. &lt;/li&gt;&lt;/ol&gt;&lt;p&gt;On the left hand side you can see information retrieved by the Live SDK including first and last name, gender, location and live profile URL. &lt;/p&gt;&lt;p&gt;Double click on your MainPage.xaml and replace the existing Grid with the code snippet provided below.&lt;/p&gt;&lt;div style="border:1px solid silver;border-image: initial; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Grid&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;x:Name&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="LayoutRoot"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Background&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="#FF0C0C0C"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Width&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="251*"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;ColumnDefinition&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Width&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="1116*"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;StackPanel&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Grid&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;ColumnSpan&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="2"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;live:SignInButton&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Name&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="btnLogIn"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Scopes&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="wl.signin wl.basic wl.contacts_create"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Button&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;x:Name&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="btnCreateContact"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Content&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="Create Contact"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Click&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="btnCreateContact_Click"&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;TextBlock&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Name&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="tbName"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Width&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="600"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Height&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="150"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;FontSize&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="32"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;TextWrapping&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="Wrap"&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;TextBlock&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Name&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="tbGender"&lt;/span&gt;  &lt;span style="color: #ff0000;"&gt;Width&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="600"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Height&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="150"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;FontSize&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="32"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;TextWrapping&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="Wrap"&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt;  11:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;TextBlock&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Name&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="tbLiveProfile"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Width&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="600"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Height&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="150"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;FontSize&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="32"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;TextWrapping&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="Wrap"&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt;  12:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;TextBlock&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Name&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="tbError"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Text&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="Error Message"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Width&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="600"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Height&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="150"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;FontSize&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="32"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt;  13:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;StackPanel&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum14" style="color: #606060;"&gt;  14:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum15" style="color: #606060;"&gt;  15:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;Grid&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;You will also want to make sure that your XML Namespaces for the Live SDK have been added to the page: &lt;/p&gt;&lt;div style="border:1px solid silver;border-image: initial; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; xmlns:live="using:Microsoft.Live.Controls"&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;Note: You will get &amp;ldquo;Invalid Markup&amp;rdquo; with the XAML provided because we are still in the developer preview stage. It is ok to proceed. &lt;/em&gt;&lt;/p&gt;&lt;p&gt;The only thing to really pay attention to here is the &lt;a href="http://msdn.microsoft.com/en-us/library/hh243646.aspx"&gt;Scopes&lt;/a&gt; listed in the &lt;strong&gt;SignInButton&lt;/strong&gt;. As you see we have three scopes. &lt;/p&gt;&lt;ol&gt;    &lt;li&gt;wl.signin - Single sign-in behavior. With &lt;em&gt;single sign-in&lt;/em&gt;, users who are already signed in to Live Connect are also signed in to your website. &lt;/li&gt;    &lt;li&gt;wl.basic - Read access to a user's basic profile info. Also enables read access to a user's list of contacts. &lt;/li&gt;    &lt;li&gt;wl.contacts_create - Creation of new contacts in the user's address book. &lt;/li&gt;&lt;/ol&gt;&lt;p&gt;The first two are core and the last is an extended scope. We need all three of these to complete the requirements listed in this sample application. &lt;/p&gt;&lt;p&gt;This will give us our user interface, now we will just need to wire up the event handlers which I am going to split up into two sections for learning purposes. &lt;/p&gt;&lt;h3&gt;Coding Time &amp;ndash; Basic User Information&lt;/h3&gt;&lt;p&gt;Let&amp;rsquo;s go ahead and add in functionality to retrieve basic user information from the Live SDK. &lt;/p&gt;&lt;p&gt;First, add the proper namespaces and then the following code:&lt;/p&gt;&lt;div style="border:1px solid silver;border-image: initial; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; Microsoft.Live;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; Microsoft.Live.Controls;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="border:1px solid silver;border-image: initial; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; LiveConnectClient liveClient;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; LiveConnectSession session;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; MainPage()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;     InitializeComponent();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.btnLogIn.SessionChanged += btnLogIn_OnSessionChanged;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; btnLogIn_OnSessionChanged(&lt;span style="color: #0000ff;"&gt;object&lt;/span&gt; sender, LiveConnectSessionChangedEventArgs e)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt;  11:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt;  12:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (e.Session != &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; e.Status == LiveConnectSessionStatus.Connected)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt;  13:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum14" style="color: #606060;"&gt;  14:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.liveClient = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; LiveConnectClient(e.Session);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum15" style="color: #606060;"&gt;  15:&lt;/span&gt;         session = e.Session;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum16" style="color: #606060;"&gt;  16:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.liveClient.GetCompleted += OnGetCompleted;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum17" style="color: #606060;"&gt;  17:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.liveClient.GetAsync(&lt;span style="color: #006080;"&gt;"me"&lt;/span&gt;, &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum18" style="color: #606060;"&gt;  18:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum19" style="color: #606060;"&gt;  19:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum20" style="color: #606060;"&gt;  20:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum21" style="color: #606060;"&gt;  21:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.liveClient = &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum22" style="color: #606060;"&gt;  22:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum23" style="color: #606060;"&gt;  23:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum24" style="color: #606060;"&gt;  24:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum25" style="color: #606060;"&gt;  25:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; OnGetCompleted(&lt;span style="color: #0000ff;"&gt;object&lt;/span&gt; sender, LiveOperationCompletedEventArgs e)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum26" style="color: #606060;"&gt;  26:&lt;/span&gt; {           &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum27" style="color: #606060;"&gt;  27:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (e.Error == &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum28" style="color: #606060;"&gt;  28:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum29" style="color: #606060;"&gt;  29:&lt;/span&gt;         dynamic result = e.Result;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum30" style="color: #606060;"&gt;  30:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.tbName.Text = &lt;span style="color: #006080;"&gt;"Hello, "&lt;/span&gt; + result.first_name + &lt;span style="color: #006080;"&gt;" "&lt;/span&gt; + result.last_name;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum31" style="color: #606060;"&gt;  31:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.tbGender.Text = &lt;span style="color: #006080;"&gt;"You are a "&lt;/span&gt; + result.gender + &lt;span style="color: #006080;"&gt;" that lives in "&lt;/span&gt; + result.locale + &lt;span style="color: #006080;"&gt;"."&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum32" style="color: #606060;"&gt;  32:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.tbLiveProfile.Text = &lt;span style="color: #006080;"&gt;"Your Live Profile can be found at: "&lt;/span&gt; + result.link;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum33" style="color: #606060;"&gt;  33:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum34" style="color: #606060;"&gt;  34:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum35" style="color: #606060;"&gt;  35:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum36" style="color: #606060;"&gt;  36:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.tbError.Text = e.Error.ToString();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum37" style="color: #606060;"&gt;  37:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum38" style="color: #606060;"&gt;  38:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;The first thing that you will notice is that we are creating an event hander to handle the SessionChanged event. If we can determine that the session is valid then we create a new LiveConnectClient and pass the session to our LiveConnectSession. We finish up with adding an event handler on GetCompleted which will return the current users profile information and display them in our TextBlocks. Finally, we are outputting all errors to the tbError TextBlock. &lt;/p&gt;&lt;h3&gt;Coding Time &amp;ndash; Adding a new contact to the users Address Book&lt;/h3&gt;&lt;p&gt;Let&amp;rsquo;s go ahead and add in functionality to add a new contact to the users address book from the Live SDK. &lt;/p&gt;&lt;div style="border:1px solid silver;border-image: initial; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; btnCreateContact_Click(&lt;span style="color: #0000ff;"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;     LiveConnectClient createContact = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; LiveConnectClient(session);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;     var contact = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Dictionary&amp;lt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;, &lt;span style="color: #0000ff;"&gt;object&lt;/span&gt;&amp;gt;();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;     contact.Add(&lt;span style="color: #006080;"&gt;"first_name"&lt;/span&gt;, &lt;span style="color: #006080;"&gt;"Michael"&lt;/span&gt;);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;     contact.Add(&lt;span style="color: #006080;"&gt;"last_name"&lt;/span&gt;, &lt;span style="color: #006080;"&gt;"Crump"&lt;/span&gt;);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;     createContact.PostCompleted +=&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; EventHandler&amp;lt;LiveOperationCompletedEventArgs&amp;gt;(CreateContactProperties_PostCompleted);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt;     createContact.PostAsync(&lt;span style="color: #006080;"&gt;"me/contacts"&lt;/span&gt;, contact);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt;  11:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt;  12:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt;  13:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum14" style="color: #606060;"&gt;  14:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; CreateContactProperties_PostCompleted(&lt;span style="color: #0000ff;"&gt;object&lt;/span&gt; sender, LiveOperationCompletedEventArgs e)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum15" style="color: #606060;"&gt;  15:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum16" style="color: #606060;"&gt;  16:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (e.Error == &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum17" style="color: #606060;"&gt;  17:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum18" style="color: #606060;"&gt;  18:&lt;/span&gt;         tbName.Text = &lt;span style="color: #006080;"&gt;"Contact"&lt;/span&gt; +&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum19" style="color: #606060;"&gt;  19:&lt;/span&gt;             e.Result[&lt;span style="color: #006080;"&gt;"first_name"&lt;/span&gt;].ToString() + &lt;span style="color: #006080;"&gt;" "&lt;/span&gt; + e.Result[&lt;span style="color: #006080;"&gt;"last_name"&lt;/span&gt;].ToString() +&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum20" style="color: #606060;"&gt;  20:&lt;/span&gt;             &lt;span style="color: #006080;"&gt;" created with ID "&lt;/span&gt; +&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum21" style="color: #606060;"&gt;  21:&lt;/span&gt;             e.Result[&lt;span style="color: #006080;"&gt;"id"&lt;/span&gt;].ToString();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum22" style="color: #606060;"&gt;  22:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum23" style="color: #606060;"&gt;  23:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum24" style="color: #606060;"&gt;  24:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum25" style="color: #606060;"&gt;  25:&lt;/span&gt;         tbError.Text = &lt;span style="color: #006080;"&gt;"Error calling API: "&lt;/span&gt; + e.Error.ToString();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum26" style="color: #606060;"&gt;  26:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum27" style="color: #606060;"&gt;  27:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;In this sample, we are creating a new &lt;strong&gt;LiveConnectClient&lt;/strong&gt; by passing into it the existing session. Once that is complete, we create a Dictionary and add the users first_name and last_name to the dictionary. Finally, we create a PostCompleted event handler which will return the textblock with a success or an error. The last call is PostAsync which send a POST request to the specified Uri as an asynchronous operation.&lt;/p&gt;&lt;h3&gt;Ready for Liftoff&lt;/h3&gt;&lt;p&gt;Go ahead and build the application and run it. &lt;/p&gt;&lt;p&gt;When you first hit the &amp;ldquo;Sign In&amp;rdquo; Button you will be presented with the following: &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/mbcrump/____7_2.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="7" alt="7" src="http://www.silverlightshow.net/Storage/Users/mbcrump/____7_thumb.png" width="504" height="429" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;Note: After you accept this one time then you will not have to accept it again.&lt;/em&gt; &lt;/p&gt;&lt;p&gt;Notice that the application says it you allow access then it will view your profile and contact list. The application automatically knows which features it is using by the scopes defined earlier. &lt;/p&gt;&lt;p&gt;Select &amp;ldquo;Yes&amp;rdquo; and then click the &amp;ldquo;Sign In Button&amp;rdquo; located on the right hand side of your screen and you should see your Live profile information as long as you have filled it out in Windows Live. &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/mbcrump/____9_2.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="9" alt="9" src="http://www.silverlightshow.net/Storage/Users/mbcrump/____9_thumb.png" width="326" height="219" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Next, click on the Create Contact button and you should see the following: &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/mbcrump/____10_2.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="10" alt="10" src="http://www.silverlightshow.net/Storage/Users/mbcrump/____10_thumb.png" width="411" height="63" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;You can now sign into your &lt;a href="http://explore.live.com/"&gt;Windows Live&lt;/a&gt; account and select &amp;ldquo;Contacts&amp;rdquo; under &amp;ldquo;Hotmail&amp;rdquo; and see the contact that you just created. &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/mbcrump/____11_2.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="11" alt="11" src="http://www.silverlightshow.net/Storage/Users/mbcrump/____11_thumb.png" width="541" height="208" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Congratulations, you have now completed your first Metro application using XAML/C# that uses the Live SDK. &lt;/p&gt;&lt;h3&gt;Conclusion&lt;/h3&gt;&lt;p&gt;At this point, we have seen how you would create a Windows 8 Metro application using XAML/C# that retrieves and updates information from the Live SDK. Now that you are equipped with the basics of using the Live SDK, I encourage you to explore the Live SDK further as we have barely scratched the surface. I want to thank you for reading this article and if you ever have any questions feel free to contact me on the various sources listed below. I also wanted to thank SilverlightShow for giving me the opportunity to share this information with everyone. &lt;/p&gt;&lt;p&gt;You can follow Michael on Twitter at &lt;a href="http://www.twitter.com/mbcrump"&gt;mbcrump&lt;/a&gt; or keep up with his blog by visiting &lt;a href="http://michaelcrump.net/"&gt;michaelcrump.net&lt;/a&gt;.&lt;/p&gt;</description>      <link>http://www.silverlightshow.net/items/Using-the-Live-SDK-in-Windows-8-XAML-C-Metro-Applications.aspx</link>      <author>editorial@silverlightshow.net (Michael Crump )</author>      <comments>http://www.silverlightshow.net/items/Using-the-Live-SDK-in-Windows-8-XAML-C-Metro-Applications.aspx#comments</comments>      <guid isPermaLink="true">http://www.silverlightshow.net/items/Using-the-Live-SDK-in-Windows-8-XAML-C-Metro-Applications.aspx</guid>      <pubDate>Mon, 30 Jan 2012 03:59:34 GMT</pubDate>    </item>    <item>      <title>Playing A Sound, Simplified</title>      <link>http://feedproxy.google.com/~r/JesseLiberty-SilverlightGeek/~3/-dIhlb0Gt-4/</link>      <comments>http://jesseliberty.com/2012/01/27/playing-a-sound-simplified/#comments</comments>      <pubDate>Fri, 27 Jan 2012 16:49:25 +0000</pubDate>      <creator xmlns="http://purl.org/dc/elements/1.1/">Jesse Liberty</creator>      <category><![CDATA[Essentials]]></category>      <category><![CDATA[Mango]]></category>      <category><![CDATA[Mini-Tutorial]]></category>      <category><![CDATA[WindowsPhone]]></category>      <guid isPermaLink="false">http://jesseliberty.com/?p=5187</guid>      <encoded xmlns="http://purl.org/rss/1.0/modules/content/"><![CDATA[Windows Phone Tutorial In a previous posting I discussed how to play a sound using a background process.&#160; That is great when you need the sound to continue playing even if you leave your application. But much of the time &#8230; Continue reading &#8594;<br/><br/>For the complete article and hyperlinks, please visit my blog at http://JesseLiberty.com<div class="feedflare"><a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=-dIhlb0Gt-4:TAS0OwCej2k:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=-dIhlb0Gt-4:TAS0OwCej2k:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=-dIhlb0Gt-4:TAS0OwCej2k:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?i=-dIhlb0Gt-4:TAS0OwCej2k:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=-dIhlb0Gt-4:TAS0OwCej2k:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?i=-dIhlb0Gt-4:TAS0OwCej2k:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=-dIhlb0Gt-4:TAS0OwCej2k:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?i=-dIhlb0Gt-4:TAS0OwCej2k:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=-dIhlb0Gt-4:TAS0OwCej2k:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?d=qj6IDK7rITs" border="0"></img></a></div><img src="http://feeds.feedburner.com/~r/JesseLiberty-SilverlightGeek/~4/-dIhlb0Gt-4" height="1" width="1"/>]]></encoded>      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://jesseliberty.com/2012/01/27/playing-a-sound-simplified/feed/</commentRss>      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">2</comments>      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://jesseliberty.com/2012/01/27/playing-a-sound-simplified/</origLink>    </item>    <item>      <title>Bug fix: WPF4 project template for #MVVMLight V3</title>      <link>http://geekswithblogs.net/lbugnion/archive/2012/01/25/bug-fix-wpf4-project-template-for-mvvmlight-v3.aspx</link>      <description>&lt;p&gt;Ironically, my last release of MVVM Light V3 was about fixing bugs in templates and making them better. In the process however, seems that I introduced a regression bug in the WPF4 project templates. Yep shit happens.&lt;/p&gt;  &lt;h2&gt;How do I know if I have the bug?&lt;/h2&gt;  &lt;p&gt;Check the Programs and Features control panel, and look for MVVM Light. If the “Version” column shows &lt;font color="#ff0000"&gt;3.0.&lt;font size="3"&gt;&lt;strong&gt;2&lt;/strong&gt;&lt;/font&gt;.19&lt;/font&gt;, you have the bug. If it shows anything higher, you don’t. For instance, the new version with the bug correction is 3.0.3.19. Also, any version 4.*.*.* does not have this bug.&lt;/p&gt; &lt;a title="MVVM Light version check" href="http://www.flickr.com/photos/36917929@N06/6757419835"&gt;&lt;img src="http://farm8.staticflickr.com/7164/6757419835_f830cfcc68_b_d.jpg" /&gt;&lt;/a&gt;   &lt;p&gt;Alternatively, simply try to create a new WPF4 MVVM Light application in Studio. If you see the following warning, you have the bug.&lt;/p&gt; &lt;a title="Snagit Capture for Flickr" href="http://www.flickr.com/photos/36917929@N06/6757445519"&gt;&lt;img src="http://farm8.staticflickr.com/7171/6757445519_ec38c6852f_d.jpg" /&gt;&lt;/a&gt;   &lt;h2&gt;Upgrading&lt;/h2&gt;  &lt;p&gt;To fix the bug, &lt;a href="http://mvvmlight.codeplex.com/releases/view/71278"&gt;simply download V3.0.3.19 from Codeplex&lt;/a&gt; and install. You don’t need to uninstall the previous version.&lt;/p&gt;  &lt;h2&gt;What’s next?&lt;/h2&gt;  &lt;p&gt;I am working hard on V4 and have some nice improvements coming up. Many people have asked me when the “beta” will come out of MVVM Light, and the answer is “soon”. In the coming few days, I will publish a temporary release that corrects a few memory leaks, notably in the Messenger and in the RelayCommand. This will give expert users time to test and report issues. Then I still have a couple of fixes and I will release a release candidate. I won’t add any new feature after the RC, but will merely fix bugs if people find some. Once the RC is deemed stable, I will release V4 and take a deep breath! &lt;/p&gt;  &lt;p&gt;And yes, there will be a V5 &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://geekswithblogs.net/images/geekswithblogs_net/lbugnion/Windows-Live-Writer/Small-bug-fix-WPF4-project-template-for-_14B52/wlEmoticon-smile_2.png" /&gt;&lt;/p&gt;  &lt;p&gt;Happy coding,    &lt;br /&gt;Laurent&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div style="margin-bottom: -1em"&gt;   &lt;div style="vertical-align: middle"&gt;&lt;a href="http://www.galasoft.ch/"&gt;&lt;img title="GalaSoft Laurent Bugnion" alt="GalaSoft Laurent Bugnion" src="http://www.galasoft.ch/logo/Current/logo_120x30.png" /&gt;&lt;/a&gt; &lt;/div&gt;    &lt;div style="position: relative; top: -36px; left: 130px"&gt;&lt;strong&gt;&lt;a href="http://www.galasoft.ch/contact_en.html"&gt;Laurent Bugnion (GalaSoft)&lt;/a&gt;&lt;/strong&gt;       &lt;br /&gt;&lt;a href="http://feeds.feedburner.com/galasoft"&gt;Subscribe&lt;/a&gt; | &lt;a href="http://twitter.com/lbugnion"&gt;Twitter&lt;/a&gt; | &lt;a href="http://www.facebook.com/lbugnion"&gt;Facebook&lt;/a&gt; | &lt;a href="http://www.flickr.com/photos/lbugnion"&gt;Flickr&lt;/a&gt; | &lt;a href="http://www.linkedin.com/in/lbugnion"&gt;LinkedIn&lt;/a&gt;       &lt;br /&gt;&lt;iframe style="border-bottom-style: none; margin-top: 7px; border-left-style: none; width: 450px; border-top-style: none; margin-bottom: -20px; height: 23px; border-right-style: none; overflow: hidden" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.galasoft.ch/archive/2012/01/25/bug-fix-wpf4-project-template-for-mvvmlight-v3.aspx&amp;amp;layout=standard&amp;amp;show_faces=true&amp;amp;width=450&amp;amp;action=like&amp;amp;colorscheme=light" frameborder="0" allowtransparency="allowtransparency" scrolling="no"&gt;&lt;/iframe&gt;&lt;/div&gt; &lt;/div&gt; &lt;img src="http://geekswithblogs.net/lbugnion/aggbug/148474.aspx" width="1" height="1" /&gt;</description>      <creator xmlns="http://purl.org/dc/elements/1.1/">Laurent Bugnion</creator>      <guid>http://geekswithblogs.net/lbugnion/archive/2012/01/25/bug-fix-wpf4-project-template-for-mvvmlight-v3.aspx</guid>      <pubDate>Tue, 24 Jan 2012 23:40:09 GMT</pubDate>      <comment xmlns="http://wellformedweb.org/CommentAPI/">http://geekswithblogs.net/lbugnion/comments/148474.aspx</comment>      <comments>http://geekswithblogs.net/lbugnion/archive/2012/01/25/bug-fix-wpf4-project-template-for-mvvmlight-v3.aspx#feedback</comments>      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://geekswithblogs.net/lbugnion/comments/commentRss/148474.aspx</commentRss>      <ping xmlns="http://madskills.com/public/xml/rss/module/trackback/">http://geekswithblogs.net/lbugnion/services/trackbacks/148474.aspx</ping>    </item>    <item>      <title>Working with Prism 4 Part 3: Composite Command and Pub/Sub Events</title>      <description>&lt;table width="20"&gt;    &lt;tbody&gt;        &lt;tr&gt;            &lt;td&gt;            &lt;div class="fb-like" data-show-faces="true" data-send="false" data-href="http://www.silverlightshow.net/items/Working-with-Prism-4-Part-3-Composite-Command-and-Pub-Sub-Events.aspx" data-font="segoe ui" data-layout="button_count"&gt;&lt;/div&gt;            &lt;/td&gt;            &lt;td&gt;&lt;a href="https://twitter.com/share" class="twitter-share-button" data-via="silverlightshow" data-counturl="http://www.silverlightshow.net/items/Working-with-Prism-4-Part-3-Composite-Command-and-Pub-Sub-Events.aspx" data-count="horizontal" data-text="Reading the article 'Working w/ #Prism 4: Composite Command and Pub/Sub Events' by @briannoyes" data-url="http://slshow.net/wvd1do"&gt;Tweet&lt;/a&gt;&lt;/td&gt;            &lt;td&gt;&lt;g:plusone size="medium" href="http://www.silverlightshow.net/items/Working-with-Prism-4-Part-3-Composite-Command-and-Pub-Sub-Events.aspx"&gt;&lt;/g:plusone&gt;            &lt;/td&gt;            &lt;td&gt;            &lt;/td&gt;        &lt;/tr&gt;    &lt;/tbody&gt;&lt;/table&gt;&lt;div style="border:1px solid #dddddd;border-image: initial; padding-bottom: 5px; background-color: #f3f3f3; margin-top: 5px; padding-left: 10px; margin-left: 10px; padding-top: 5px;"&gt;&lt;div style="text-align: center;"&gt;&lt;div style="text-align: center;"&gt;&lt;strong&gt;This&amp;nbsp;article is also available&amp;nbsp;in print (Word, PDF) and e-reader formats (MOBI, EPUB).&lt;/strong&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;strong&gt;&lt;strong&gt;Download all formats, including source code for&lt;/strong&gt;&lt;span style="font-weight: normal;"&gt;&amp;nbsp;&lt;strong&gt;$0.99.&lt;/strong&gt;&amp;nbsp;&lt;/span&gt; &lt;a href="https://www.e-junkie.com/ecom/gb.php?c=cart&amp;amp;i=1051374&amp;amp;cl=173172&amp;amp;ejc=2" target="ej_ejc" class="ec_ejc_thkbx" onclick="javascript:return EJEJC_lc(this);"&gt;&lt;img src="http://www.e-junkie.com/ej/ej_add_to_cart.gif" alt="Add to Cart" style="border-width: 0px;border-style: solid;" /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;This is part 3 in the series Working with Prism 4.&lt;/p&gt;&lt;h3&gt;Introduction&lt;/h3&gt;&lt;p&gt;In the last article, I showed how to structure your Prism application to use the MVVM pattern and use DelegateCommands to communicate between the view and view model. Additionally, I showed how to pull some data in using WCF RIA Services and display it in the view, as well as using Prism Regions and the ability to add and activate different views in a region to accomplish simple navigation for the user (view switching).&lt;/p&gt;&lt;div style="border:1px solid #dddddd;border-image: initial; padding-bottom: 5px; background-color: #f3f3f3; margin-top: 5px; padding-left: 10px; width: 200px; float: right; margin-left: 10px; padding-top: 5px;"&gt;&lt;h3&gt;More resources...&lt;/h3&gt;&lt;ul style="list-style-type: circle; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-left: 20px; font-size: 12px;"&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/Webinars.aspx"&gt;Upcoming SilverlightShow Webinars&lt;/a&gt; &lt;/li&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/video/WCF-RIA-Services-Webinar-4.aspx"&gt;Recordings of the Webinar Series: WCF RIA Services&lt;/a&gt; &lt;/li&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/ebooks/wcf_ria_services.aspx"&gt;'WCF RIA Services' Ebook by Brian Noyes &lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style="padding-bottom: 5px; text-align: center;"&gt;&lt;a href="http://www.silverlightshow.net/ebooks/wcf_ria_services.aspx"&gt;&lt;img style="border-color: initial; border-image: initial; width: 114px; height: 160px; border-color: initial;        border-width: 0px;border-style: solid;" alt="WCF RIA Services - ebook by Brian Noyes" src="http://www.silverlightshow.net/Storage/Ebooks/wcf_ria_ebook_thumb.png" usemap="#rade_img_map_1291385581316" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="font-size: 12px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.silverlightshow.net/ebooks.aspx"&gt;All SilverlightShow Ebooks&lt;/a&gt;&amp;nbsp;&lt;img alt="" src="http://www.silverlightshow.net/Storage/arrow-content.jpg" /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;In this article, I&amp;rsquo;ll extend that sample application a little farther and show you how to leverage two other loosely coupled communication features of Prism 4: CompositeCommands and Prism CompositePresentationEvents (aka pub/sub events). The code presented in this article builds on what was the completed code from the last article.&lt;/p&gt;&lt;p&gt;You can &lt;a href="http://www.silverlightshow.net/Storage/Sources/Prism4MVVMAndCommandsSamplePart2.zip" target="_blank"&gt;download the complete code from the last article that acts as the starting point here&lt;/a&gt;. You can &lt;a href="http://www.silverlightshow.net/Storage/Sources/Prism4CompositeCommandAndEventsSample.zip"&gt;download the completed code for this article here&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Note: Now that Silverlight 5 has released, the code for this article uses an updated version of the Prism 4 code recompiled to Silverlight 5 as a target. That code can be downloaded from &lt;a href="http://prism.codeplex.com/" target="_blank"&gt;prism.codeplex.com&lt;/a&gt; and is included in the completed code sample for this article.&lt;/p&gt;&lt;h3&gt;CompositeCommands&lt;/h3&gt;&lt;p&gt;CompositeCommands are another implementation of the ICommand interface defined by Silverlight and WPF. There are several differences about the CompositeCommand implementation and the DelegateCommand implementation. The first is that the CompositeCommand is an aggregation of other commands &amp;ndash; a list of ICommand references internally. It allows you to hook up multiple command targets to a single root command that itself can be hooked up to a command source such as a button or menu item. Figure 1 shows this relationship. The CompositeCommand can hold references to any ICommand object, but typically you will use it in conjunction with DelegateCommands. When the CompositeCommand.Execute method is invoked, it will invoke the Execute method on each of the child commands. When CompositeCommand.CanExecute is called to determine whether the command is enabled, it polls its child commands for their result from CanExecute.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/brian.noyes/___Figure1_2.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="Figure1" alt="Figure1" src="http://www.silverlightshow.net/Storage/Users/brian.noyes/___Figure1_thumb.png" width="362" height="271" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Figure 1: CompositeCommands contain other commands&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Child commands register themselves with the composite command and can also unregister if appropriate. In this way, it is very similar to a subscribe/unsubscribe of an event, but with the additional functionality of commands to enable and disable the commands based on custom logic.&lt;/p&gt;&lt;p&gt;Another thing different about CompositeCommands is that they can be hooked up to a source control ahead of time, before any child commands have registered. DelegateCommands have to be pointed to their target methods through a delegate at the point where they are constructed. As a result, CompositeCommands allow an extra layer of separation between the source (i.e. toolbar button or menu item) and the target (handling method) &amp;ndash; decoupled in lifetime. Because they can target multiple child commands, they also work well for distributed logic such as a Save All command that needs to be dispatched to multiple open documents, each of which has their own handling logic in their view model.&lt;/p&gt;&lt;p&gt;You will see both of these aspects at work in the sample code for this article &amp;ndash; separated hook up of the command, and multiple handlers for command execution.&lt;/p&gt;&lt;h3&gt;Pub/Sub Events&lt;/h3&gt;&lt;p&gt;Another form of loosely coupled communications offered by Prism are pub/sub events. Normal events in .NET are fairly tightly coupled &amp;ndash; both the publisher and subscriber objects have to be alive at the same time, the subscriber needs explicit type information and a reference to the publisher to hook up their event handler, and once subscribed, the publisher maintains a reference back to the subscriber through the delegate.&lt;/p&gt;&lt;p&gt;Pub/sub events are designed to break that tight coupling. The idea is that you really want publishers and subscribers to not need either type information or coupled lifetimes. They should be able to come and go independently, and different types of subscribers and publishers should be able to participate in the same event scenario. The event is what is important, not the specific parties who raise or handle the events. To achieve this, you need a middleman or mediator between the publishers and subscribers. The &lt;a href="http://www.martinfowler.com/eaaDev/EventAggregator.html" target="_blank"&gt;Event Aggregator&lt;/a&gt; pattern is a means of achieving this. Prism provides an implementation of the Event Aggregator pattern that is easy to use and that provides several options including strong or weak references for subscribers, thread dispatching, and event filtering. &lt;/p&gt;&lt;p&gt;Figure 2 shows the basic architecture of using the EventAggregator service in Prism. Publishers and Subscribers make calls directly against the EventAggregator to obtain references to event class instances. The EventAggregator is really nothing more than a &lt;a href="http://martinfowler.com/eaaCatalog/registry.html" target="_blank"&gt;Registry&lt;/a&gt; for event types. Publishers then use those event classes to publish an event with a strongly typed payload and subscribers hook up a listener through a delegate to a method that will accept the payload and handle the event for that subscriber. The event classes are derived from CompositePresentationEvent and do not need any implementation themselves, the class declaration is really just a way to tie together a base class reference with the strongly typed payload through the generic type definition. The CompositePresentationEvent base class provides all the infrastructure to maintain the list of subscribers, dispatch the calls on the appropriate thread, maintain weak or strong references, and filter the calls if desired.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/brian.noyes/Figure2_4.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="Figure2" alt="Figure2" src="http://www.silverlightshow.net/Storage/Users/brian.noyes/Figure2_thumb_1.png" width="669" height="301" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Figure 2: Event Aggregator Architecture&lt;/strong&gt;&lt;/p&gt;&lt;h3&gt;&lt;/h3&gt;&lt;h3&gt;Step 1: Add the Prism Libraries and Recompile for Silverlight 5&lt;/h3&gt;&lt;p&gt;The first step for this article is that I downloaded a recently added source code release of Prism 4 from the &lt;a href="http://compositewpf.codeplex.com/SourceControl/list/changesets" target="_blank"&gt;CodePlex site&lt;/a&gt; and added the projects to the solution, as well as changing their compilation target to Silverlight 5. This is because there were a few incompatibilities discovered in using the Silverlight 4 versions of the libraries with Silverlight 5. And I actually stumbled upon one of those incompatibilities in putting together the sample for this article.&lt;/p&gt;&lt;h3&gt;Step 2: Modify the application to present multiple edit views &lt;/h3&gt;&lt;p&gt;To demonstrate the use of CompositeCommands, I wanted to have a reasonably realistic scenario of where you might use them. As mentioned earlier, CompositeCommands let you separate the hook up of the invoker from the hookup of the receiver in terms of the &lt;a href="http://en.wikipedia.org/wiki/Command_pattern" target="_blank"&gt;Command pattern&lt;/a&gt;. They also let you have multiple handlers for a given command, to address a Save All kind of scenario, which is what I will be putting together in this article.&lt;/p&gt;&lt;p&gt;To do this, I need more than one thing open at a time to save. I added a TabControl to the MainPage shell view and made it a Prism Region so that multiple CustomerEditView instances could be opened in tabs there instead of swapping out the MainContent region view as was done in the last article.&lt;/p&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;div id="codeSnippet" class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span id="lnum1" class="lnum"&gt;   1:&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;sdk:TabControl&lt;/span&gt; &lt;span class="attr"&gt;prism:RegionManager&lt;/span&gt;.&lt;span class="attr"&gt;RegionName&lt;/span&gt;&lt;span class="kwrd"&gt;="SecondaryContent"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum2" class="lnum"&gt;   2:&lt;/span&gt;                 &lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Row&lt;/span&gt;&lt;span class="kwrd"&gt;="2"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum3" class="lnum"&gt;   3:&lt;/span&gt;     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;prism:TabControlRegionAdapter.ItemContainerStyle&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum4" class="lnum"&gt;   4:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Style&lt;/span&gt; &lt;span class="attr"&gt;TargetType&lt;/span&gt;&lt;span class="kwrd"&gt;="sdk:TabItem"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum5" class="lnum"&gt;   5:&lt;/span&gt;             &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Setter&lt;/span&gt; &lt;span class="attr"&gt;Property&lt;/span&gt;&lt;span class="kwrd"&gt;="HeaderTemplate"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum6" class="lnum"&gt;   6:&lt;/span&gt;                 &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Setter.Value&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum7" class="lnum"&gt;   7:&lt;/span&gt;                     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;DataTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum8" class="lnum"&gt;   8:&lt;/span&gt;                         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;StackPanel&lt;/span&gt; &lt;span class="attr"&gt;Orientation&lt;/span&gt;&lt;span class="kwrd"&gt;="Horizontal"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum9" class="lnum"&gt;   9:&lt;/span&gt;                             &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TextBlock&lt;/span&gt; &lt;span class="attr"&gt;VerticalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;="Center"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum10" class="lnum"&gt;  10:&lt;/span&gt;                                         &lt;span class="attr"&gt;Margin&lt;/span&gt;&lt;span class="kwrd"&gt;="3"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum11" class="lnum"&gt;  11:&lt;/span&gt;                                         &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding Title}"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum12" class="lnum"&gt;  12:&lt;/span&gt;                             &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Button&lt;/span&gt; &lt;span class="attr"&gt;VerticalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;="Center"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum13" class="lnum"&gt;  13:&lt;/span&gt;                                     &lt;span class="attr"&gt;Margin&lt;/span&gt;&lt;span class="kwrd"&gt;="3"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum14" class="lnum"&gt;  14:&lt;/span&gt;                                     &lt;span class="attr"&gt;Content&lt;/span&gt;&lt;span class="kwrd"&gt;="X"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum15" class="lnum"&gt;  15:&lt;/span&gt;                                     &lt;span class="attr"&gt;Command&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding CloseCommand}"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum16" class="lnum"&gt;  16:&lt;/span&gt;                         &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;StackPanel&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum17" class="lnum"&gt;  17:&lt;/span&gt;                     &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;DataTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum18" class="lnum"&gt;  18:&lt;/span&gt;                 &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Setter.Value&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum19" class="lnum"&gt;  19:&lt;/span&gt;             &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Setter&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum20" class="lnum"&gt;  20:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Style&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum21" class="lnum"&gt;  21:&lt;/span&gt;     &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;prism:TabControlRegionAdapter.ItemContainerStyle&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum22" class="lnum"&gt;  22:&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;sdk:TabControl&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Note the attached property to indicate that this is a Prism Region as discussed in the last two articles, as well as a Style to modify the HeaderTemplate of the TabItems in the TabControl to contain a TextBlock and an X Button to be able to close them. This style gets attached through a custom attached property provided by Prism called TabControlRegionAdapter.ItemContainerStyle. This is needed because the TabControlRegionAdapter is the thing in the Prism toolkit that generates the TabItems as views are added to the region. Also note that the template expects the DataContext to have a Title property for the text in the tab header, as well as a CloseCommand for the button Command. Those will be present on the view models for the individual views which are set as the DataContext based on the MVVM pattern.&lt;/p&gt;&lt;p&gt;To populate the tabs, the EditCommand handling code in the CustomerListViewModel changed to the following:&lt;/p&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;div id="codeSnippet" class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span id="lnum1" class="lnum"&gt;   1:&lt;/span&gt; &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; OnEditCustomer()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum2" class="lnum"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum3" class="lnum"&gt;   3:&lt;/span&gt;     IRegion secondaryContentRegion = RegionManager.Regions[&lt;span class="str"&gt;"SecondaryContent"&lt;/span&gt;];&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum4" class="lnum"&gt;   4:&lt;/span&gt;     &lt;span class="kwrd"&gt;bool&lt;/span&gt; alreadyExists = &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum5" class="lnum"&gt;   5:&lt;/span&gt;     &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (var view &lt;span class="kwrd"&gt;in&lt;/span&gt; secondaryContentRegion.Views)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum6" class="lnum"&gt;   6:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum7" class="lnum"&gt;   7:&lt;/span&gt;         var custView = view &lt;span class="kwrd"&gt;as&lt;/span&gt; CustomerEditView;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum8" class="lnum"&gt;   8:&lt;/span&gt;         var custViewModel = custView.DataContext &lt;span class="kwrd"&gt;as&lt;/span&gt; CustomerEditViewModel;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum9" class="lnum"&gt;   9:&lt;/span&gt;         &lt;span class="kwrd"&gt;if&lt;/span&gt; (custViewModel.Customer == SelectedCustomer)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum10" class="lnum"&gt;  10:&lt;/span&gt;         {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum11" class="lnum"&gt;  11:&lt;/span&gt;             secondaryContentRegion.Activate(view);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum12" class="lnum"&gt;  12:&lt;/span&gt;             alreadyExists = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum13" class="lnum"&gt;  13:&lt;/span&gt;         }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum14" class="lnum"&gt;  14:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum15" class="lnum"&gt;  15:&lt;/span&gt;     &lt;span class="kwrd"&gt;if&lt;/span&gt; (!alreadyExists)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum16" class="lnum"&gt;  16:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum17" class="lnum"&gt;  17:&lt;/span&gt;         CustomerEditView editView = &lt;span class="kwrd"&gt;new&lt;/span&gt; CustomerEditView();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum18" class="lnum"&gt;  18:&lt;/span&gt;         CustomerEditViewModel viewModel = &lt;span class="kwrd"&gt;new&lt;/span&gt; CustomerEditViewModel { Customer = SelectedCustomer };&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum19" class="lnum"&gt;  19:&lt;/span&gt;         editView.DataContext = viewModel;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum20" class="lnum"&gt;  20:&lt;/span&gt;         secondaryContentRegion.Add(editView);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum21" class="lnum"&gt;  21:&lt;/span&gt;         secondaryContentRegion.Activate(editView);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum22" class="lnum"&gt;  22:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum23" class="lnum"&gt;  23:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;This code is very similar to what was discussed in the last article &amp;ndash; it determines if there is a view already being presented within the &amp;ldquo;SecondaryContent&amp;rdquo; region for the selected customer. If so, it activates it. If not, it adds one. The main difference here is that the code is now targeting the SecondaryContent region, which is the tab control, and it allows more than one view to be created at a time.&lt;/p&gt;&lt;p&gt;The structure of the CustomerEditView itself did not change at all, but the CustomerEditViewModel had to change quite a bit. First, it needed to have the Title and CloseCommand properties expected by the tab item headers.&lt;/p&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;div id="codeSnippet" class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span id="lnum1" class="lnum"&gt;   1:&lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; Title { get { &lt;span class="kwrd"&gt;return&lt;/span&gt; _Customer != &lt;span class="kwrd"&gt;null&lt;/span&gt; ? _Customer.CustomerID : &lt;span class="str"&gt;"Empty"&lt;/span&gt;; } }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum2" class="lnum"&gt;   2:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum3" class="lnum"&gt;   3:&lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; DelegateCommand CloseCommand { get; &lt;span class="kwrd"&gt;private&lt;/span&gt; set; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Second, the CloseCommand handling needs to simply remove its view from the region, not swap views as the SaveCommand handling did from the last article:&lt;/p&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;div id="codeSnippet" class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span id="lnum1" class="lnum"&gt;   1:&lt;/span&gt; &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; OnClose()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum2" class="lnum"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum3" class="lnum"&gt;   3:&lt;/span&gt;     IRegion secondaryContentRegion = RegionManager.Regions[&lt;span class="str"&gt;"SecondaryContent"&lt;/span&gt;];&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum4" class="lnum"&gt;   4:&lt;/span&gt;     &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (var view &lt;span class="kwrd"&gt;in&lt;/span&gt; secondaryContentRegion.Views)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum5" class="lnum"&gt;   5:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum6" class="lnum"&gt;   6:&lt;/span&gt;         &lt;span class="kwrd"&gt;if&lt;/span&gt; (view &lt;span class="kwrd"&gt;is&lt;/span&gt; CustomerEditView &amp;amp;&amp;amp; ((FrameworkElement)view).DataContext == &lt;span class="kwrd"&gt;this&lt;/span&gt;)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum7" class="lnum"&gt;   7:&lt;/span&gt;         {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum8" class="lnum"&gt;   8:&lt;/span&gt;             secondaryContentRegion.Remove(view);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum9" class="lnum"&gt;   9:&lt;/span&gt;             &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum10" class="lnum"&gt;  10:&lt;/span&gt;         }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum11" class="lnum"&gt;  11:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum12" class="lnum"&gt;  12:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Third, it needed the SaveCommand logic to not swap views but to just manage the &amp;ldquo;saved&amp;rdquo; state of the view. In this case, for demo purposes, that meant just modifying the view model to support an IsDirty flag. That flag gets set when the customer is modified (one of its properties change). The flag gets cleared when the SaveCommand fires. Additionally, the SaveCommand was modified to have a CanExecute handler that checks that IsDirty flag. If the view&amp;rsquo;s state is not dirty, there is no reason to invoke the SaveCommand so its invoker should be disabled.&lt;/p&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;div id="codeSnippet" class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span id="lnum1" class="lnum"&gt;   1:&lt;/span&gt; Customer _Customer;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum2" class="lnum"&gt;   2:&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; _IsDirty = &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum3" class="lnum"&gt;   3:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum4" class="lnum"&gt;   4:&lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; CustomerEditViewModel()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum5" class="lnum"&gt;   5:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum6" class="lnum"&gt;   6:&lt;/span&gt;     SaveCommand = &lt;span class="kwrd"&gt;new&lt;/span&gt; DelegateCommand(OnSave, CanSave);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum7" class="lnum"&gt;   7:&lt;/span&gt;     ...&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum8" class="lnum"&gt;   8:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum9" class="lnum"&gt;   9:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum10" class="lnum"&gt;  10:&lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; DelegateCommand SaveCommand { get; &lt;span class="kwrd"&gt;private&lt;/span&gt; set; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum11" class="lnum"&gt;  11:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum12" class="lnum"&gt;  12:&lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; Customer Customer&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum13" class="lnum"&gt;  13:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum14" class="lnum"&gt;  14:&lt;/span&gt;     get { &lt;span class="kwrd"&gt;return&lt;/span&gt; _Customer; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum15" class="lnum"&gt;  15:&lt;/span&gt;     set&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum16" class="lnum"&gt;  16:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum17" class="lnum"&gt;  17:&lt;/span&gt;         &lt;span class="kwrd"&gt;if&lt;/span&gt; (_Customer != &lt;span class="kwrd"&gt;value&lt;/span&gt;)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum18" class="lnum"&gt;  18:&lt;/span&gt;         {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum19" class="lnum"&gt;  19:&lt;/span&gt;             &lt;span class="kwrd"&gt;if&lt;/span&gt; (_Customer != &lt;span class="kwrd"&gt;null&lt;/span&gt;) _Customer.PropertyChanged -= OnCustomerChanged;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum20" class="lnum"&gt;  20:&lt;/span&gt;             _Customer = &lt;span class="kwrd"&gt;value&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum21" class="lnum"&gt;  21:&lt;/span&gt;             &lt;span class="kwrd"&gt;if&lt;/span&gt; (_Customer != &lt;span class="kwrd"&gt;null&lt;/span&gt;) _Customer.PropertyChanged += OnCustomerChanged;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum22" class="lnum"&gt;  22:&lt;/span&gt;             RaisePropertyChanged(() =&amp;gt; Customer);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum23" class="lnum"&gt;  23:&lt;/span&gt;         }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum24" class="lnum"&gt;  24:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum25" class="lnum"&gt;  25:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum26" class="lnum"&gt;  26:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum27" class="lnum"&gt;  27:&lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; IsDirty&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum28" class="lnum"&gt;  28:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum29" class="lnum"&gt;  29:&lt;/span&gt;     get&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum30" class="lnum"&gt;  30:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum31" class="lnum"&gt;  31:&lt;/span&gt;         &lt;span class="kwrd"&gt;return&lt;/span&gt; _IsDirty;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum32" class="lnum"&gt;  32:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum33" class="lnum"&gt;  33:&lt;/span&gt;     set&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum34" class="lnum"&gt;  34:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum35" class="lnum"&gt;  35:&lt;/span&gt;         _IsDirty = &lt;span class="kwrd"&gt;value&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum36" class="lnum"&gt;  36:&lt;/span&gt;         SaveCommand.RaiseCanExecuteChanged();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum37" class="lnum"&gt;  37:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum38" class="lnum"&gt;  38:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum39" class="lnum"&gt;  39:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum40" class="lnum"&gt;  40:&lt;/span&gt; &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; CanSave()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum41" class="lnum"&gt;  41:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum42" class="lnum"&gt;  42:&lt;/span&gt;     &lt;span class="kwrd"&gt;return&lt;/span&gt; IsDirty;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum43" class="lnum"&gt;  43:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum44" class="lnum"&gt;  44:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum45" class="lnum"&gt;  45:&lt;/span&gt; &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; OnSave()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum46" class="lnum"&gt;  46:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum47" class="lnum"&gt;  47:&lt;/span&gt;     IsDirty = &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum48" class="lnum"&gt;  48:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum49" class="lnum"&gt;  49:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum50" class="lnum"&gt;  50:&lt;/span&gt; &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; OnCustomerChanged(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, PropertyChangedEventArgs e)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum51" class="lnum"&gt;  51:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum52" class="lnum"&gt;  52:&lt;/span&gt;     IsDirty = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum53" class="lnum"&gt;  53:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Notice that the CanSave handler just returns the flag. But since the enablement of the command depends on that flag, that means whenever that flag changes, the command should raise the CanExecuteChanged event. The best way to do that is to encapsulate the call to the DelegateCommand.RaiseCanExecuteChanged method in the setter for the IsDirty property and use that property internally throughout the view model instead of the member variable.&lt;/p&gt;&lt;p&gt;At this point I have the setup to be able to edit multiple customer views at the same time in individual tabs. Next I want to be able to add a &amp;ldquo;Save All&amp;rdquo; command invoker at a shell level and have it invoke the SaveCommand on the individual open edit views as shown in Figure 3.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/brian.noyes/__Figure3_2.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="Figure3" alt="Figure3" src="http://www.silverlightshow.net/Storage/Users/brian.noyes/__Figure3_thumb.png" width="693" height="497" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Figure 3: Multiple edit views active in the tab region&lt;/strong&gt;&lt;/p&gt;&lt;h3&gt;Step 3: Add a CompositeCommand for the Save All command&lt;/h3&gt;&lt;p&gt;A common way to define a CompositeCommand is similar to how WPF defines the built-in routed commands &amp;ndash; as a public static readonly singleton instance of the command. In order for the invoker to be in one module and the handlers to be in different modules, they all need to be able to get to that definition of that command to hook up to it. So you will need to have a common or shared assembly that all the parts of your solution can reference to hold shared types like CompositeCommands and Pub/Sub events.&lt;/p&gt;&lt;p&gt;The sample solution has a Silverlight Class Library project added with a Commands class to contain the CompositeCommand instances you want to define &amp;ndash; in this case the SaveAllCommand.&lt;/p&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;div id="codeSnippet" class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span id="lnum1" class="lnum"&gt;   1:&lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Commands&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum2" class="lnum"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum3" class="lnum"&gt;   3:&lt;/span&gt;     &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;readonly&lt;/span&gt; CompositeCommand SaveAllCommand = &lt;span class="kwrd"&gt;new&lt;/span&gt; CompositeCommand();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum4" class="lnum"&gt;   4:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;h3&gt;&amp;nbsp;&lt;/h3&gt;&lt;h3&gt;Step 4: Hook up the CompositeCommand Invoker&lt;/h3&gt;&lt;p&gt;The invoker is simply a button in the MainPage.xaml:&lt;/p&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;div id="codeSnippet" class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span id="lnum1" class="lnum"&gt;   1:&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Button&lt;/span&gt; &lt;span class="attr"&gt;Content&lt;/span&gt;&lt;span class="kwrd"&gt;="Save All"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum2" class="lnum"&gt;   2:&lt;/span&gt;         &lt;span class="attr"&gt;Command&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding SaveAllCommand, RelativeSource={RelativeSource AncestorType=UserControl}}"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;If you are using CompositeCommands in WPF, you can refer directly to the static instance with the {x:Static} markup extension. Because Silverlight does not have that markup extension in the framework, you will have to bind to a property exposed to your XAML. In this case to keep it simple, I expose that property from the code behind of the MainPage view itself and use a RelativeSource binding to get to the root element that corresponds to the code behind class. Then in the code behind I expose the static command variable via the property that the XAML is binding to. Alternatively I could have just hooked up the command in the code behind with a reference to the button.&lt;/p&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;div id="codeSnippet" class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span id="lnum1" class="lnum"&gt;   1:&lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; ICommand SaveAllCommand { get { &lt;span class="kwrd"&gt;return&lt;/span&gt; Commands.SaveAllCommand; } }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;At this point the invoker is ready to invoke the command, but the button will be disabled because the CompositeCommand, as a container for command instances, is empty. The default logic of CompositeCommand is to be disabled unless &lt;strong&gt;all &lt;/strong&gt;of its child commands are enabled. If there are no child commands, it is disabled because there is nothing to invoke. If you find you want different logic, such as enabling the command if &lt;strong&gt;any one&lt;/strong&gt; of its child commands is enabled, all you need to do is derive a class from CompositeCommand and override the CanExecute method.&lt;/p&gt;&lt;h3&gt;Step 5: Hook up the child command instances&lt;/h3&gt;&lt;p&gt;As mentioned earlier, CompositeCommand exposes a Register/Unregister API for adding and removing child commands. To add a child command, simply call Register, passing an ICommand reference. Because the CustomerEditViewModel already has a SaveCommand that I want invoked when Save All is invoked, I just need to pass a reference to that in the constructor for the view model:&lt;/p&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;div id="codeSnippet" class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span id="lnum1" class="lnum"&gt;   1:&lt;/span&gt; Commands.SaveAllCommand.RegisterCommand(SaveCommand);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Likewise, when the view is going away (in the CloseCommand handler), you should unregister the command, otherwise the CompositeCommand will keep it, and be indirection, your view model, alive.&lt;/p&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;div id="codeSnippet" class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span id="lnum1" class="lnum"&gt;   1:&lt;/span&gt; &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; OnClose()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum2" class="lnum"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum3" class="lnum"&gt;   3:&lt;/span&gt;     IRegion secondaryContentRegion = RegionManager.Regions[&lt;span class="str"&gt;"SecondaryContent"&lt;/span&gt;];&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum4" class="lnum"&gt;   4:&lt;/span&gt;     &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (var view &lt;span class="kwrd"&gt;in&lt;/span&gt; secondaryContentRegion.Views)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum5" class="lnum"&gt;   5:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum6" class="lnum"&gt;   6:&lt;/span&gt;         &lt;span class="kwrd"&gt;if&lt;/span&gt; (view &lt;span class="kwrd"&gt;is&lt;/span&gt; CustomerEditView &amp;amp;&amp;amp; ((FrameworkElement)view).DataContext == &lt;span class="kwrd"&gt;this&lt;/span&gt;)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum7" class="lnum"&gt;   7:&lt;/span&gt;         {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum8" class="lnum"&gt;   8:&lt;/span&gt;             secondaryContentRegion.Remove(view);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum9" class="lnum"&gt;   9:&lt;/span&gt;             Commands.SaveAllCommand.UnregisterCommand(SaveCommand);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum10" class="lnum"&gt;  10:&lt;/span&gt;             &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum11" class="lnum"&gt;  11:&lt;/span&gt;         }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum12" class="lnum"&gt;  12:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum13" class="lnum"&gt;  13:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;At this point you should be able to run the application and open several edit views as shown in Figure 3. Initially all of the Save buttons in the edit views as well as the Save All button will be disabled because none of the views are dirty. Go make an edit to each one of the views, and you will see their individual Save button become enabled. With the default CanExecute logic of the CompositeCommand, not until all of the child commands becomes enabled is the CompositeCommand itself enabled. So at the point where you have each of the child views Save enabled through an edit, the Save All button will become enabled. Clicking it invokes the SaveCommand handler in each instance of the CustomerEditViewModel, setting its IsDirty flag to false and raising the CanExecuteChanged handler for that command, which the CompositeCommand will monitor to refresh its own command enabled state.&lt;/p&gt;&lt;h3&gt;Step 6: Add an Orders Module&lt;/h3&gt;&lt;p&gt;A common usage of pub/sub events is to communicate between loosely coupled module components, particularly from one view model to another, especially if those view models are defined in separate modules. To demonstrate this, I want to add the capability to display the last 10 products ordered by a customer in a side panel whenever a customer is selected. I want this functionality to be decoupled from the customer listing and editing capabilities in the Core module, possibly developed by a separate team or added as a separate pluggable feature of the application.&lt;/p&gt;&lt;p&gt;To do this, I added a new Orders module to the solution following the procedures outlined in the first article for defining a Prism module:&lt;/p&gt;&lt;ol&gt;    &lt;li&gt;Add a Silverlight Application project&lt;/li&gt;    &lt;li&gt;Delete MainPage.xaml and App.xaml&lt;/li&gt;    &lt;li&gt;Set the Startup Object in the project settings to Not Set.&lt;/li&gt;    &lt;li&gt;Add Prism references, setting the Copy Local property on&amp;nbsp; the references to false so that you don&amp;rsquo;t get multiple copies of the Prism libraries loaded when the module loads.&lt;/li&gt;    &lt;li&gt;Defined an OrdersModule class with a ModuleExport attribute and an implementation of the IModule interface.&lt;/li&gt;    &lt;li&gt;Added the Orders module to the Silverlight hosting settings of the Web project so that it is available for download by the module manager in Prism.&lt;/li&gt;    &lt;li&gt;Added module information to the ModuleCatalog.xaml in the shell project.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Additionally, since now both the Core module and the Orders module will need to use WCF RIA Services to retrieve data from the back end, it makes sense to move the client WCF RIA Services code out to a shared library so that there is just one definition of the entity types and the DomainContext that lets the client code talk to the server. As a result, I also did the following in the solution:&lt;/p&gt;&lt;ol&gt;    &lt;li&gt;Removed the RIA Services link from all the client projects.&lt;/li&gt;    &lt;li&gt;Added a NorthwindRIAClientLibrary Silverlight Class Library project with the RIA Services link in the project properties set to the hosting web project where the domain services live.&lt;/li&gt;    &lt;li&gt;Added a reference to NorthwindRIAClientLibrary to each of the projects, with them all set to Copy Local = false except the reference in the shell application.&lt;/li&gt;&lt;/ol&gt;&lt;h3&gt;&amp;nbsp;&lt;/h3&gt;&lt;h3&gt;Step 7: Add another region for the view to plug into&lt;/h3&gt;&lt;p&gt;In MainPage.xaml in the shell application, I added another region named SidePanel to the right of the listing of customers for the order summary to plug into.&lt;/p&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;div id="codeSnippet" class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span id="lnum1" class="lnum"&gt;   1:&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Grid&lt;/span&gt; &lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Row&lt;/span&gt;&lt;span class="kwrd"&gt;="1"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum2" class="lnum"&gt;   2:&lt;/span&gt;     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum3" class="lnum"&gt;   3:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ColumnDefinition&lt;/span&gt; &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;="*"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum4" class="lnum"&gt;   4:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ColumnDefinition&lt;/span&gt; &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;="Auto"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum5" class="lnum"&gt;   5:&lt;/span&gt;     &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum6" class="lnum"&gt;   6:&lt;/span&gt;     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ContentControl&lt;/span&gt; &lt;span class="attr"&gt;prism:RegionManager&lt;/span&gt;.&lt;span class="attr"&gt;RegionName&lt;/span&gt;&lt;span class="kwrd"&gt;="MainContent"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum7" class="lnum"&gt;   7:&lt;/span&gt;                     &lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Column&lt;/span&gt;&lt;span class="kwrd"&gt;="0"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum8" class="lnum"&gt;   8:&lt;/span&gt;                     &lt;span class="attr"&gt;Margin&lt;/span&gt;&lt;span class="kwrd"&gt;="5"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum9" class="lnum"&gt;   9:&lt;/span&gt;     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ContentControl&lt;/span&gt; &lt;span class="attr"&gt;prism:RegionManager&lt;/span&gt;.&lt;span class="attr"&gt;RegionName&lt;/span&gt;&lt;span class="kwrd"&gt;="SidePanel"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum10" class="lnum"&gt;  10:&lt;/span&gt;                     &lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Column&lt;/span&gt;&lt;span class="kwrd"&gt;="1"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum11" class="lnum"&gt;  11:&lt;/span&gt;                     &lt;span class="attr"&gt;Margin&lt;/span&gt;&lt;span class="kwrd"&gt;="5"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum12" class="lnum"&gt;  12:&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Grid&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;h3&gt;&amp;nbsp;&lt;/h3&gt;&lt;h3&gt;Step 8: Add a View and ViewModel to present the order summary&lt;/h3&gt;&lt;p&gt;The view simply contains a DataGrid with three columns: Order date, product name, and quantity. The view model uses WCF RIA Services to retrieve the order information for a given customer and populate a collection of OrderItem data structures to populate the DataGrid with the three columns.&lt;/p&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;div id="codeSnippet" class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span id="lnum1" class="lnum"&gt;   1:&lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; OrdersViewModel : INotifyPropertyChanged&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum2" class="lnum"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum3" class="lnum"&gt;   3:&lt;/span&gt;     CustomersDomainContext _Context;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum4" class="lnum"&gt;   4:&lt;/span&gt;     &lt;span class="kwrd"&gt;public&lt;/span&gt; OrdersViewModel()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum5" class="lnum"&gt;   5:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum6" class="lnum"&gt;   6:&lt;/span&gt;         &lt;span class="kwrd"&gt;if&lt;/span&gt; (!DesignerProperties.IsInDesignTool)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum7" class="lnum"&gt;   7:&lt;/span&gt;         {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum8" class="lnum"&gt;   8:&lt;/span&gt;             _Context = &lt;span class="kwrd"&gt;new&lt;/span&gt; CustomersDomainContext();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum9" class="lnum"&gt;   9:&lt;/span&gt;         }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum10" class="lnum"&gt;  10:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum11" class="lnum"&gt;  11:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum12" class="lnum"&gt;  12:&lt;/span&gt;     ObservableCollection&amp;lt;OrderItem&amp;gt; _Orders = &lt;span class="kwrd"&gt;new&lt;/span&gt; ObservableCollection&amp;lt;OrderItem&amp;gt;();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum13" class="lnum"&gt;  13:&lt;/span&gt;     &lt;span class="kwrd"&gt;public&lt;/span&gt; ObservableCollection&amp;lt;OrderItem&amp;gt; Orders&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum14" class="lnum"&gt;  14:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum15" class="lnum"&gt;  15:&lt;/span&gt;         get { &lt;span class="kwrd"&gt;return&lt;/span&gt; _Orders; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum16" class="lnum"&gt;  16:&lt;/span&gt;         set&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum17" class="lnum"&gt;  17:&lt;/span&gt;         {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum18" class="lnum"&gt;  18:&lt;/span&gt;             &lt;span class="kwrd"&gt;if&lt;/span&gt; (_Orders != &lt;span class="kwrd"&gt;value&lt;/span&gt;)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum19" class="lnum"&gt;  19:&lt;/span&gt;             {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum20" class="lnum"&gt;  20:&lt;/span&gt;                 _Orders = &lt;span class="kwrd"&gt;value&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum21" class="lnum"&gt;  21:&lt;/span&gt;                 PropertyChanged(&lt;span class="kwrd"&gt;this&lt;/span&gt;, &lt;span class="kwrd"&gt;new&lt;/span&gt; PropertyChangedEventArgs(&lt;span class="str"&gt;"Orders"&lt;/span&gt;));&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum22" class="lnum"&gt;  22:&lt;/span&gt;             }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum23" class="lnum"&gt;  23:&lt;/span&gt;         }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum24" class="lnum"&gt;  24:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum25" class="lnum"&gt;  25:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum26" class="lnum"&gt;  26:&lt;/span&gt;     &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; OnCustomerSelected(Customer cust)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum27" class="lnum"&gt;  27:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum28" class="lnum"&gt;  28:&lt;/span&gt;         Orders = &lt;span class="kwrd"&gt;new&lt;/span&gt; ObservableCollection&amp;lt;OrderItem&amp;gt;();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum29" class="lnum"&gt;  29:&lt;/span&gt;         &lt;span class="kwrd"&gt;if&lt;/span&gt; (_Context == &lt;span class="kwrd"&gt;null&lt;/span&gt; || cust == &lt;span class="kwrd"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum30" class="lnum"&gt;  30:&lt;/span&gt;         {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum31" class="lnum"&gt;  31:&lt;/span&gt;             &lt;span class="kwrd"&gt;return&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum32" class="lnum"&gt;  32:&lt;/span&gt;         }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum33" class="lnum"&gt;  33:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum34" class="lnum"&gt;  34:&lt;/span&gt;         EntityQuery&amp;lt;Order_Detail&amp;gt; detailQuery = _Context.GetOrder_DetailsQuery();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum35" class="lnum"&gt;  35:&lt;/span&gt;         _Context.Load(detailQuery.Where(&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum36" class="lnum"&gt;  36:&lt;/span&gt;             det =&amp;gt; det.Order.Customer.CustomerID == cust.CustomerID).OrderByDescending(&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum37" class="lnum"&gt;  37:&lt;/span&gt;             det =&amp;gt; det.Order.OrderDate).Take(10), OnDetailsLoaded, &lt;span class="kwrd"&gt;null&lt;/span&gt;);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum38" class="lnum"&gt;  38:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum39" class="lnum"&gt;  39:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum40" class="lnum"&gt;  40:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum41" class="lnum"&gt;  41:&lt;/span&gt;     &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; OnDetailsLoaded(LoadOperation&amp;lt;Order_Detail&amp;gt; loadOp)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum42" class="lnum"&gt;  42:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum43" class="lnum"&gt;  43:&lt;/span&gt;         var details = loadOp.Entities;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum44" class="lnum"&gt;  44:&lt;/span&gt;         &lt;span class="kwrd"&gt;if&lt;/span&gt; (details != &lt;span class="kwrd"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum45" class="lnum"&gt;  45:&lt;/span&gt;         {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum46" class="lnum"&gt;  46:&lt;/span&gt;             var detailsList = details.ToList();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum47" class="lnum"&gt;  47:&lt;/span&gt;             detailsList.ForEach(det =&amp;gt; Orders.Add(&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum48" class="lnum"&gt;  48:&lt;/span&gt;                 &lt;span class="kwrd"&gt;new&lt;/span&gt; OrderItem&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum49" class="lnum"&gt;  49:&lt;/span&gt;                 {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum50" class="lnum"&gt;  50:&lt;/span&gt;                     ProductName = det.Product.ProductName,&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum51" class="lnum"&gt;  51:&lt;/span&gt;                     Quantity = det.Quantity,&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum52" class="lnum"&gt;  52:&lt;/span&gt;                     OrderDate = det.Order.OrderDate.Value&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum53" class="lnum"&gt;  53:&lt;/span&gt;                 }));&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum54" class="lnum"&gt;  54:&lt;/span&gt;         }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum55" class="lnum"&gt;  55:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum56" class="lnum"&gt;  56:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Now the only thing left to do is call the OnCustomerSelected method whenever a Customer is selected in the main listing. But that code lives in a totally separate module that you are trying to keep decoupled. Prism events to the rescue.&lt;/p&gt;&lt;h3&gt;Step 9: Add a Prism Event&lt;/h3&gt;&lt;p&gt;When working with Prism events, the first thing to do is to declare the event type. You do this by deriving a type from CompositePresentationEvent as described earlier, and indicating through the generic type argument what the payload type will be:&lt;/p&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;div id="codeSnippet" class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span id="lnum1" class="lnum"&gt;   1:&lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; CustomerSelectedEvent : CompositePresentationEvent&amp;lt;Customer&amp;gt; { }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Like the CompositeCommand, this type will need to be referenced by both sides of the communication, even though those two sides need to be decoupled from each other. So this is another one of those types you will want to declare in a shared library that any modules in the solution can reference.&lt;/p&gt;&lt;h3&gt;Step 10: Hook up the subscriber&lt;/h3&gt;&lt;p&gt;To hook up a subscriber, the subscribing code first needs access to the EventAggregator service in Prism. This is a singleton service like the RegionManager that you can simply obtain by using dependency injection and importing it through the container. Add the following code to the OrdersViewModel:&lt;/p&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;div id="codeSnippet" class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span id="lnum1" class="lnum"&gt;   1:&lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; OrdersViewModel()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum2" class="lnum"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum3" class="lnum"&gt;   3:&lt;/span&gt;     &lt;span class="kwrd"&gt;if&lt;/span&gt; (!DesignerProperties.IsInDesignTool)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum4" class="lnum"&gt;   4:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum5" class="lnum"&gt;   5:&lt;/span&gt;         CompositionInitializer.SatisfyImports(&lt;span class="kwrd"&gt;this&lt;/span&gt;);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum6" class="lnum"&gt;   6:&lt;/span&gt;         EventAggregator.GetEvent&amp;lt;CustomerSelectedEvent&amp;gt;().Subscribe(OnCustomerSelected);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum7" class="lnum"&gt;   7:&lt;/span&gt;         _Context = &lt;span class="kwrd"&gt;new&lt;/span&gt; CustomersDomainContext();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum8" class="lnum"&gt;   8:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum9" class="lnum"&gt;   9:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum10" class="lnum"&gt;  10:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alt"&gt;&lt;span id="lnum11" class="lnum"&gt;  11:&lt;/span&gt; [Import]&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum12" class="lnum"&gt;  12:&lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; IEventAggregator EventAggregator { get; set; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Because the view model will be constructed in the XAML of the view, the container will not be involved in its construction. To get the container to satisfy the imports in the class, which in this case includes the event aggregator, the CompositionInitializer class can be used. It is put in a guard condition as discussed in a previous article so that the designer does not break since it should not execute that code in the designer.&lt;/p&gt;&lt;p&gt;After the SatisfyImports call, the Import property will be set by the container. So the next line of code can then use that IEventAggregator reference to subscribe. That involves calling the GetEvent&amp;lt;T&amp;gt;() method to get a reference to the event, then calling subscribe on the returned event, which can be done in a single line of code as shown. The Subscribe method just takes an Action&amp;lt;T&amp;gt; delegate, where T is the payload type defined by the event class. The OnCustomerSelected method was shown earlier. &lt;/p&gt;&lt;p&gt;By default, Prism events maintain weak references to the subscribing class method. That means that if all other references to the object go away, the event reference will not keep it alive. This solves a lot of memory leak issues where you either forget or it is difficult to know where in the code to do the Unsubscribe call. If you want the event subscription to keep the object alive, there is an overload to the Subscribe method with a keepSubscriberReferenceAlive bool parameter.&lt;/p&gt;&lt;p&gt;Additionally, by default the event publication will happen synchronously using the publisher&amp;rsquo;s thread. If you want control over what thread is used to call the target method pointed to by the Subscribe call, you can use another overload that takes a ThreadOption with three choices: use the Publisher&amp;rsquo;s thread (the default), use the UI thread, or use a background thread from the thread pool.&lt;/p&gt;&lt;p&gt;Finally, there is an overload that also allows you to pass a Predicate&amp;lt;T&amp;gt; delegate for filtering purposes. This allows you to pass a lambda expression or point to a method that returns a boolean. The method or lambda will be passed the payload object of the event. It can use that to decide whether to return true or false. True means to call the subscription method, false means don&amp;rsquo;t.&lt;/p&gt;&lt;h3&gt;Step 11: Publish the event&lt;/h3&gt;&lt;p&gt;To publish a Prism event, it is just as simple as subscribing. you first need a reference to the EventAggregator service, which you get through dependency injection as shown earlier. Then you publish at the appropriate point in your code calling the Publish method on the event returned from the same GetEvent&amp;lt;T&amp;gt;() method shown earlier:&lt;/p&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;div id="codeSnippet" class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span id="lnum1" class="lnum"&gt;   1:&lt;/span&gt; EventAggregator.GetEvent&amp;lt;CustomerSelectedEvent&amp;gt;().Publish(_SelectedCustomer);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;h3&gt;Summary&lt;/h3&gt;&lt;p&gt;In this article, you saw how to define multiple modules that can communicate with each other through a combination of CompositeCommands and Prism events. CompositeCommands let you have handlers registered or unregistered in a loosely coupled fashion, and allows you to have multiple handlers (child commands) that will be used by the CompositeCommand. Prism events are for situations that are not necessarily an action-&amp;gt;reaction kind of set up where enablement and disablement is needed. You simply define the event type with its strongly typed payload and then subscribe or publish by obtaining the event reference through the EventAggregator. Both of these mechanisms give you a really powerful combination for having loosely coupled communications between composite parts of your application.&lt;/p&gt;&lt;p&gt;You can &lt;a href="http://www.silverlightshow.net/Storage/Sources/Prism4CompositeCommandAndEventsSample.zip"&gt;download the finished code from this article here&lt;/a&gt;.&lt;/p&gt;&lt;h3&gt;About the Author&lt;/h3&gt;&lt;p&gt;Brian Noyes is Chief Architect of &lt;a href="http://www.idesign.net/" target="_blank"&gt;IDesign&lt;/a&gt;, a Microsoft Regional Director, and Silverlight MVP. He is a frequent top rated speaker at conferences worldwide including Microsoft TechEd, DevConnections, VSLive!, DevTeach, and others. Brian worked directly on the Prism team with Microsoft patterns and practices and co-authored the book Developers Guide to Microsoft Prism 4. He is also the author of Developing Applications with Windows Workflow Foundation, Smart Client Deployment with ClickOnce, and Data Binding in Windows Forms 2.0. Brian got started programming as a hobby while flying F-14 Tomcats in the U.S. Navy, later turning his passion for code into his current career. You can contact Brian through his blog at &lt;a href="http://briannoyes.net/"&gt;http://briannoyes.net/&lt;/a&gt; or on Twitter @briannoyes.&lt;/p&gt;</description>      <link>http://www.silverlightshow.net/items/Working-with-Prism-4-Part-3-Composite-Command-and-Pub-Sub-Events.aspx</link>      <author>editorial@silverlightshow.net (Brian Noyes )</author>      <comments>http://www.silverlightshow.net/items/Working-with-Prism-4-Part-3-Composite-Command-and-Pub-Sub-Events.aspx#comments</comments>      <guid isPermaLink="true">http://www.silverlightshow.net/items/Working-with-Prism-4-Part-3-Composite-Command-and-Pub-Sub-Events.aspx</guid>      <pubDate>Tue, 24 Jan 2012 10:10:00 GMT</pubDate>    </item>    <item>      <title>Yet Another Podcast #57–Kendo UI</title>      <link>http://feedproxy.google.com/~r/JesseLiberty-SilverlightGeek/~3/_z42LvHCim0/</link>      <comments>http://jesseliberty.com/2012/01/23/yet-another-podcast-57kendo-ui/#comments</comments>      <pubDate>Mon, 23 Jan 2012 18:49:57 +0000</pubDate>      <creator xmlns="http://purl.org/dc/elements/1.1/">Jesse Liberty</creator>      <category><![CDATA[Community]]></category>      <category><![CDATA[Tools and Utilities]]></category>      <category><![CDATA[UI]]></category>      <category><![CDATA[YapCast]]></category>      <guid isPermaLink="false">http://jesseliberty.com/?p=5183</guid>      <encoded xmlns="http://purl.org/rss/1.0/modules/content/"><![CDATA[I spoke with Burke Holland, Kendo UI Evangelist, and Todd Anglin, VP of HTML5 Tools for Telerik about their new platform for creating HTML5/JQuery applications: Kendo UI. http://twitter.com/toddanglin http://twitter.com/burkeholland HTML5 Playground Less To CSS Generator PhoneGap &#8211; Build...<br/><br/>For the complete article and hyperlinks, please visit my blog at http://JesseLiberty.com<div class="feedflare"><a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=_z42LvHCim0:lvQvCtrd9Y8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=_z42LvHCim0:lvQvCtrd9Y8:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=_z42LvHCim0:lvQvCtrd9Y8:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?i=_z42LvHCim0:lvQvCtrd9Y8:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=_z42LvHCim0:lvQvCtrd9Y8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?i=_z42LvHCim0:lvQvCtrd9Y8:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=_z42LvHCim0:lvQvCtrd9Y8:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?i=_z42LvHCim0:lvQvCtrd9Y8:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=_z42LvHCim0:lvQvCtrd9Y8:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?d=qj6IDK7rITs" border="0"></img></a></div><img src="http://feeds.feedburner.com/~r/JesseLiberty-SilverlightGeek/~4/_z42LvHCim0" height="1" width="1"/>]]></encoded>      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://jesseliberty.com/2012/01/23/yet-another-podcast-57kendo-ui/feed/</commentRss>      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">1</comments>      <enclosure url="http://jesseliberty.com/wp-content/media/Show57.mp3" length="27007612" type="audio/mpeg" />      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://jesseliberty.com/2012/01/23/yet-another-podcast-57kendo-ui/</origLink>    </item>    <item>      <title>Microsoft's Impact on Kinect, Silverlight and Community in 2011</title>      <link>http://feeds.johnpapa.net/~r/JohnPapa/~3/kSknKVWjJso/microsoft-rsquo-s-impact-on-kinect-silverlight-and-community-in-2011</link>      <description>&lt;p&gt;A lot changed in 2011 &amp;hellip; in fact you could say it was the beginning of what I think is a massive shift in technology on multiple levels. This week in Visual Studio Magazine I open a mini series of some of the changes that made a big impact in 2011. Check it out.&lt;/p&gt;&lt;p&gt;&lt;a href="http://visualstudiomagazine.com/articles/2012/01/20/3-impacts-from-2011-and-what-they-mean-moving-forward-part-1.aspx"&gt;http://visualstudiomagazine.com/articles/2012/01/20/3-impacts-from-2011-and-what-they-mean-moving-forward-part-1.aspx&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;&lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=kSknKVWjJso:znQPOLtL0-M:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?i=kSknKVWjJso:znQPOLtL0-M:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=kSknKVWjJso:znQPOLtL0-M:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?i=kSknKVWjJso:znQPOLtL0-M:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=kSknKVWjJso:znQPOLtL0-M:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=kSknKVWjJso:znQPOLtL0-M:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JohnPapa/~4/kSknKVWjJso" height="1" width="1"/&gt;</description>      <pubDate>Sun, 22 Jan 2012 12:54:33 GMT</pubDate>      <guid isPermaLink="false">http://johnpapa.net:80/microsoft-rsquo-s-impact-on-kinect-silverlight-and-community-in-2011</guid>      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://johnpapa.net:80/microsoft-rsquo-s-impact-on-kinect-silverlight-and-community-in-2011</origLink>    </item>    <item>      <title>Saving Telerik PersistenceFramework data to a string</title>      <link>http://geekswithblogs.net/WynApseTechnicalMusings/archive/2012/01/21/148440.aspx</link>      <description>&lt;font face="tahoma"&gt;In the project I'm involved with, we've been saving column arrangement and column width data for quite a while. I had a request to give the users a way to select which columns to display and it just seemed natural to include the display order with that data.&lt;br /&gt;&lt;br /&gt;Recently I've been tasked with saving the filtering and sorting information as well. We're using the Telerik RadGrid, so I went to their site to find out how to do that.&lt;br /&gt;&lt;br /&gt;Saving all sorts of Grid-related data to Isolated Storage was really easy as I'll show first. Saving that data to the database was a bit more involved. I'm not going to really fire off to SQL in this post, but I'm going to go as far as saving the data to a global string variable, and read it back.&lt;br /&gt;&lt;br /&gt;Live Silverlight sample on the page, appropriate snippets of code discussed, and a download of the app at the end.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://wdevne.ws/xv2XsB"&gt;&lt;u&gt;Read On&lt;/u&gt;&lt;/a&gt;&lt;/font&gt; &lt;img src="http://geekswithblogs.net/WynApseTechnicalMusings/aggbug/148440.aspx" width="1" height="1" /&gt;</description>      <creator xmlns="http://purl.org/dc/elements/1.1/">Dave Campbell</creator>      <guid>http://geekswithblogs.net/WynApseTechnicalMusings/archive/2012/01/21/148440.aspx</guid>      <pubDate>Sun, 22 Jan 2012 02:03:27 GMT</pubDate>      <comment xmlns="http://wellformedweb.org/CommentAPI/">http://geekswithblogs.net/WynApseTechnicalMusings/comments/148440.aspx</comment>      <comments>http://geekswithblogs.net/WynApseTechnicalMusings/archive/2012/01/21/148440.aspx#feedback</comments>      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://geekswithblogs.net/WynApseTechnicalMusings/comments/commentRss/148440.aspx</commentRss>      <ping xmlns="http://madskills.com/public/xml/rss/module/trackback/">http://geekswithblogs.net/WynApseTechnicalMusings/services/trackbacks/148440.aspx</ping>    </item>    <item>      <guid isPermaLink="false">tag:blogger.com,1999:blog-8492016573075353132.post-684222780971673531</guid>      <pubDate>Sat, 21 Jan 2012 13:43:00 +0000</pubDate>      <updated xmlns="http://www.w3.org/2005/Atom">2012-01-21T19:13:37.803+05:30</updated>      <title>Share Status and Link on Socials in Windows Phone</title>      <description>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Hope you all doing good.Sorry for the great delay here,I am almost working for all 7 days in week and that too on SQL Server – SSIS which is totally Alien to me but now I have good hands-on (In future you might get to see few post on that as well) for a critical project in my company. Due to this I couldn’t meet you here.&lt;/p&gt;  &lt;p&gt;Today finally I got sometime to spend here and on Windows Phone and Silverlight, So I thought I can share something quickly with you before I get to other big topics.Our today’s topic is small but very unique and useful. Today I am going to talk about 2 set of Tasks and how to use them effectively available with new Windows Phone SDK as &lt;strong&gt;ShareStatusTask&lt;/strong&gt; and &lt;strong&gt;ShareLinkTask&lt;/strong&gt;&amp;#160; which comes under Microsoft.Phone.Tasks Namespace.So lets start with it.&lt;/p&gt;  &lt;p&gt;So all we need is a simple Textbox and Button like this :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-yGt9QGt0uTQ/TxrAqEkxqTI/AAAAAAAADJ8/ZHSZLpeAciw/s1600-h/UITaskShare%25255B15%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="UITaskShare" border="0" alt="UITaskShare" src="http://lh4.ggpht.com/-3f84XYRtMPc/TxrArpWHLQI/AAAAAAAADKE/PohPmFF_S9E/UITaskShare_thumb%25255B13%25255D.jpg?imgmax=800" width="260" height="458" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;XAML Code :&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;lt;Grid x:Name=&amp;quot;ContentPanel&amp;quot; Grid.Row=&amp;quot;1&amp;quot; Margin=&amp;quot;12,0,12,0&amp;quot;&amp;gt;   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;TextBox x:Name=&amp;quot;txtStatus&amp;quot; Height=&amp;quot;100&amp;quot; /&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Button x:Name=&amp;quot;btnShare&amp;quot; Height=&amp;quot;100&amp;quot; Width=&amp;quot;200&amp;quot; Margin=&amp;quot;0,358,0,149&amp;quot; Click=&amp;quot;btnShare_Click&amp;quot;&amp;gt;Share&amp;lt;/Button&amp;gt;    &lt;br /&gt; &amp;lt;/Grid&amp;gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Namespace :&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;using Microsoft.Phone.Tasks;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;C# Code :&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;private void btnShare_Click(object sender, RoutedEventArgs e)   &lt;br /&gt;{    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ShareStatusTask mySocialTasks = new ShareStatusTask();&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; mySocialTasks.Status = txtStatus.Text.ToString() + System.DateTime.Now.ToString();&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; mySocialTasks.Show();   &lt;br /&gt;}&lt;/p&gt;  &lt;p&gt;Above code is simple, We have a &lt;strong&gt;ShareStatusTask &lt;/strong&gt;which comes with Property &lt;strong&gt;Status &lt;/strong&gt;like this in &lt;strong&gt;ShareStatusTask&lt;/strong&gt; which is Inherited from &lt;strong&gt;ShareTaskBase &lt;/strong&gt;whose &lt;strong&gt;Show() &lt;/strong&gt;method Causes the sharing dialog to be displayed to the user. &lt;/p&gt;  &lt;p&gt;public string Status { get; set; }&lt;/p&gt;  &lt;p&gt;public void Show();&lt;/p&gt;  &lt;p&gt;So we are passing our/user defined Status message from Textbox txtStatus and appending DateTime with it (You can append anything or customize as per your need), Once you click on Share you will get Share Dialog like this :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-dMoyud2br98/TxrAtxkab0I/AAAAAAAADKM/SvMdCLbIiUs/s1600-h/WP_000005%25255B4%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="WP_000005" border="0" alt="WP_000005" src="http://lh4.ggpht.com/-Qy1G6TeeJCw/TxrAvR30idI/AAAAAAAADKU/C2X90QeGIZM/WP_000005_thumb%25255B2%25255D.jpg?imgmax=800" width="264" height="364" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Sorry for bit low screenshot, but you can see the list of Socials available on your device as &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Windows Live&lt;/li&gt;    &lt;li&gt;Facebook&lt;/li&gt;    &lt;li&gt;Twitter&lt;/li&gt;    &lt;li&gt;LinkedIn&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;If something new comes up tomorrow might get added to list, So all you need to do is pick the Socials and go ahead and share. &lt;strong&gt;Please note that this does not work on Windows Phone Emulator so you need to port this on actual Windows Phone Device.Also note that availability of Socials on your phone depends on your configuration and choice to have.&lt;/strong&gt;So Don’t waste your time in emulator since it will not give any output or will not give any response.&lt;/p&gt;  &lt;p&gt;On similar lines, we can implement &lt;strong&gt;ShareLinkTask &lt;/strong&gt;Class like this :&lt;/p&gt;  &lt;p&gt;private void btnShare_Click(object sender, RoutedEventArgs e)   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ShareLinkTask mySocialLinks = new ShareLinkTask();&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mySocialLinks.Title = &amp;quot;Explore .NET with Vikram Pendse&amp;quot;;   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mySocialLinks.LinkUri = new Uri(&amp;quot;&lt;a href="http://pendsevikram.blogspot.com&amp;quot;"&gt;http://pendsevikram.blogspot.com&amp;quot;&lt;/a&gt;, UriKind.Absolute);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mySocialLinks.Message = txtStatus.Text.ToString() + System.DateTime.Now.ToString();&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mySocialLinks.Show();   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;Choose “Windows Phone Device” and hit F5, you can see in Output window how it ports to Device and confirm the same like this it got displayed in my VS Output Window : (Observe lines in Bold)&lt;/p&gt;  &lt;p&gt;------ Deploy started: Project: Demo_ShareStatus_Task, Configuration: Debug Any CPU ------   &lt;br /&gt;Deploying D:\Silverlight_On_Mobile\Demo_ShareStatus_Task\Demo_ShareStatus_Task\Bin\Debug\Demo_ShareStatus_Task.xap...    &lt;br /&gt;&lt;strong&gt;Connecting to Windows Phone Device...     &lt;br /&gt;The application is already installed on the device. Checking if an incremental deployment is possible...      &lt;br /&gt;&lt;/strong&gt;Doing incremental deployment...    &lt;br /&gt;Updating information related to modified files...    &lt;br /&gt;Deployment of D:\Silverlight_On_Mobile\Demo_ShareStatus_Task\Demo_ShareStatus_Task\Bin\Debug\Demo_ShareStatus_Task.xap succeeded.    &lt;br /&gt;========== Deploy: 1 succeeded, 0 failed, 0 skipped ==========&lt;/p&gt;  &lt;p&gt;Now your app is ready to test on your WP Device, But make note of 2 things before you deploy :&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Phone is ON and at Home Screen is visible and not pin locked&lt;/li&gt;    &lt;li&gt;Zune instance is up and running&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Now start from App list like this : (Demo_ShareStatus Icon)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-Wjp3zYcFUzI/TxrAxYqG0nI/AAAAAAAADKc/MPVQSRyHEI8/s1600-h/WP_000003%25255B7%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="WP_000003" border="0" alt="WP_000003" src="http://lh3.ggpht.com/-ywjZvLkvwls/TxrAy7MJANI/AAAAAAAADKk/CPKHLZ6h4_8/WP_000003_thumb%25255B5%25255D.jpg?imgmax=800" width="300" height="413" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Type your Message :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-TffBT1a8GaA/TxrA0kRYt8I/AAAAAAAADKs/EuDD3q95O3I/s1600-h/WP_000004%25255B8%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="WP_000004" border="0" alt="WP_000004" src="http://lh5.ggpht.com/-trSx0qUWacI/TxrA2ADO12I/AAAAAAAADK0/_SFsfIfiUro/WP_000004_thumb%25255B6%25255D.jpg?imgmax=800" width="285" height="393" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Share Link and Select Social Networks like this :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-oy65JIG9j-g/TxrA3iOtJDI/AAAAAAAADK8/QC5oHRp-yOM/s1600-h/WP_000006%25255B8%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="WP_000006" border="0" alt="WP_000006" src="http://lh5.ggpht.com/-hkM8cFOAo5w/TxrA47DTfnI/AAAAAAAADLE/nUCvfNLuJuA/WP_000006_thumb%25255B6%25255D.jpg?imgmax=800" width="281" height="387" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Finally you can see this happening in real on your respective Social Networks, Like in my case this got posted on my Facebook,Twitter and LinkedIn in one shot and at same time at all place like this :&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Facebook :&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-G2uAV1KhvTc/TxrA6S21gII/AAAAAAAADLM/PEkEhzeeWUY/s1600-h/Facebook%25255B8%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="Facebook" border="0" alt="Facebook" src="http://lh3.ggpht.com/-_Axf6mKibpc/TxrA7pR65PI/AAAAAAAADLU/BBxYTxR9bd0/Facebook_thumb%25255B6%25255D.jpg?imgmax=800" width="406" height="113" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Twitter :&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-ANqeE5TQK9E/TxrA8y7Q3KI/AAAAAAAADLc/LW1xDqKIxx4/s1600-h/Twitter%25255B11%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="Twitter" border="0" alt="Twitter" src="http://lh3.ggpht.com/-4Txjcdbk364/TxrA-_O5ZhI/AAAAAAAADLk/2coHD9yeYo8/Twitter_thumb%25255B9%25255D.jpg?imgmax=800" width="389" height="174" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;LinkedIn :&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-MHDGZz2yv0c/TxrBASlc3YI/AAAAAAAADLs/_l4zPYfkEQ0/s1600-h/LinkedIn%25255B7%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="LinkedIn" border="0" alt="LinkedIn" src="http://lh5.ggpht.com/-7JPp_4sbv_0/TxrBB9vbt2I/AAAAAAAADL0/jan5TXL3MUY/LinkedIn_thumb%25255B5%25255D.jpg?imgmax=800" width="372" height="237" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So this is how you can share Status or Link in very short piece of Code by making use of &lt;strong&gt;ShareStatusTask&lt;/strong&gt; and &lt;strong&gt;ShareLinkTask&lt;/strong&gt; given by Windows Phone Development Environment. Now how to make use of these tasks in your app,I leave this for you to decide,Let me know if you need any help using this and also let me know your feedback.I hope you will enjoy this small post after a long time here. Now since I am bit relax from work schedule so I will be back soon with some more interesting posts on Windows Phone, WinRT and Silverlight soon.So keep visiting this place now.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Vikram.&lt;/strong&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8492016573075353132-684222780971673531?l=pendsevikram.blogspot.com' alt='' /&gt;&lt;/div&gt;</description>      <link>http://pendsevikram.blogspot.com/2012/01/share-status-and-link-on-socials-in.html</link>      <author>noreply@blogger.com (Vikram Pendse)</author>      <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-3f84XYRtMPc/TxrArpWHLQI/AAAAAAAADKE/PohPmFF_S9E/s72-c/UITaskShare_thumb%25255B13%25255D.jpg?imgmax=800" height="72" width="72" />      <total xmlns="http://purl.org/syndication/thread/1.0">0</total>    </item>    <item>      <title>MVVM on the Full Stack</title>      <link>http://feeds.johnpapa.net/~r/JohnPapa/~3/WRa96dLsFYs/mvvm-on-the-full-stack</link>      <description>&lt;p&gt;Long ago, in a galaxy far far away I met with&amp;nbsp; &lt;a href="https://twitter.com/#!/jongalloway"&gt;Jon Galloway&lt;/a&gt; and &lt;a href="https://twitter.com/JesseLiberty"&gt;Jesse Liberty&lt;/a&gt; to brainstorm on some MVVM ideas. I had forgotten about this video recording, and I guess they did too. But now, many months later they dug it up and you can now check it out at Channel 9 on their show, The Full Stack. &lt;/p&gt;&lt;iframe style="width: 512px; height: 288px" src="http://channel9.msdn.com/Series/The-Full-Stack/The-Full-Stack-Part-14-Taking-a-look-at-MVVM-with-John-Papa/player?w=512&amp;amp;h=288" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;div class="feedflare"&gt;&lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=WRa96dLsFYs:zWRav3BaviM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?i=WRa96dLsFYs:zWRav3BaviM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=WRa96dLsFYs:zWRav3BaviM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?i=WRa96dLsFYs:zWRav3BaviM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=WRa96dLsFYs:zWRav3BaviM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=WRa96dLsFYs:zWRav3BaviM:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JohnPapa/~4/WRa96dLsFYs" height="1" width="1"/&gt;</description>      <pubDate>Fri, 20 Jan 2012 01:21:00 GMT</pubDate>      <guid isPermaLink="false">http://johnpapa.net:80/mvvm-on-the-full-stack</guid>      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://johnpapa.net:80/mvvm-on-the-full-stack</origLink>    </item>    <item>      <title>Full Stack Resumes–MVVM Design</title>      <link>http://feedproxy.google.com/~r/JesseLiberty-SilverlightGeek/~3/l-ZWlwjR-tw/</link>      <comments>http://jesseliberty.com/2012/01/19/full-stack-resumesmvvm-design/#comments</comments>      <pubDate>Thu, 19 Jan 2012 14:15:29 +0000</pubDate>      <creator xmlns="http://purl.org/dc/elements/1.1/">Jesse Liberty</creator>      <category><![CDATA[Full Stack]]></category>      <category><![CDATA[Mango]]></category>      <category><![CDATA[MVVM]]></category>      <category><![CDATA[Video]]></category>      <category><![CDATA[WindowsPhone]]></category>      <guid isPermaLink="false">http://jesseliberty.com/?p=5177</guid>      <encoded xmlns="http://purl.org/rss/1.0/modules/content/"><![CDATA[The Full Stack project resumes with a bang as Jon Galloway and I talk with John Papa about MVVM design.<br/><br/>For the complete article and hyperlinks, please visit my blog at http://JesseLiberty.com<div class="feedflare"><a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=l-ZWlwjR-tw:zAVMc7v2NwQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=l-ZWlwjR-tw:zAVMc7v2NwQ:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=l-ZWlwjR-tw:zAVMc7v2NwQ:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?i=l-ZWlwjR-tw:zAVMc7v2NwQ:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=l-ZWlwjR-tw:zAVMc7v2NwQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?i=l-ZWlwjR-tw:zAVMc7v2NwQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=l-ZWlwjR-tw:zAVMc7v2NwQ:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?i=l-ZWlwjR-tw:zAVMc7v2NwQ:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=l-ZWlwjR-tw:zAVMc7v2NwQ:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?d=qj6IDK7rITs" border="0"></img></a></div><img src="http://feeds.feedburner.com/~r/JesseLiberty-SilverlightGeek/~4/l-ZWlwjR-tw" height="1" width="1"/>]]></encoded>      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://jesseliberty.com/2012/01/19/full-stack-resumesmvvm-design/feed/</commentRss>      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">0</comments>      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://jesseliberty.com/2012/01/19/full-stack-resumesmvvm-design/</origLink>    </item>    <item>      <title>New Videos Uploaded</title>      <link>http://feedproxy.google.com/~r/JesseLiberty-SilverlightGeek/~3/Sm2SJooUVFw/</link>      <comments>http://jesseliberty.com/2012/01/18/new-videos-uploaded/#comments</comments>      <pubDate>Wed, 18 Jan 2012 17:50:10 +0000</pubDate>      <creator xmlns="http://purl.org/dc/elements/1.1/">Jesse Liberty</creator>      <category><![CDATA[Mango]]></category>      <category><![CDATA[WindowsPhone]]></category>      <category><![CDATA[Video]]></category>      <guid isPermaLink="false">http://jesseliberty.com/?p=5175</guid>      <encoded xmlns="http://purl.org/rss/1.0/modules/content/"><![CDATA[I’ve recently uploaded a number of new Videos in the Windows Phone 7.5 video series.&#160; The two most recent (uploaded today) are on persisting an image and navigation within an MVVM application.<br/><br/>For the complete article and hyperlinks, please visit my blog at http://JesseLiberty.com<div class="feedflare"><a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=Sm2SJooUVFw:DpgjWrnxMpk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=Sm2SJooUVFw:DpgjWrnxMpk:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=Sm2SJooUVFw:DpgjWrnxMpk:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?i=Sm2SJooUVFw:DpgjWrnxMpk:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=Sm2SJooUVFw:DpgjWrnxMpk:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?i=Sm2SJooUVFw:DpgjWrnxMpk:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=Sm2SJooUVFw:DpgjWrnxMpk:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?i=Sm2SJooUVFw:DpgjWrnxMpk:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=Sm2SJooUVFw:DpgjWrnxMpk:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?d=qj6IDK7rITs" border="0"></img></a></div><img src="http://feeds.feedburner.com/~r/JesseLiberty-SilverlightGeek/~4/Sm2SJooUVFw" height="1" width="1"/>]]></encoded>      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://jesseliberty.com/2012/01/18/new-videos-uploaded/feed/</commentRss>      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">3</comments>      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://jesseliberty.com/2012/01/18/new-videos-uploaded/</origLink>    </item>    <item>      <title>Windows Phone 7.5 - Using advanced tiles API</title>      <link>http://feedproxy.google.com/~r/TheSilverlightBlog/~3/Ax2iGOZcd2s/windows-phone-7-5-using-advanced-tiles-api.aspx</link>      <pubDate>Wed, 18 Jan 2012 15:43:37 GMT</pubDate>      <guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10258087</guid>      <creator xmlns="http://purl.org/dc/elements/1.1/">Silverlight Team</creator>      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">0</comments>      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/silverlight/rsscomments.aspx?WeblogPostID=10258087</commentRss>      <comments>http://blogs.msdn.com/b/silverlight/archive/2012/01/18/windows-phone-7-5-using-advanced-tiles-api.aspx#comments</comments>      <description>&lt;p&gt;&lt;em&gt;by Andrea Boschin&lt;/em&gt; &lt;/p&gt;  &lt;p&gt;There is not any doubt, the first thing you meet when you use Windows Phone are the tiles. These are the large squares on the home screen that identifies some applications and they are also a distinguishable character that make your Windows Phone unique. &lt;/p&gt;  &lt;p&gt;As you know for sure, the tiles can be attached or detached from the home screen and some particular software can take advantage of double size tiles. While this is not a feature available to developers, in OS7.5, the tiles gained new features and a new set of APIs that you can use to enrich your applications. As an example you are now able to update your tiles from inside the application and you can use double faced tiles to improve information to the user. In this article I would like to explore these new features and show how to take advantage of them, while porting your software to the new operating system. &lt;/p&gt;  &lt;h2&gt;Accessing and changing your tile(s)&lt;/h2&gt;  &lt;p&gt;Once your application is running the user can have pinned its tile on the home screen. If this happened, you can have access to a bunch of tile's properties you can change at every time while the application is running, but please take note that it implies that the tile exists. Obviously, none of these APIs can work if your application is not pinned.&lt;/p&gt;  &lt;p&gt;The root of your work is the ShellTile class that gives you access to a collection of ActiveTiles. At the very first place in this collection there is a structure that represents the main tile of your application. Reading the previous paragraph, you can expect this collection is empty when you application has not been pinned, but it is not true. The collection always contains at least one element, and you can update it every time also if the application's tile is not in the home screen. This does not cause a visible change but if the user choose to pin the application at a later time its tile will reflect these changes. The ShellTile class returned by this collection contains an &amp;quot;Update&amp;quot; method that is useful to change the tile's content:&lt;/p&gt;  &lt;blockquote&gt;   &lt;pre&gt;   1: StandardTileData data = new StandardTileData&lt;/pre&gt;  &lt;pre&gt;   2: {&lt;/pre&gt;  &lt;pre&gt;   3:     Title = &amp;quot;My tile!&amp;quot;,&lt;/pre&gt;  &lt;pre&gt;   4:     Count = 10,&lt;/pre&gt;  &lt;pre&gt;   5:     BackgroundImage = new Uri(&amp;quot;/Background.png&amp;quot;, UriKind.RelativeOrAbsolute),&lt;/pre&gt;  &lt;pre&gt;   6:     BackTitle = &amp;quot;This is the back&amp;quot;,&lt;/pre&gt;  &lt;pre&gt;   7:     BackContent = &amp;quot;Hallo!&amp;quot;,&lt;/pre&gt;  &lt;pre&gt;   8:     BackBackgroundImage = new Uri(&amp;quot;/Background.png&amp;quot;, UriKind.RelativeOrAbsolute)&lt;/pre&gt;  &lt;pre&gt;   9: };&lt;/pre&gt;  &lt;pre&gt;  10:  &lt;/pre&gt;  &lt;pre&gt;  11: ShellTile.ActiveTiles.First().Update(data);&lt;/pre&gt;&lt;/blockquote&gt;&lt;p&gt;The properties of the StandardTileData class reflect the parts of the tile and are divided in two categories: Front and Back. So, we have a &amp;quot;Title&amp;quot; property that reflects the title of the tile on the front side and the &amp;quot;BackTitle&amp;quot; that has the same meaning for the back side. This led to the consideration that in OS 7.5, tiles can have two sides available. It suffice you set the value of one of the &amp;quot;Back&amp;quot; properties and the tile automatically activates the back side on a random schedule. &lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/news/Free-Silverlight-Show-Webinar-Windows-Phone-7.5-Background-workers.aspx"&gt;Read the full post&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10258087" width="1" height="1"&gt;&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/oXjOvFNVwAv4DLuKgH-p5VrO9gQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oXjOvFNVwAv4DLuKgH-p5VrO9gQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/oXjOvFNVwAv4DLuKgH-p5VrO9gQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oXjOvFNVwAv4DLuKgH-p5VrO9gQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;&lt;a href="http://feeds.feedburner.com/~ff/TheSilverlightBlog?a=Ax2iGOZcd2s:v45K_-LUYCQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheSilverlightBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheSilverlightBlog?a=Ax2iGOZcd2s:v45K_-LUYCQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheSilverlightBlog?i=Ax2iGOZcd2s:v45K_-LUYCQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheSilverlightBlog?a=Ax2iGOZcd2s:v45K_-LUYCQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheSilverlightBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheSilverlightBlog/~4/Ax2iGOZcd2s" height="1" width="1"/&gt;</description>      <category domain="http://blogs.msdn.com/b/silverlight/archive/tags/Tips+and+Training/">Tips and Training</category>      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://blogs.msdn.com/b/silverlight/archive/2012/01/18/windows-phone-7-5-using-advanced-tiles-api.aspx</origLink>    </item>    <item>      <title>Stop SOPA and PIPA</title>      <link>http://feeds.jeffhandley.com/~r/JeffHandley/~3/Xd2UMJ87A7s/Stop-SOPA-and-PIPA.aspx</link>      <description>&lt;h1&gt;Please do not allow SOPA, PIPA, or any forms of Internet censorship or regulation to get through Congress.&lt;/h1&gt;  &lt;h2&gt;Over the past several years I've noticed a trend in our government where we've shifted away from laws protecting citizens from corporations and government to laws protecting corporations and government from citizens. This is coming at the cost of our liberty and pursuit of happiness.&lt;/h2&gt;  &lt;h2&gt;By preventing SOPA, PIPA, or other Internet censorship/regulation, you can help reverse this trend.&lt;/h2&gt;  &lt;h3&gt;Thank you,   &lt;br /&gt;Jeff Handley&lt;/h3&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;I am submitting this text to my senate and house representatives, and I’m also making all pages on this blog redirect &lt;a href="http://sopa.jeffhandley.com" target="_blank"&gt;a PSA page&lt;/a&gt; until 1/19/2012 as part of my effort to stop SOPA and PIPA.&lt;/p&gt;&lt;img src="http://jeffhandley.com/aggbug/284.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/JeffHandley/~4/Xd2UMJ87A7s" height="1" width="1"/&gt;</description>      <creator xmlns="http://purl.org/dc/elements/1.1/">Jeff Handley</creator>      <guid isPermaLink="false">http://jeffhandley.com/archive/2012/01/17/Stop-SOPA-and-PIPA.aspx</guid>      <pubDate>Wed, 18 Jan 2012 06:10:25 GMT</pubDate>      <comments>http://jeffhandley.com/archive/2012/01/17/Stop-SOPA-and-PIPA.aspx#feedback</comments>      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">2</comments>      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://jeffhandley.com/comments/commentRss/284.aspx</commentRss>      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://jeffhandley.com/archive/2012/01/17/Stop-SOPA-and-PIPA.aspx</origLink>    </item>    <item>      <title>Calling Navigate From The View Model</title>      <link>http://feedproxy.google.com/~r/JesseLiberty-SilverlightGeek/~3/8EY0wAQIEDY/</link>      <comments>http://jesseliberty.com/2012/01/17/calling-navigate-from-the-view-model/#comments</comments>      <pubDate>Tue, 17 Jan 2012 16:04:01 +0000</pubDate>      <creator xmlns="http://purl.org/dc/elements/1.1/">Jesse Liberty</creator>      <category><![CDATA[Mango]]></category>      <category><![CDATA[Mini-Tutorial]]></category>      <category><![CDATA[Patterns & Skills]]></category>      <guid isPermaLink="false">http://jesseliberty.com/?p=5169</guid>      <encoded xmlns="http://purl.org/rss/1.0/modules/content/"><![CDATA[Windows Phone Mini-Tutorial In the third part of the MVVM Light Toolkit Soup To Nuts (part 1 is here) I started with an application that had two pages, and a button on the first that was to cause a navigation &#8230; Continue reading &#8594;<br/><br/>For the complete article and hyperlinks, please visit my blog at http://JesseLiberty.com<div class="feedflare"><a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=8EY0wAQIEDY:rtTCKIQ7FaM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=8EY0wAQIEDY:rtTCKIQ7FaM:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=8EY0wAQIEDY:rtTCKIQ7FaM:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?i=8EY0wAQIEDY:rtTCKIQ7FaM:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=8EY0wAQIEDY:rtTCKIQ7FaM:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?i=8EY0wAQIEDY:rtTCKIQ7FaM:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=8EY0wAQIEDY:rtTCKIQ7FaM:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?i=8EY0wAQIEDY:rtTCKIQ7FaM:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=8EY0wAQIEDY:rtTCKIQ7FaM:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?d=qj6IDK7rITs" border="0"></img></a></div><img src="http://feeds.feedburner.com/~r/JesseLiberty-SilverlightGeek/~4/8EY0wAQIEDY" height="1" width="1"/>]]></encoded>      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://jesseliberty.com/2012/01/17/calling-navigate-from-the-view-model/feed/</commentRss>      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">5</comments>      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://jesseliberty.com/2012/01/17/calling-navigate-from-the-view-model/</origLink>    </item>    <item>      <title>Windows Phone 7.5: Using sockets</title>      <description>&lt;table width="20"&gt;    &lt;tbody&gt;        &lt;tr&gt;            &lt;td&gt;            &lt;div class="fb-like" data-show-faces="true" data-send="false" data-href="http://www.silverlightshow.net/items/Windows-Phone-7.5-Using-sockets.aspx" data-font="segoe ui" data-layout="button_count"&gt;&lt;/div&gt;            &lt;/td&gt;            &lt;td&gt;&lt;a href="https://twitter.com/share" class="twitter-share-button" data-via="silverlightshow" data-counturl="http://www.silverlightshow.net/items/Windows-Phone-7.5-Using-sockets.aspx" data-count="horizontal" data-text="Reading the article 'Windows Phone 7.5 -Using sockets' by @aboschin #wpdev #windowsphone" data-url="http://slshow.net/whB4Pk"&gt;Tweet&lt;/a&gt;&lt;/td&gt;            &lt;td&gt;&lt;g:plusone size="medium" href="http://www.silverlightshow.net/items/Windows-Phone-7.5-Using-sockets.aspx"&gt;&lt;/g:plusone&gt;            &lt;/td&gt;            &lt;td&gt;            &lt;/td&gt;        &lt;/tr&gt;    &lt;/tbody&gt;&lt;/table&gt;&lt;p style="text-align: justify;"&gt;Also if the technical specifications of Windows Phone 7.0 stated that it is compatible with Silverlight 3.0, this only means that every feature you can use in the phone is available on the desktop but not viceversa. Sockets are a clear demonstration of this sentence. While they are perfectly available on Silverlight 3.0, they are locked down in the phone for the, so called, "security purposes". Curiously if you watch at the codebase of Silverlight for Windows Phone 7.0 you see that, the Socket class exists but it is declared "internal".    &lt;/p&gt;&lt;div style="border:1px solid #dddddd;width: 200px; padding-top: 5px; padding-bottom: 5px; padding-left: 10px; margin-top: 5px; margin-left: 10px; float: right; background-color: #f3f3f3; border-image: initial;"&gt;&lt;h3&gt;Don't miss...&lt;/h3&gt;&lt;ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-left: 20px; font-size: 12px; list-style-type: circle;"&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/items/Data-Access-Strategies-WebClient.aspx"&gt;The article series 'WP7 Data Access Strategies'&lt;/a&gt; &lt;/li&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/video/Webinar-Azure-for-WP7-Devs.aspx"&gt;&lt;strong&gt;Recording of the webinar&lt;/strong&gt;: Azure for the Windows Phone Developer&lt;/a&gt;&lt;/li&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/ebooks/wp7_exam.aspx"&gt;The ebook 'Getting Ready for the Windows Phone Exam 70-599':&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;p style="padding-bottom: 5px; text-align: center;"&gt;&lt;a href="http://www.silverlightshow.net/ebooks/wp7_exam.aspx"&gt;&lt;img style="border:0px solid; width: 100px; height: 141px; border-image: initial;" alt="Getting Ready for the Windows Phone Exam 70-599" src="http://www.silverlightshow.net/Storage/Ebooks/wp7_exam_cover.png" /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size: 13px;"&gt;($4.99)&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;&lt;a href="http://www.silverlightshow.net/ebooks/wp7_exam.aspx"&gt;&lt;/a&gt;&lt;p style="font-size: 12px; text-align: center;"&gt;&lt;a href="http://www.silverlightshow.net/ebooks.aspx"&gt;All SilverlightShow Ebooks&lt;/a&gt;&amp;nbsp;&lt;img alt="" src="http://www.silverlightshow.net/Storage/arrow-content.jpg" /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p style="text-align: justify;"&gt;The new OS 7.5 have made Sockets available to developers, opening the way to a wide series of applications that uses this low-level communication way. Sockets are for sure difficult from the programming side, but they offer a connected/disconnected, fast and reliable way of exchange data that is unreplaceable for many purposes.&lt;/p&gt;&lt;h4 style="text-align: justify;"&gt;What sockets can do (and what they can't)&lt;/h4&gt;&lt;p style="text-align: justify;"&gt;Sockets are something that we use every day. Also if we are not aware of this, they are at the very base of each network protocol, comprised HTTP, SMTP, PO3, and so on. Their purpose is to create a communication channel between two boundaries where they can send and receive something that usually is a binary message. There are two ways to create a Socket connection. The TCP and the UDP. Since TCP is an always connected protocol that is tailored to exchange continuous streams, UDP is mostly made to exchange fast and short packets of information - called datagrams - while the boundaries aren't continuously connected. To make a practical example, HTTP is based on the TCP protocol where the client and the server establish a connected channel and they both send and receive on this channel until the communication ends. On the other side, DNS is mostly UDP based because the client sends a request datagram and the server answers with another datagram but there is not a real channel established between the two boundaries. Do not underestimate UDP since it is often very effective. Infact a number of streaming protocols are based on it.&lt;/p&gt;&lt;p style="text-align: justify;"&gt;While Silverlight only supports TCP, Windows Phone 7.5 also supports UDP Sockets. I'm always really amazed about the confusion of team's choices, but to me it is really not understandable the reason that leads to diverge the sockets capabilities in this matter. But so it is. So, while in Silverlight for desktop we can only use TCP and a limited set of ports, if application is not fully trusted, with Windows Phone 7.5 we have the very full set of knifes to work with.&lt;/p&gt;&lt;p style="text-align: justify;"&gt;No matter you are using a TCP or UDP connection, a communication is ruled by the same process and by the same structures. Once you have choose the endpoint to connect to, in terms of ip address and port, the process of communications is the following:&lt;/p&gt;&lt;ol&gt;    &lt;li&gt;    &lt;div style="text-align: justify;"&gt;Create the Socket class&lt;/div&gt;    &lt;/li&gt;    &lt;li&gt;    &lt;div style="text-align: justify;"&gt;Connect the socket&lt;/div&gt;    &lt;/li&gt;    &lt;li&gt;    &lt;div style="text-align: justify;"&gt;Send and receive data&lt;/div&gt;    &lt;/li&gt;    &lt;li&gt;    &lt;div style="text-align: justify;"&gt;Shutdown the connection&lt;/div&gt;    &lt;/li&gt;&lt;/ol&gt;&lt;p style="text-align: justify;"&gt;The correct sequence of operations at point 3 is determined by the network protocol you are implementing. As an example if you are placing an HTTP call, first of all you send the request and the receive the response, but there are many cases where you can simply start to receive a continuous stream because the protocol continuously broadcast packets.&lt;/p&gt;&lt;p style="text-align: justify;"&gt;All the phases of the socket connection are ruled by at least an instance of SockerAsyncEventArgs. This class contains the reference to the remote endpoint, the operation in progress/completed, the data that is sent to or received by the peer. In a simple connection you will have only a single instance but, for performance purposes (e.g. in a multithreaded environment), you can have a pool of instances to use for the various operations. &lt;/p&gt;&lt;h4 style="text-align: justify;"&gt;Implementing a simple UDP protocol (NTP)&lt;/h4&gt;&lt;p style="text-align: justify;"&gt;For the sake of the article I will show now how to implement a simple protocol. The NTP protocol I will show, is very basic, just because I do not want to spend most of the time explaining the protocol itself. NTP stands for Network Time Protocol and despite the very simple datagram you have to exchange over an UDP socket, the RFC is really complex because of the server implementation that have to ensure redundancy and precision across multiple sources.&lt;/p&gt;&lt;p style="text-align: justify;"&gt;To make an NTP request you have to do the following:&lt;/p&gt;&lt;ol&gt;    &lt;li&gt;    &lt;div style="text-align: justify;"&gt;Connect to a NTP server on port 123&lt;/div&gt;    &lt;/li&gt;    &lt;li&gt;    &lt;div style="text-align: justify;"&gt;Prepare a datagram of 48 zeroed bytes with the first byte set to 0x1b&lt;/div&gt;    &lt;/li&gt;    &lt;li&gt;    &lt;div style="text-align: justify;"&gt;Send the datagram over UDP&lt;/div&gt;    &lt;/li&gt;    &lt;li&gt;    &lt;div style="text-align: justify;"&gt;Receive the same datagram filled with time information&lt;/div&gt;    &lt;/li&gt;    &lt;li&gt;    &lt;div style="text-align: justify;"&gt;Close the socket&lt;/div&gt;    &lt;/li&gt;    &lt;li&gt;    &lt;div style="text-align: justify;"&gt;Decode and use the result&lt;/div&gt;    &lt;/li&gt;&lt;/ol&gt;&lt;p style="text-align: justify;"&gt;The returned bytes represents a DateTime and I do not enter in the format of the response. If you are interested simply watch at the decoding method in my example. The first thing to do is to create a NtpClient class. This class will represent a single server and is initialized with the remote endpoint:&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;div id="codeSnippetWrapper" style="border:1px solid silver;margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-image: initial; width: 97.5%; line-height: 12pt; overflow-x: auto; overflow-y: auto; font-family: 'courier new', courier, monospace; font-size: 8pt; cursor: text; direction: ltr; max-height: 200px; background-color: #f4f4f4; text-align: left;"&gt;&lt;div id="codeSnippet" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4; text-align: left;"&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; NtpClient&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; Socket Socket { get; set; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; SocketAsyncEventArgs Args { get; set; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; NtpClient(EndPoint endPoint)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.Args = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; SocketAsyncEventArgs&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt;         {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt;             RemoteEndPoint = endPoint&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt;  11:&lt;/span&gt;         };&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt;  12:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt;  13:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.Args.Completed += &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; EventHandler&amp;lt;SocketAsyncEventArgs&amp;gt;(Operation_Completed);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum14" style="color: #606060;"&gt;  14:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum15" style="color: #606060;"&gt;  15:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum16" style="color: #606060;"&gt;  16:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; Operation_Completed(&lt;span style="color: #0000ff;"&gt;object&lt;/span&gt; sender, SocketAsyncEventArgs e)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum17" style="color: #606060;"&gt;  17:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum18" style="color: #606060;"&gt;  18:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum19" style="color: #606060;"&gt;  19:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="text-align: justify;"&gt;In this first part I create an instance of the SocketAsyncEventArgs and initialize it with the RemoteEndPoint. This instance is shared by all the network calls so it is defined as a private member property. The code also attach the Completed event of this instance. Every time I will perform an action on the socket, using this instance, the Completed event is raised and the LastOperation property will be set with a value representing the action I did.&lt;/p&gt;&lt;p style="text-align: justify;"&gt;The GetNetworkTimeAsync method initializes the Socket class and initiates the connection. Under the hoods, the meaning of "ConnectAsync" is different between TCP and UDP but it has to be made for both the protocols. Here I am using an UDP connection so the values in the ctor indicate ProtocolType.Udp and a SocketType.Dgram. If I would use a TCP channel I should use SocketType.Stream and ProtocolType.Tcp.&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;div id="codeSnippetWrapper" style="border:1px solid silver;margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-image: initial; width: 97.5%; line-height: 12pt; overflow-x: auto; overflow-y: auto; font-family: 'courier new', courier, monospace; font-size: 8pt; cursor: text; direction: ltr; max-height: 200px; background-color: #f4f4f4; text-align: left;"&gt;&lt;div id="codeSnippet" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4; text-align: left;"&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; GetNetworkTimeAsync()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.Socket = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.Socket.ConnectAsync(&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.Args);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="text-align: justify;"&gt;From this point, the lifetime of the class is governed by the Operation_Completed event. Every time I perform an action this method collects the result. So when I call connect the method receives the result, but the same happen when I call SendAsync and ReveiceAsync. Inside the Operation_Completed I create a chain of operation, always calling the following action as the result of another.&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;div id="codeSnippetWrapper" style="border:1px solid silver;margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-image: initial; width: 97.5%; line-height: 12pt; overflow-x: auto; overflow-y: auto; font-family: 'courier new', courier, monospace; font-size: 8pt; cursor: text; direction: ltr; max-height: 200px; background-color: #f4f4f4; text-align: left;"&gt;&lt;div id="codeSnippet" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4; text-align: left;"&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; Operation_Completed(&lt;span style="color: #0000ff;"&gt;object&lt;/span&gt; sender, SocketAsyncEventArgs e)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (e.SocketError == SocketError.Success)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;switch&lt;/span&gt; (e.LastOperation)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;         {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;case&lt;/span&gt; SocketAsyncOperation.Connect:&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt;                 &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.SendRequest();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt;                 &lt;span style="color: #0000ff;"&gt;break&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;case&lt;/span&gt; SocketAsyncOperation.Send:&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt;  11:&lt;/span&gt;                 &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.ReceiveResponse();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt;  12:&lt;/span&gt;                 &lt;span style="color: #0000ff;"&gt;break&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt;  13:&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;case&lt;/span&gt; SocketAsyncOperation.Receive:&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum14" style="color: #606060;"&gt;  14:&lt;/span&gt;                 &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.ReadAndClose();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum15" style="color: #606060;"&gt;  15:&lt;/span&gt;                 &lt;span style="color: #0000ff;"&gt;break&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum16" style="color: #606060;"&gt;  16:&lt;/span&gt;         }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum17" style="color: #606060;"&gt;  17:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum18" style="color: #606060;"&gt;  18:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum19" style="color: #606060;"&gt;  19:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.OnError(e.SocketError);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum20" style="color: #606060;"&gt;  20:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="text-align: justify;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="text-align: justify;"&gt;The chain indicates that following the Connect I call SendRequest then ReceiveResponse and finally ReadAndClose. These decisions are wrapped from an if construct that handles the socket errors. Only when e.SocketError equals Success the chain continues. The SendRequest method creates the datagram and sends it over the channel:&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;div id="codeSnippetWrapper" style="border:1px solid silver;margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-image: initial; width: 97.5%; line-height: 12pt; overflow-x: auto; overflow-y: auto; font-family: 'courier new', courier, monospace; font-size: 8pt; cursor: text; direction: ltr; max-height: 200px; background-color: #f4f4f4; text-align: left;"&gt;&lt;div id="codeSnippet" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4; text-align: left;"&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; SendRequest()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;byte&lt;/span&gt;[] ntpData = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;byte&lt;/span&gt;[48];&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;     Array.Clear(ntpData, 0, ntpData.Length);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;     ntpData[0] = 0x1b;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.Args.SetBuffer(ntpData, 0, ntpData.Length);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.Socket.SendAsync(&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.Args);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="text-align: justify;"&gt;As you can see the 48 bytes array is cleared and the first byte is set to 0x1b then the entire buffer is assigned to the SocketAsyncEventArgs using the SetBuffer method. Finally it is passed to the SendAsync method so it is sent to the connected peer. The ReceiveResponse method instead, does not change the SocketAsyncEventArgs but simply calls the ReceiveAsyncMethod. The purpose of this method is not receiving bytes but putting the socket in receive mode so when a packet arrives it is received.&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;div id="codeSnippetWrapper" style="border:1px solid silver;margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-image: initial; width: 97.5%; line-height: 12pt; overflow-x: auto; overflow-y: auto; font-family: 'courier new', courier, monospace; font-size: 8pt; cursor: text; direction: ltr; max-height: 200px; background-color: #f4f4f4; text-align: left;"&gt;&lt;div id="codeSnippet" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4; text-align: left;"&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; ReceiveResponse()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.Socket.ReceiveAsync(&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.Args);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="text-align: justify;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="text-align: justify;"&gt;When the packet arrives, it is written inside the buffer prepared into the SocketAsyncEventArgs and I receive this data in the Operation_Completed method when LastOperation is Receive. This meand that between ReadAsync and Operation_Completed it may pass a long time depending on how fast is the answer from the server. &lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;div id="codeSnippetWrapper" style="border:1px solid silver;margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-image: initial; width: 97.5%; line-height: 12pt; overflow-x: auto; overflow-y: auto; font-family: 'courier new', courier, monospace; font-size: 8pt; cursor: text; direction: ltr; max-height: 200px; background-color: #f4f4f4; text-align: left;"&gt;&lt;div id="codeSnippet" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4; text-align: left;"&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; ReadAndClose()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;byte&lt;/span&gt;[] ntpData = &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.Args.Buffer;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;const&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;byte&lt;/span&gt; offsetTransmitTime = 40;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;ulong&lt;/span&gt; intpart = 0;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;ulong&lt;/span&gt; fractpart = 0;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;for&lt;/span&gt; (&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; i = 0; i &amp;lt;= 3; i++)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt;         intpart = 256 * intpart + ntpData[offsetTransmitTime + i];&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt;  11:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt;  12:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;for&lt;/span&gt; (&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; i = 4; i &amp;lt;= 7; i++)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt;  13:&lt;/span&gt;         fractpart = 256 * fractpart + ntpData[offsetTransmitTime + i];&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum14" style="color: #606060;"&gt;  14:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum15" style="color: #606060;"&gt;  15:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;ulong&lt;/span&gt; milliseconds = (intpart * 1000 + (fractpart * 1000) / 0x100000000L);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum16" style="color: #606060;"&gt;  16:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum17" style="color: #606060;"&gt;  17:&lt;/span&gt;     TimeSpan timeSpan = TimeSpan.FromTicks((&lt;span style="color: #0000ff;"&gt;long&lt;/span&gt;)milliseconds * TimeSpan.TicksPerMillisecond);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum18" style="color: #606060;"&gt;  18:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum19" style="color: #606060;"&gt;  19:&lt;/span&gt;     DateTime dateTime = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; DateTime(1900, 1, 1);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum20" style="color: #606060;"&gt;  20:&lt;/span&gt;     dateTime += timeSpan;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum21" style="color: #606060;"&gt;  21:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum22" style="color: #606060;"&gt;  22:&lt;/span&gt;     DateTime networkDateTime = dateTime.ToLocalTime();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum23" style="color: #606060;"&gt;  23:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum24" style="color: #606060;"&gt;  24:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.OnCompleted(networkDateTime);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum25" style="color: #606060;"&gt;  25:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum26" style="color: #606060;"&gt;  26:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.Socket.Shutdown(SocketShutdown.Both);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum27" style="color: #606060;"&gt;  27:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.Socket.Close();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum28" style="color: #606060;"&gt;  28:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.Socket = &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum29" style="color: #606060;"&gt;  29:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="text-align: justify;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="text-align: justify;"&gt;The ReadAndClose method receive the buffer and decode its content according with the NTP protocol specifications. Finally it calls ShutDown and Close to terminate the connection. After this the Socket instance is cleared because on the next request I have to create it again. &lt;/p&gt;&lt;h4 style="text-align: justify;"&gt;Using the NtpClient&lt;/h4&gt;&lt;p style="text-align: justify;"&gt;Once the NtpClient class has been created it is time to use it in a Windows Phone application. Using this class is straightforward. You create the client instance and then call the GetNetworkTimeAsync every time you need to request the datetime. The class exposes two events Completed and Error that are raised accordin with the result of the request:&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;div id="codeSnippetWrapper" style="border:1px solid silver;margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; border-image: initial; width: 97.5%; line-height: 12pt; overflow-x: auto; overflow-y: auto; font-family: 'courier new', courier, monospace; font-size: 8pt; cursor: text; direction: ltr; max-height: 200px; background-color: #f4f4f4; text-align: left;"&gt;&lt;div id="codeSnippet" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4; text-align: left;"&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;partial&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; MainPage : PhoneApplicationPage&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; NtpClient Client { get; set; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; MainPage()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;         InitializeComponent();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.Client = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; NtpClient(&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; DnsEndPoint(&lt;span style="color: #006080;"&gt;"0.pool.ntp.org"&lt;/span&gt;, 123));&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.Client.Completed += &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; EventHandler&amp;lt;NtpQueryCompletedEventArgs&amp;gt;(Client_Completed);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt;  11:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.Client.Error += &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; EventHandler&amp;lt;NtpQueryErrorEventArgs&amp;gt;(Client_Error);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt;  12:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt;  13:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum14" style="color: #606060;"&gt;  14:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; Button_Click(&lt;span style="color: #0000ff;"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum15" style="color: #606060;"&gt;  15:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum16" style="color: #606060;"&gt;  16:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.Client.GetNetworkTimeAsync();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum17" style="color: #606060;"&gt;  17:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum18" style="color: #606060;"&gt;  18:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum19" style="color: #606060;"&gt;  19:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; Client_Completed(&lt;span style="color: #0000ff;"&gt;object&lt;/span&gt; sender, NtpQueryCompletedEventArgs e)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum20" style="color: #606060;"&gt;  20:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum21" style="color: #606060;"&gt;  21:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.Result.Text = e.Result.ToString(CultureInfo.CurrentCulture);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum22" style="color: #606060;"&gt;  22:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum23" style="color: #606060;"&gt;  23:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum24" style="color: #606060;"&gt;  24:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; Client_Error(&lt;span style="color: #0000ff;"&gt;object&lt;/span&gt; sender, NtpQueryErrorEventArgs e)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum25" style="color: #606060;"&gt;  25:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum26" style="color: #606060;"&gt;  26:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.Result.Text = e.Error.ToString();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"&gt;&lt;span id="lnum27" style="color: #606060;"&gt;  27:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow-x: visible; overflow-y: visible; font-family: 'courier new', courier, monospace; font-size: 8pt; direction: ltr; background-color: #f4f4f4;"&gt;&lt;span id="lnum28" style="color: #606060;"&gt;  28:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="text-align: justify;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="text-align: justify;"&gt;The NtpClient class does not gracefully handles a double connection request but simply throw away the preceding destroying the socket before creating another one. This is for sure an improvement you can do by yourself. &lt;/p&gt;&lt;p style="text-align: justify;"&gt;The socket are a great opportunity for doing beautiful applications. An example of the power of sockets is my &lt;a href="http://www.xamlplayground.org/post/2011/11/18/Silver-VNC-10-for-Windows-Phone-Mango.aspx" target="_blank"&gt;Silver VNC Client for Windows Phone&lt;/a&gt; that is available on marketplace The VNC client uses a TCP channel to connect to a VNC server and remotely view the desktop of a computer. I hope you enjoy the free edition.&lt;/p&gt;&lt;p style="text-align: justify;"&gt;&lt;a href="http://www.silverlightshow.net/Storage/Sources/XPG.NTP.zip"&gt;&lt;strong&gt;Download the source code&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="text-align: justify;"&gt;&amp;nbsp;&lt;/p&gt;</description>      <link>http://www.silverlightshow.net/items/Windows-Phone-7.5-Using-sockets.aspx</link>      <author>editorial@silverlightshow.net (Andrea Boschin  )</author>      <comments>http://www.silverlightshow.net/items/Windows-Phone-7.5-Using-sockets.aspx#comments</comments>      <guid isPermaLink="true">http://www.silverlightshow.net/items/Windows-Phone-7.5-Using-sockets.aspx</guid>      <pubDate>Mon, 16 Jan 2012 17:10:00 GMT</pubDate>    </item>    <item>      <title>Windows 8 and the future of XAML: Part 1: An overview of the Windows 8 platform</title>      <link>http://feedproxy.google.com/~r/TheSilverlightBlog/~3/U0v6-01j9aU/windows-8-and-the-future-of-xaml-part-1-an-overview-of-the-windows-8-platform.aspx</link>      <pubDate>Thu, 12 Jan 2012 17:02:00 GMT</pubDate>      <guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10256007</guid>      <creator xmlns="http://purl.org/dc/elements/1.1/">Silverlight Team</creator>      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">0</comments>      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/silverlight/rsscomments.aspx?WeblogPostID=10256007</commentRss>      <comments>http://blogs.msdn.com/b/silverlight/archive/2012/01/12/windows-8-and-the-future-of-xaml-part-1-an-overview-of-the-windows-8-platform.aspx#comments</comments>      <description>&lt;p&gt;&lt;em&gt;by Gill Cleeren&lt;/em&gt;&lt;/p&gt;  &lt;h2&gt;Introduction to the series&lt;/h2&gt;  &lt;p&gt;Welcome to this first part of a whole series on Windows 8 articles, which I’ll be writing over the coming weeks and months. It’s my goal in this series to introduce you to what we know at this point about Windows 8 and how we as (XAML) developers will need to adapt to the new platform. &lt;/p&gt;  &lt;p&gt;Since you’re probably a XAML developer like I am, we are going to see things from a XAML point-of-view. In some of the upcoming articles, I’m going to describe you how you can leverage what you already know in XAML when Windows 8 will be ready. I’m also going to spend time looking at how you can convert existing Silverlight applications to Windows 8 Metro apps, so that they follow the rules of the OS. We will also be spending time of course on digging into the developer framework making the development on Windows 8 easy: Windows Runtime or shorter, WinRT. Finally, the series will close with a step-by-step guide on building a complete Windows 8 Metro-style application. &lt;/p&gt;  &lt;p&gt;Now in this first part, we’ll focus on Windows 8 itself and the relation to Metro-style apps. We won’t be focusing on the development part yet; I just want to make sure that everyone is on board with the new OS itself as well as being able to place the terms Metro, Metro apps, WinRT etc.&lt;/p&gt;  &lt;p&gt;I hope you join me on this trip through the Windows platform of the future.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Small note: in this articles, I try to refer to specific versions as little as possible, since I want the information to stay valid as much as humanly possible when Windows 8 will RTM. Therefore, you won’t find download links in these articles. Doing a small search will get you the downloads you need!&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h2&gt;Part 1: An overview of the Windows 8 platform&lt;/h2&gt;  &lt;p&gt;To be honest, I’m writing this very article in the morning of January 1st, 2012… yes indeed, New Year’s Day 2012. And come to think of it, I couldn’t have chosen a better moment - at the beginning of a new year - to write about one of the biggest things awaiting us in that new year: the launch of a new version of the world’s most widely used operating, Windows 8. (Note that at the time of writing of this article, no announcements have been made by Microsoft on any launch date of the OS, but everyone assumes that we’ll see the OS in its final form on our machines sometime in 2012…). As mentioned, in this first article, I will take you through the most important concepts as well as show you some nice improvements.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.silverlightshow.net/items/Windows-8-and-the-future-of-XAML-Part-1-An-overview-of-the-Windows-8-platform.aspx"&gt;Read the full post&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10256007" width="1" height="1"&gt;&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/FS3ZDxAzsBCARPBprMfPDlLQgyk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FS3ZDxAzsBCARPBprMfPDlLQgyk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/FS3ZDxAzsBCARPBprMfPDlLQgyk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FS3ZDxAzsBCARPBprMfPDlLQgyk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;&lt;a href="http://feeds.feedburner.com/~ff/TheSilverlightBlog?a=U0v6-01j9aU:CMqPgWkzr78:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheSilverlightBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheSilverlightBlog?a=U0v6-01j9aU:CMqPgWkzr78:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheSilverlightBlog?i=U0v6-01j9aU:CMqPgWkzr78:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheSilverlightBlog?a=U0v6-01j9aU:CMqPgWkzr78:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheSilverlightBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheSilverlightBlog/~4/U0v6-01j9aU" height="1" width="1"/&gt;</description>      <category domain="http://blogs.msdn.com/b/silverlight/archive/tags/Tips+and+Training/">Tips and Training</category>      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://blogs.msdn.com/b/silverlight/archive/2012/01/12/windows-8-and-the-future-of-xaml-part-1-an-overview-of-the-windows-8-platform.aspx</origLink>    </item>    <item>      <title>Windows Client Developer Roundup 086 for 1/11/2012</title>      <author>Pete Brown	</author>      <link>http://10rem.net/blog/2012/01/11/windows-client-developer-roundup-086-for-1-11-2012</link>      <pubDate>Thu, 12 Jan 2012 01:02:35 GMT</pubDate>      <guid>http://10rem.net/blog/2012/01/11/windows-client-developer-roundup-086-for-1-11-2012</guid>      <description>&lt;p&gt;The Windows Client Developer Roundup aggregates information ofinterest to Windows Client Developers, including &lt;ahref="http://dev.windows.com/"&gt;WinRT XAML&lt;/a&gt;, &lt;ahref="http://windowsclient.net/"&gt;WPF&lt;/a&gt;, &lt;ahref="http://silverlight.net/"&gt;Silverlight&lt;/a&gt;, &lt;ahref="http://msdn.microsoft.com/en-us/visualc/default.aspx"&gt;VisualC++&lt;/a&gt;, &lt;a href="http://creators.xna.com/"&gt;XNA&lt;/a&gt;, &lt;ahref="http://expression.microsoft.com/"&gt;Expression Blend&lt;/a&gt;, &lt;ahref="http://www.microsoft.com/surface/"&gt;Surface&lt;/a&gt;, &lt;ahref="http://msdn.microsoft.com/en-us/windows/default.aspx"&gt;Windows7&lt;/a&gt;, &lt;ahref="http://msdn.microsoft.com/en-us/ff380145.aspx"&gt;WindowsPhone&lt;/a&gt;, Visual Studio, &lt;ahref="http://silverlight.net/riaservices/"&gt;WCF RIA Services&lt;/a&gt; andmore. Sometimes I even include a little jQuery and HTML5. If youhave something interesting you've done or have run across, or youblog regularly on the topics included here, please send me the URLand brief description via the &lt;a href="http://10rem.net/contact"&gt;contactlink&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Note that I've started breaking the Netduino, Electronics,Robotics, Synthesizer and similar content into a new roundup seriescalled the &lt;a href="http://10rem.net/blog?filterby=MakerRoundup"&gt;Maker GeekRoundup&lt;/a&gt;.&lt;/p&gt;&lt;h3&gt;Shout-Outs&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;ahref="http://blogs.msdn.com/b/visualstudio/archive/2012/01/04/give-us-your-feedback-on-visual-studio-11-and-receive-a-gift.aspx"&gt;Give us your feedback on Visual Studio 11 etc. and receive agift!&lt;/a&gt; (Visual Studio Blog)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Windows 8 and WinRT/Metro General&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;ahref="http://blogs.msdn.com/b/davedev/archive/2012/01/05/windows-8-first-apps-contest.aspx"&gt;Windows 8 - First Apps Contest&lt;/a&gt; (Dave Isbitski)&lt;/li&gt;&lt;li&gt;&lt;ahref="http://kellabyte.com/2011/12/19/when-metro-design-falls-off-the-tracks/"&gt;When Metro design falls off the tracks&lt;/a&gt; (Kelly Sommers)&lt;/li&gt;&lt;li&gt;&lt;ahref="http://www.sharpgis.net/post/2011/12/11/Make-your-Windows-8-Video-App-use-the-PlayTo-feature.aspx"&gt;SharpGIS | Make your Windows 8 Video App use the PlayTo feature&lt;/a&gt;(Morten Nielsen)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;XAML Technologies (Silverlight, WPF, WinRT Metro XAML)&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;ahref="http://www.andybeaulieu.com/Home/tabid/67/EntryID/223/Default.aspx"&gt;"Physamajig" for Windows 8&lt;/a&gt; (Andy Beaulieu)&lt;/li&gt;&lt;li&gt;&lt;ahref="http://www.sharpgis.net/post/2011/12/07/Building-an-Augmented-Reality-XAML-control.aspx"&gt;Building an Augmented Reality XAML control&lt;/a&gt; (MortenNielsen)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;WinJS / JavaScript and HTML Applications for Windows Metro&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;ahref="http://adamkinney.com/blog/2011/12/07/setting-up-your-first-use-of-the-animation-library-in-winjs/"&gt;Setting up your first use of the Animation library in WinJS&lt;/a&gt;(Adam Kinney)&lt;/li&gt;&lt;li&gt;&lt;ahref="http://adamkinney.com/blog/2011/12/05/no-alert-in-winjs-use-console-or-messagedialog-instead/"&gt;No Alert in WinJS! Use console or MessageDialog instead&lt;/a&gt; (AdamKinney)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Direct X Technologies (DirectX, XNA, WinRT DirectX, General GPUand Game Programming)&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;ahref="http://geekswithblogs.net/mikebmcl/archive/2011/12/31/getting-started-with-metro-style-directx.aspx"&gt;Getting started with Metro style DirectX&lt;/a&gt; (Bob TacoIndustries)&lt;/li&gt;&lt;li&gt;&lt;ahref="http://digitalerr0r.wordpress.com/2011/12/12/xna-4-0-shader-programming-1intro-to-hlsl-ambient-light/"&gt;XNA 4.0 Shader Programming #1-Intro to HLSL, Ambient light&lt;/a&gt;(digitalerr0r)&lt;/li&gt;&lt;li&gt;&lt;ahref="http://digitalerr0r.wordpress.com/2011/12/13/xna-4-0-shader-programming-2diffuse-light/"&gt;XNA 4.0 Shader Programming #2-Diffuse light&lt;/a&gt; (digitalerr0r)&lt;/li&gt;&lt;li&gt;&lt;ahref="http://digitalerr0r.wordpress.com/2011/12/20/xna-4-0-shader-programming-3specular-light/"&gt;XNA 4.0 Shader Programming #3-Specular light&lt;/a&gt;(digitalerr0r)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;C++ and Native Development&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;ahref="http://blogs.msdn.com/b/sdl/archive/2011/12/02/security.aspx"&gt;Compiler Security Enhancements in Visual Studio 11&lt;/a&gt; (SDLTeam)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Visual Studio and .NET General&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;ahref="http://blogs.msdn.com/b/somasegar/archive/2011/12/15/visual-studio-11-platform-tooling-advances.aspx"&gt;Visual Studio 11 Platform Tooling Advances&lt;/a&gt; (Soma)&lt;/li&gt;&lt;li style="list-style: none"&gt;&lt;ul&gt;&lt;li&gt;Good DirectX content in this one as well&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;ahref="http://blogs.msdn.com/b/delay/archive/2012/01/09/make-things-as-simple-as-possible-but-not-simpler-managedmsiexec-sample-app-shows-how-to-use-the-windows-installer-api-from-managed-code.aspx"&gt;ManagedMsiExec sample app shows how to use the Windows InstallerAPI from managed code&lt;/a&gt; (David Anson)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;NUI (Kinect, Surface, More)&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;ahref="http://kinecthacks.net/microsoft-kinect-coming-to-windows-on-february-1st-up-for-pre-order-now/"&gt;Microsoft Kinect coming to Windows on February 1st, up forpre-order now!&lt;/a&gt; (KinectHacks)&lt;/li&gt;&lt;li&gt;&lt;ahref="http://robrelyea.wordpress.com/2012/01/11/kinect-apps-ensuring-kinect-runtime-is-installed/"&gt;Kinect Apps - ensuring Kinect Runtime is installed&lt;/a&gt; (RobRelyea)&lt;/li&gt;&lt;li&gt;&lt;ahref="http://robrelyea.wordpress.com/2011/12/17/depth-api-improvements-in-v1/"&gt;Examples of depth API improvements coming in v1&lt;/a&gt; (RobRelyea)&lt;/li&gt;&lt;li&gt;&lt;ahref="http://channel9.msdn.com/coding4fun/kinect/Kinect--3D--Fusion4D"&gt;Kinect + 3D = Fusion4D&lt;/a&gt; (Greg Duncan)&lt;/li&gt;&lt;li&gt;&lt;ahref="http://channel9.msdn.com/coding4fun/blog/Connecting-your-Netduino-to-your-Kinect"&gt;Connecting your Netduino to your Kinect&lt;/a&gt; (Greg Duncan)&lt;/li&gt;&lt;li&gt;&lt;ahref="http://digitalerr0r.wordpress.com/2011/12/13/kinect-fundamentals-4-implementing-skeletal-tracking/"&gt;Kinect Fundamentals #4: Implementing Skeletal Tracking |digitalerr0r&lt;/a&gt; (digitalerr0r)&lt;/li&gt;&lt;li&gt;&lt;ahref="http://studentguru.gr/b/vangos/archive/2012/01/01/kinect-amp-html5-using-websockets-and-canvas.aspx"&gt;Kinect &amp;amp; HTML5 using WebSockets and Canvas&lt;/a&gt; (VangosPterneas)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Off-Topic Fun&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;ahref="http://poorlydrawnlines.com/comic/when-its-cold/"&gt;PoorlyDrawn Lines - When It's Cold&lt;/a&gt; (for all the ADD types)&lt;/li&gt;&lt;li&gt;&lt;a href="http://xkcd.com/1002/"&gt;xkcd: Game AIs&lt;/a&gt; (xkcd)&lt;/li&gt;&lt;li&gt;&lt;ahref="http://www.smbc-comics.com/index.php?db=comics&amp;amp;id=2470&amp;amp;"&gt;Benoit Mandelbrot: Master of seduction&lt;/a&gt; (SMBC)&lt;/li&gt;&lt;li style="list-style: none"&gt;&lt;ul&gt;&lt;li&gt;and &lt;ahref="http://www.smbc-comics.com/index.php?db=comics&amp;amp;id=2471&amp;amp;"&gt;Saturday Morning Breakfast Cereal&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;and &lt;ahref="http://www.smbc-comics.com/index.php?db=comics&amp;amp;id=2475&amp;amp;"&gt;Saturday Morning Breakfast Cereal&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;ahref="http://www.smbc-comics.com/index.php?db=comics&amp;amp;id=2478"&gt;Grammar!&lt;/a&gt;(SMBC)&lt;/li&gt;&lt;li&gt;&lt;ahref="http://moistproduction.blogspot.com/2011/12/lego-skeleton-cross-section-for-purists.html"&gt;Lego Skeleton inside Mini Figure (for the purists)&lt;/a&gt;(MoistProduction)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/lDP2LK_V1anwnVEl6L528mR-ty4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lDP2LK_V1anwnVEl6L528mR-ty4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/lDP2LK_V1anwnVEl6L528mR-ty4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lDP2LK_V1anwnVEl6L528mR-ty4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/PeteBrown-Silverlight/~4/PvD8YY82TMA" height="1" width="1"/&gt;</description>    </item>    <item>      <title>jsFiddle is Well Worth 3 Minutes</title>      <link>http://feeds.johnpapa.net/~r/JohnPapa/~3/7Wkyv829hlM/jsfiddle-is-well-worth-3-minutes</link>      <description>&lt;p&gt;If you do anything new today, take 3 minutes to get to know &lt;a href="http://jsfiddle.net"&gt;jsFiddle&lt;/a&gt;. Why? Because if you do any web development then you’ll benefit from using it. Why 3 minutes? Because that’s all it takes to to grok what it does, how it works, and to write your first “fiddle”.&amp;nbsp; If you have more than 3 minutes, I encourage you to read &lt;a href="http://visualstudiomagazine.com/articles/2012/01/10/easy-web-development-with-jsfiddle.aspx"&gt;my short post on jsFiddle in Papa’s Perspective&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Here is a quick sample:&lt;/p&gt;&lt;iframe style="width: 100%; height: 300px" src="http://jsfiddle.net/johnpapa/3jtQ7/embedded/" frameborder="0" allowfullscreen="allowfullscreen"&gt;&lt;/iframe&gt;&lt;div class="feedflare"&gt;&lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=7Wkyv829hlM:rEJnU9vMqKM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?i=7Wkyv829hlM:rEJnU9vMqKM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=7Wkyv829hlM:rEJnU9vMqKM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?i=7Wkyv829hlM:rEJnU9vMqKM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=7Wkyv829hlM:rEJnU9vMqKM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=7Wkyv829hlM:rEJnU9vMqKM:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JohnPapa/~4/7Wkyv829hlM" height="1" width="1"/&gt;</description>      <pubDate>Wed, 11 Jan 2012 03:10:14 GMT</pubDate>      <guid isPermaLink="false">http://johnpapa.net:80/jsfiddle-is-well-worth-3-minutes</guid>      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://johnpapa.net:80/jsfiddle-is-well-worth-3-minutes</origLink>    </item>    <item>      <link>http://feedproxy.google.com/~r/MarkMonster_Silverlight/~3/sthi0fUeYSw/wow-i-actually-couldnrsquot-write-javascript-what-i-wrote-smelledhellip</link>      <author xmlns="http://www.w3.org/2005/Atom">        <name>Mark Monster</name>      </author>      <category>.NET</category>      <category>ASP.NET MVC</category>      <category>JQuery</category>      <category>WinRT</category>      <category>Win8</category>      <category>HTML 5</category>      <category>JavaScript</category>      <title>Wow, I actually couldn&amp;rsquo;t write JavaScript, what I wrote smelled&amp;hellip;</title>      <description>&lt;p&gt;Alright, I’m not really a JavaScript developer, but do they even exists? I think there probably are a few JavaScript developers in this world, but most of the developers that I know of are developing for the Web. Developing for the Web in it’s widest sense. Most of the time there’s a server technology like ASP.NET, ASP.NET MVC, PHP or something else. A lot of times people actually feel like they are a WHATEVER-SERVER-TECHNOLOGY developer. I felt the same. &lt;/p&gt;  &lt;p&gt;But lately the client-side technologies become more and more important. Yes most web developers know a little bit of HTML, and if we’re lucky there’s some knowledge on CSS as well. Yeah we also write JavaScript. uh actually we write jQuery script. Yes we are lucky to have a library like jQuery, but in the end most of don’t know much about JavaScript at all. Yeah we write functions, sometimes. But that’s about it, we don’t write, maintainable, easy to read JavaScript code. Our JavaScript smells.&lt;/p&gt;  &lt;p&gt;And if we want to make use of the full HTML5 stack either for web or for example in a Windows 8 Metro application, our code needs to be maintainable. I can assure you, it’s not going to be 10 lines of JavaScript for a JavaScript Metro application.&lt;/p&gt;  &lt;h3&gt;To == or to ===?&lt;/h3&gt;  &lt;p&gt;&lt;img style="margin: 0px 5px 5px 0px; display: inline; float: left" align="left" src="http://akamaicovers.oreilly.com/images/9780596517748/cat.gif" /&gt;I know C# so I’m using the double equals to check if left and right are equal. WRONG! I really need to admit I didn’t know I was wrong until a few months ago. So chances are some of you, my readers, don’t know it either. To quote &lt;a href="http://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockford/dp/0596517742/" target="_blank"&gt;Douglas Crockford’s book on JavaScript&lt;/a&gt;:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;JavaScript has two sets of equality operators: === and !==, and their evil twins == and !=. The good ones work the way you would expect. If the two operands are of the same type and have the same value, then === produces true and !== produces false. The evil twins do the right thing when the operands are of the same type, but if they are of different types, they attempt to coerce the values. the rules by which they do that are complicated and unmemorable.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;So from now on I will be using triple-equals instead of double-equals. &lt;/p&gt;  &lt;p&gt;Of course there’s a lot more in The Good Parts book, I can recommend you buying it.&lt;/p&gt;  &lt;h3&gt;Object Oriented Programming uh Closures&lt;/h3&gt;  &lt;p&gt;Most of the JavaScript code I write are just functions, and functions might call other functions, some anonymous some named. The end result is either a large amount of functions, are just a couple of functions with more than 100 lines of code. &lt;/p&gt;  &lt;p&gt;Is this maintainable? Hell no!&lt;/p&gt;  &lt;p&gt;So why don’t I write code in JavaScript like I do in C#? Uh is that possible at all? I recall everybody telling me JavaScript is not an object oriented language. I still have to agree JavaScript doesn’t have all of the object oriented language characteristics to call&amp;#160; it a fully object oriented language. But still. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.w3schools.com/js/js_objects.asp" target="_blank"&gt;JavaScript objects can be created in different ways&lt;/a&gt;, but you’ll have to know a little bit more about some of the JavaScript language features to be able to get things working like you expect.&lt;/p&gt;  &lt;p&gt;Some things were completely new to me like Closures: &lt;a href="http://blog.morrisjohns.com/javascript_closures_for_dummies.html" target="_blank"&gt;JavaScript Closures for Dummies&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Take some time to get to know the above JavaScript features.&lt;/p&gt;  &lt;p&gt;With the above concepts you can learn a little bit about JavaScript patterns, which help you when you want to write your own JavaScript library.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://weblogs.asp.net/dwahlin/archive/2011/08/01/techniques-strategies-and-patterns-for-structuring-javascript-code-the-prototype-pattern.aspx" target="_blank"&gt;Prototype Pattern&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depth" target="_blank"&gt;Module Pattern&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://weblogs.asp.net/dwahlin/archive/2011/08/02/techniques-strategies-and-patterns-for-structuring-javascript-code-revealing-module-pattern.aspx" target="_blank"&gt;Revealing Module Pattern&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://weblogs.asp.net/dwahlin/archive/2011/08/03/techniques-strategies-and-patterns-for-structuring-javascript-code-revealing-prototype-pattern.aspx" target="_blank"&gt;Revealing Prototype Pattern&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Really interesting articles that can help, but if you need more, you should definitely take a look at &lt;a href="http://www.pluralsight-training.net/microsoft/Courses/TableOfContents?courseName=structuring-javascript" target="_blank"&gt;the pluralsight course for Structuring JavaScript Code&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;PS. Don’t feel hurt, there are exceptions to what I write here. Actually if there weren’t good JavaScript devs out there the rest of the world, like me, couldn’t learn from their expertise.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MarkMonster_Silverlight/~4/sthi0fUeYSw" height="1" width="1"/&gt;</description>      <pubDate>Tue, 10 Jan 2012 21:47:38 +0100</pubDate>      <updated xmlns="http://www.w3.org/2005/Atom">2012-01-10T21:47:38+01:00</updated>      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://mark.mymonster.nl/2012/01/10/wow-i-actually-couldnrsquot-write-javascript-what-i-wrote-smelledhellip</origLink>    </item>    <item>      <title>Threading Considerations for Binding and Change Notification in Silverlight 5</title>      <author>Pete Brown	</author>      <link>http://10rem.net/blog/2012/01/10/threading-considerations-for-binding-and-change-notification-in-silverlight-5</link>      <pubDate>Tue, 10 Jan 2012 16:48:00 GMT</pubDate>      <guid>http://10rem.net/blog/2012/01/10/threading-considerations-for-binding-and-change-notification-in-silverlight-5</guid>      <description>&lt;p&gt;A reader of &lt;a href="http://manning.com/pbrown2"target="_blank"&gt;my Silverlight 5 book&lt;/a&gt; recently reached out tome about threading and why I create some objects on the UI threadin the examples. We discussed some of the reasons, but I felt thiswould be a good topic to share with everyone. In fact, this is onearea where it would have been fun to go into great detail in mybook, but there simply wasn't the space. Threading and cross-threadexceptions can be a bit of a mystery to new Silverlight and WPFdevelopers.&lt;/p&gt;&lt;h3&gt;Background&lt;/h3&gt;&lt;p&gt;The user interface in Silverlight runs on a thread commonlyknown as the UI Thread. Any code you create in the code-behind, andany code it calls all the way down the chain, unless it explicitlycreates another thread, runs on this same UI thread. It's not atall uncommon to see Silverlight and WPF applications which neverexplicitly create a second thread, but do make calls to otherservices which create background threads for processing.&lt;/p&gt;&lt;p&gt;There are many other examples, but networking is one place wherethe Silverlight .NET Framework explicitly creates (or uses)different threads. Not all calls return on the UI thread.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Threads other than the UI thread are not allowed toaccess or manipulate UI objects&lt;/strong&gt;. If they attempt to do so,the runtime throws an Invalid Cross-Thread Access exception. Itlooks like this:&lt;/p&gt;&lt;p&gt;&lt;ahref="http://10rem.net/media/82267/Windows-Live-Writer_Threading-Considerations-for-Binding-in-_EF97_image_2.png" target="_blank"&gt;&lt;img src="http://10rem.net/media/82272/Windows-Live-Writer_Threading-Considerations-for-Binding-in-_EF97_image_thumb.png" width="477" height="277" alt="image" border="0" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;But wait! I wasn't accessing any UI objects from my code. Whatgives?&lt;/p&gt;&lt;p&gt;It's not always obvious that you're interacting with UI objectson the UI thread, though. Here's the stack trace from thisparticular exception:&lt;/p&gt;&lt;pre class="brush: csharp; highlight: [2];"&gt;{System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---&amp;gt;&lt;br /&gt;  System.UnauthorizedAccessException: Invalid cross-thread access.&lt;br /&gt;   at MS.Internal.XcpImports.CheckThread()&lt;br /&gt;   at MS.Internal.XcpImports.GetValue(IManagedPeerBase managedPeer, DependencyProperty property)&lt;br /&gt;   at System.Windows.DependencyObject.GetOldValue(DependencyProperty property, EffectiveValueEntry&amp;amp; oldEntry)&lt;br /&gt;   at System.Windows.DependencyObject.UpdateEffectiveValue(DependencyProperty property, EffectiveValueEntry oldEntry, EffectiveValueEntry&amp;amp; newEntry, ValueOperation operation)&lt;br /&gt;   at System.Windows.DependencyObject.RefreshExpression(DependencyProperty dp)&lt;br /&gt;   at System.Windows.Data.BindingExpression.SendDataToTarget()&lt;br /&gt;   at System.Windows.Data.BindingExpression.SourcePropertyChanged(PropertyPathListener sender, PropertyPathChangedEventArgs args)&lt;br /&gt;   at System.Windows.PropertyPathListener.ReconnectPath()&lt;br /&gt;   at System.Windows.Data.Debugging.BindingBreakPoint.&amp;lt;&amp;gt;c__DisplayClass4.&amp;lt;BreakOnSharedType&amp;gt;b__3()&lt;br /&gt;   --- End of inner exception stack trace ---&lt;br /&gt;   at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)&lt;br /&gt;   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)&lt;br /&gt;   at System.Delegate.DynamicInvokeImpl(Object[] args)&lt;br /&gt;   at System.Delegate.DynamicInvoke(Object[] args)&lt;br /&gt;   at MainPagexaml.BindingOperation(Object BindingState, Int32 , Action )}&lt;/pre&gt;&lt;p&gt;This stack trace was generated by &lt;strong&gt;trying to raise aPropertyChangedNotification when I manipulated a model object froma background thread&lt;/strong&gt;. So, it was obvious that I was workingwith an object on the background thread, but it wasn't obvious thatI'd get a cross-thread exception (well it was in this case, as Icontrived the example). If you consider a larger application whereyou have division of ownership for different pieces, a client-sidedeveloper may simply work with your viewmodel, but not realizeyou're farming some work out to another thread.&lt;/p&gt;&lt;p&gt;I wrote a blog post back in 2010 ( &lt;ahref="http://10rem.net/blog/2010/04/23/essential-silverlight-and-wpf-skills-the-ui-thread-dispatchers-background-workers-and-async-network-programming"&gt;Essential Silverlight and WPF Skills: The UI Thread, Dispatchers,Background Workers and Async Network Programming&lt;/a&gt;) explainingsome of the ways to work with threads and dispatching. I didn'thave SynchronizationContext in there at the time, but it'ssomething I tend to use a lot these days.&lt;/p&gt;&lt;p&gt;Let's take a look at a few of the common scenarios and how itworks with threading.&lt;/p&gt;&lt;h3&gt;Common Scenarios&lt;/h3&gt;&lt;p&gt;All of these scenarios make use of a simple Customer class witha single property:&lt;/p&gt;&lt;pre class="brush: csharp;"&gt;namespace SilverlightThreadingExample.Model&lt;br /&gt;{&lt;br /&gt;    public class Customer : Observable&lt;br /&gt;    {&lt;br /&gt;        private string _firstName;&lt;br /&gt;        public string FirstName&lt;br /&gt;        {&lt;br /&gt;            get { return _firstName; }&lt;br /&gt;            set { _firstName = value; NotifyPropertyChanged("FirstName"); }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;p&gt;The customer is &lt;em&gt;observable&lt;/em&gt; that is, it notifies anylisteners when properties change. While not necessary, Iencapsulated the observable code in this base class. You could,instead, put the implementation in a partial class if you wanted tomake sure your model object's signature from your ORM or whateverremains the same as it was on the server.&lt;/p&gt;&lt;pre class="brush: csharp;"&gt;using System.ComponentModel;&lt;br /&gt;&lt;br /&gt;namespace SilverlightThreadingExample&lt;br /&gt;{&lt;br /&gt;    public class Observable : INotifyPropertyChanged&lt;br /&gt;    {&lt;br /&gt;        public event PropertyChangedEventHandler PropertyChanged;&lt;br /&gt;&lt;br /&gt;        protected void NotifyPropertyChanged(string propertyName)&lt;br /&gt;        {&lt;br /&gt;            if (PropertyChanged != null)&lt;br /&gt;                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;p&gt;This is actually a pretty typical approach to handlingINotifyPropertyChanged. There are even more robust versions outthere which use lambdas and reflection to help avoid passing instrings, but they ultimately come down to raising thePropertyChanged event. Many of them also fail to work properly incross-thread situations.&lt;/p&gt;&lt;p&gt;I expose the Customer class and a collection of customers from aViewModel class.&lt;/p&gt;&lt;pre class="brush: csharp;"&gt;namespace SilverlightThreadingExample.ViewModel&lt;br /&gt;{&lt;br /&gt;    public class CustomerEntryViewModel : Observable&lt;br /&gt;    {&lt;br /&gt;        private Customer _currentCustomer;&lt;br /&gt;        public Customer CurrentCustomer&lt;br /&gt;        {&lt;br /&gt;            get { return _currentCustomer; }&lt;br /&gt;            set { _currentCustomer = value; NotifyPropertyChanged("CurrentCustomer"); }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        private ObservableCollection&amp;lt;Customer&amp;gt; _customers = new ObservableCollection&amp;lt;Customer&amp;gt;();&lt;br /&gt;        public ObservableCollection&amp;lt;Customer&amp;gt; Customers&lt;br /&gt;        {&lt;br /&gt;            get { return _customers; }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public void LoadCustomersOnSameThread()&lt;br /&gt;        {&lt;br /&gt;            LoadDummyData();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        private void LoadDummyData()&lt;br /&gt;        {&lt;br /&gt;            _customers.Add(new Customer() { FirstName = "Pete" });&lt;br /&gt;            _customers.Add(new Customer() { FirstName = "Jon" });&lt;br /&gt;            _customers.Add(new Customer() { FirstName = "Tim" });&lt;br /&gt;            _customers.Add(new Customer() { FirstName = "Scott" });&lt;br /&gt;            _customers.Add(new Customer() { FirstName = "Andy" });&lt;br /&gt;            _customers.Add(new Customer() { FirstName = "Blaine" });&lt;br /&gt;            _customers.Add(new Customer() { FirstName = "Jesse" });&lt;br /&gt;            _customers.Add(new Customer() { FirstName = "Rey" });&lt;br /&gt;&lt;br /&gt;            _currentCustomer = _customers[0];&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;p&gt;Finally, the UI is bound to those classes. The DataContext forthe UI (which will be set in code-behind) is the ViewModel.&lt;/p&gt;&lt;pre class="brush: xml;"&gt;&amp;lt;UserControl x:Class="SilverlightThreadingExample.MainPage"&lt;br /&gt;    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&lt;br /&gt;    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"&lt;br /&gt;    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"&lt;br /&gt;    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"&lt;br /&gt;    mc:Ignorable="d"&lt;br /&gt;    d:DesignHeight="400" d:DesignWidth="600"&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;Grid x:Name="LayoutRoot" Background="White"&amp;gt;&lt;br /&gt;        &amp;lt;Grid Width="500"&amp;gt;&lt;br /&gt;            &amp;lt;Grid.ColumnDefinitions&amp;gt;&lt;br /&gt;                &amp;lt;ColumnDefinition Width="*" /&amp;gt;&lt;br /&gt;                &amp;lt;ColumnDefinition Width="250" /&amp;gt;&lt;br /&gt;            &amp;lt;/Grid.ColumnDefinitions&amp;gt;&lt;br /&gt;&lt;br /&gt;            &amp;lt;ListBox x:Name="CustomerList"&lt;br /&gt;                     Grid.Column="0" Margin="10"&lt;br /&gt;                     ItemsSource="{Binding Customers}"&lt;br /&gt;                     SelectedItem="{Binding CurrentCustomer, Mode=TwoWay}"&amp;gt;&lt;br /&gt;                &amp;lt;ListBox.ItemTemplate&amp;gt;&lt;br /&gt;                    &amp;lt;DataTemplate&amp;gt;&lt;br /&gt;                        &amp;lt;TextBlock Text="{Binding FirstName}" /&amp;gt;&lt;br /&gt;                    &amp;lt;/DataTemplate&amp;gt;&lt;br /&gt;                &amp;lt;/ListBox.ItemTemplate&amp;gt;&lt;br /&gt;            &amp;lt;/ListBox&amp;gt;&lt;br /&gt;&lt;br /&gt;            &amp;lt;StackPanel Grid.Column="1"&amp;gt;&lt;br /&gt;                &amp;lt;TextBox x:Name="FirstNameField" Margin="10"&lt;br /&gt;                         DataContext="{Binding CurrentCustomer}"&lt;br /&gt;                         Text="{Binding FirstName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" /&amp;gt;&lt;br /&gt;&lt;br /&gt;                &amp;lt;Button x:Name="AddCustomer"&lt;br /&gt;                        Content="Add Customer from UI Thread"&lt;br /&gt;                        Height="30" Margin="5"&lt;br /&gt;                        Click="AddCustomer_Click" /&amp;gt;&lt;br /&gt;                &amp;lt;Button x:Name="AddCustomerSecond"&lt;br /&gt;                        Content="Add Customer from Second Thread"&lt;br /&gt;                        Height="30" Margin="5"&lt;br /&gt;                        Click="AddCustomerSecond_Click" /&amp;gt;&lt;br /&gt;                &amp;lt;Button x:Name="ChangeNameFromSecondThread"&lt;br /&gt;                        Content="Change Name from Second Thread"&lt;br /&gt;                        Height="30" Margin="5"&lt;br /&gt;                        Click="ChangeNameFromSecondThread_Click" /&amp;gt;&lt;br /&gt;            &amp;lt;/StackPanel&amp;gt;&lt;br /&gt;&lt;br /&gt;        &amp;lt;/Grid&amp;gt;&lt;br /&gt;   &lt;br /&gt;    &amp;lt;/Grid&amp;gt;&lt;br /&gt;&amp;lt;/UserControl&amp;gt;&lt;/pre&gt;&lt;p&gt;The code-behind looks like this&lt;/p&gt;&lt;pre class="brush: csharp;"&gt;using System.Windows;&lt;br /&gt;using System.Windows.Controls;&lt;br /&gt;using SilverlightThreadingExample.ViewModel;&lt;br /&gt;using System.Threading;&lt;br /&gt;using SilverlightThreadingExample.Model;&lt;br /&gt;&lt;br /&gt;namespace SilverlightThreadingExample&lt;br /&gt;{&lt;br /&gt;    public partial class MainPage : UserControl&lt;br /&gt;    {&lt;br /&gt;        CustomerEntryViewModel _vm;&lt;br /&gt;&lt;br /&gt;        public MainPage()&lt;br /&gt;        {&lt;br /&gt;            InitializeComponent();&lt;br /&gt;&lt;br /&gt;            CreateViewModelOnUIThread();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        private void CreateViewModelOnUIThread()&lt;br /&gt;        {&lt;br /&gt;            _vm = new CustomerEntryViewModel();&lt;br /&gt;&lt;br /&gt;            _vm.LoadCustomersOnSameThread();&lt;br /&gt;&lt;br /&gt;            DataContext = _vm;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        private void AddCustomer_Click(object sender, RoutedEventArgs e)&lt;br /&gt;        {&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        private void AddCustomerSecond_Click(object sender, RoutedEventArgs e)&lt;br /&gt;        {&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        private void ChangeNameFromSecondThread_Click(object sender, RoutedEventArgs e)&lt;br /&gt;        {&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;The methods are named to keep the context clear in this example.I wouldn't expect you to name your VM instantiation/locator method"CreateViewModelOnUIThread", for example.&lt;/p&gt;&lt;p&gt;Now let's look at those scenarios.&lt;/p&gt;&lt;h4&gt;Changing a property value from a background thread&lt;/h4&gt;&lt;p&gt;Often in an application, you have a class which is used in UIbinding (an entity/model object) but still need to modify aproperty from code. Sometimes, you need to do that from abackground thread. For example, you make a network call to get anupdated price for an item. You will get a cross-thread access errorwhen the class raises change notification events from that propertysetter. If the class is truly POCO (Plan Old CLR Object) anddoesn't do any change notification or other event raising, you'llbe fine. If, however, change notification is involved, you'll getthe cross-thread exception.&lt;/p&gt;&lt;p&gt;&lt;img src="http://10rem.net/media/82277/Windows-Live-Writer_Threading-Considerations-for-Binding-in-_EF97_image_13.png" width="640" height="261" alt="image" border="0" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px"/&gt;&lt;/p&gt;&lt;p&gt;Assuming the same Customer and Observable classes defined above,and the same XAML UI, the following code in the code-behind willthrow that exception.&lt;/p&gt;&lt;pre class="brush: csharp;"&gt;private void ChangeNameFromSecondThread_Click(object sender, RoutedEventArgs e)&lt;br /&gt;{&lt;br /&gt;    Thread t = new Thread((o) =&amp;gt;&lt;br /&gt;        {&lt;br /&gt;            _vm.CurrentCustomer.FirstName = "UpdatedFromSecondThread";&lt;br /&gt;        });&lt;br /&gt;&lt;br /&gt;    t.Start();&lt;br /&gt;}&lt;/pre&gt;&lt;p&gt;The exception doesn't happen when you set the property value;that's perfectly acceptable. It happens here, at the highlightedline:&lt;/p&gt;&lt;pre class="brush: csharp; highlight: [4];"&gt;protected void NotifyPropertyChanged(string propertyName)&lt;br /&gt;{&lt;br /&gt;    if (PropertyChanged != null)&lt;br /&gt;        PropertyChanged(this, new PropertyChangedEventArgs(propertyName));&lt;br /&gt;}&lt;/pre&gt;&lt;p&gt;So, what are the options for working around this? Let's considertwo common approaches.&lt;/p&gt;&lt;h5&gt;Approach 1&lt;/h5&gt;&lt;p&gt;The first approach is to do the whole property change from theUI thread. To do this, simply wrap the property set code with acall to the dispatcher. You can use either the Dispatcher object,or if you keep a copy of the SynchronizationContext around, usethat.&lt;/p&gt;&lt;p&gt;&lt;img src="http://10rem.net/media/82282/Windows-Live-Writer_Threading-Considerations-for-Binding-in-_EF97_image_22.png" width="640" height="261" alt="image" border="0" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px"/&gt;&lt;/p&gt;&lt;p&gt;Here's some example code which implements this. The code looks abit silly because I'm forcing a background thread. However, pretendthat the background thread is a given and you need to work from it(again, the callback from a network call or something.)&lt;/p&gt;&lt;pre class="brush: csharp;"&gt;private void ChangeNameFromSecondThread_Click(object sender, RoutedEventArgs e)&lt;br /&gt;{&lt;br /&gt;    Thread t = new Thread((o) =&amp;gt;&lt;br /&gt;    {&lt;br /&gt;        Deployment.Current.Dispatcher.BeginInvoke(() =&amp;gt;&lt;br /&gt;            {&lt;br /&gt;                _vm.CurrentCustomer.FirstName = "UpdatedFromSecondThread";&lt;br /&gt;            });&lt;br /&gt;    });&lt;br /&gt;&lt;br /&gt;    t.Start();&lt;br /&gt;}&lt;/pre&gt;&lt;p&gt;This approach works well, but requires the calling code tohandle all the dispatching. If you have a number of properties tochange in different bits of code, it gets a bit cumbersome. Let'slook at another approach.&lt;/p&gt;&lt;h5&gt;Approach 2&lt;/h5&gt;&lt;p&gt;The real problem is the property change notification, so the thesecond approach is to dispatch just the change notification to theUI thread.&lt;/p&gt;&lt;p&gt;&lt;ahref="http://10rem.net/media/82287/Windows-Live-Writer_Threading-Considerations-for-Binding-in-_EF97_image_24.png" target="_blank"&gt;&lt;img src="http://10rem.net/media/82292/Windows-Live-Writer_Threading-Considerations-for-Binding-in-_EF97_image_thumb_8.png" width="640" height="261" alt="image" border="0" style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;You can put this code into the Observable base class in order toavoid repeating it throughout all your classes.&lt;/p&gt;&lt;pre class="brush: csharp;"&gt;// Code-behind&lt;br /&gt;// ----------------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;// this version throws an exception if the Observable base class isn't doing thread checking&lt;br /&gt;private void ChangeNameFromSecondThread_Click(object sender, RoutedEventArgs e)&lt;br /&gt;{&lt;br /&gt;    Thread t = new Thread((o) =&amp;gt;&lt;br /&gt;        {&lt;br /&gt;            _vm.CurrentCustomer.FirstName = "UpdatedFromSecondThread";&lt;br /&gt;        });&lt;br /&gt;&lt;br /&gt;    t.Start();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;// Observable&lt;br /&gt;// ----------------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;using System.ComponentModel;&lt;br /&gt;using System.Windows;&lt;br /&gt;&lt;br /&gt;namespace SilverlightThreadingExample&lt;br /&gt;{&lt;br /&gt;    public class Observable : INotifyPropertyChanged&lt;br /&gt;    {&lt;br /&gt;        public event PropertyChangedEventHandler PropertyChanged;&lt;br /&gt;&lt;br /&gt;        protected void NotifyPropertyChanged(string propertyName)&lt;br /&gt;        {&lt;br /&gt;            if (PropertyChanged != null)&lt;br /&gt;            {&lt;br /&gt;                if (Deployment.Current.Dispatcher.CheckAccess())&lt;br /&gt;                {&lt;br /&gt;                    PropertyChanged(this, new PropertyChangedEventArgs(propertyName));&lt;br /&gt;                }&lt;br /&gt;                else&lt;br /&gt;                {&lt;br /&gt;                    Deployment.Current.Dispatcher.BeginInvoke(() =&amp;gt;&lt;br /&gt;                    {&lt;br /&gt;                        PropertyChanged(this, new PropertyChangedEventArgs(propertyName));&lt;br /&gt;                    });&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;p&gt;Note how I first check to see if we have access to the UI threadusing the CheckAccess call. If we do, there's no reason to incurthe overhead and delay of a dispatcher call. However, if we arerunning on the background thread, then the call is dispatched tothe UI thread. In either case, we avoid the errors cause bycross-thread property change notification.&lt;/p&gt;&lt;p&gt;Next up: Collections&lt;/p&gt;&lt;h4&gt;Populating an ObservableCollection from a networking returncall&lt;/h4&gt;&lt;p&gt;A more robust Observable base class like this won't help withcollection change notification (WPF 4.5 has a great solution forthat using BindingOperations.EnableCollectionSynchronization, butunfortunately Silverlight does not).&lt;/p&gt;&lt;p&gt;Most applications make networking calls to get information fromsome resource on an intranet or out on the web. In Silverlight (andWPF), it's common practice to populate an ObservableCollection withthe results from those calls. The ObservableCollection class isnice because it implements INotifyCollectionChanged and raises anevent whenever items are added to or deleted from the collection,or when the collection is cleared. It's this notification thatenables the various items controls and grids in the UI to stay insync with the items in the collection.&lt;/p&gt;&lt;p&gt;&lt;img src="http://10rem.net/media/82297/Windows-Live-Writer_Threading-Considerations-for-Binding-in-_EF97_image_16.png" width="640" height="261" alt="image" border="0" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px"/&gt;&lt;/p&gt;&lt;p&gt;This version is very similar to what we saw with individualproperties earlier. That's because, it's really the same problem:we're trying to notify the binding system across threads.&lt;/p&gt;&lt;pre class="brush: csharp;"&gt;private void AddCustomerSecond_Click(object sender, RoutedEventArgs e)&lt;br /&gt;{&lt;br /&gt;    Thread t = new Thread((o) =&amp;gt;&lt;br /&gt;    {&lt;br /&gt;        var cust = new Customer() { FirstName = "AddedFromSecondThread" };&lt;br /&gt;        _vm.Customers.Add(cust);&lt;br /&gt;    });&lt;br /&gt;&lt;br /&gt;    t.Start();&lt;br /&gt;}&lt;/pre&gt;&lt;p&gt;Note that the problem exists regardless of where you actuallycreate the customer. For example, this code will also fail:&lt;/p&gt;&lt;pre class="brush: csharp;"&gt;private void AddCustomerSecond_Click(object sender, RoutedEventArgs e)&lt;br /&gt;{&lt;br /&gt;    var cust = new Customer() { FirstName = "AddedFromSecondThread" };&lt;br /&gt;&lt;br /&gt;    Thread t = new Thread((o) =&amp;gt;&lt;br /&gt;    {&lt;br /&gt;        _vm.Customers.Add(cust);&lt;br /&gt;    });&lt;br /&gt;&lt;br /&gt;    t.Start();&lt;br /&gt;}&lt;/pre&gt;&lt;p&gt;The reason is, again, it's not the object access that is causingthe cross-thread exception, it's the collection changednotification that's full of hate here.&lt;/p&gt;&lt;p&gt;So, how do you get around this? Unless you want to create yourown ObservableCollection type class for Silverlight, you'll need todispatch all collection add calls. Luckily, you'll typically havefewer of these scattered throughout the application, so it's notquite so onerous.&lt;/p&gt;&lt;p&gt;&lt;img src="http://10rem.net/media/82302/Windows-Live-Writer_Threading-Considerations-for-Binding-in-_EF97_image_27.png" width="640" height="261" alt="image" border="0" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px"/&gt;&lt;/p&gt;&lt;p&gt;The code to implement this is just another easy call to thedispatcher (or SynchronizationContext, if you prefer).&lt;/p&gt;&lt;pre class="brush: csharp;"&gt;private void AddCustomerSecond_Click(object sender, RoutedEventArgs e)&lt;br /&gt;{&lt;br /&gt;    // you can create customer on any thread&lt;br /&gt;    var cust = new Customer() { FirstName = "AddedFromSecondThread" };&lt;br /&gt;&lt;br /&gt;    Thread t = new Thread((o) =&amp;gt;&lt;br /&gt;        {&lt;br /&gt;&lt;br /&gt;            // dispatch to UI thread to add it to the collection. You can't&lt;br /&gt;            // access the observable collection x-thread&lt;br /&gt;            Deployment.Current.Dispatcher.BeginInvoke(() =&amp;gt;&lt;br /&gt;                {&lt;br /&gt;                    _vm.Customers.Add(cust);&lt;br /&gt;                });&lt;br /&gt;        });&lt;br /&gt;&lt;br /&gt;    t.Start();&lt;br /&gt;}&lt;/pre&gt;&lt;p&gt;If you're going to run from an unknown state, be sure to callCheckAccess to see if you really need to do the dispatching. Inthis case, I know I'm always going to be on a background thread, soI don't bother.&lt;/p&gt;&lt;h3&gt;Summary&lt;/h3&gt;&lt;p&gt;The intent here was to show a few of the common threadingpitfalls in Silverlight (and WPF) applications, specifically in thecontext of change notification. In most code, it's easy to tellwhen you're accessing objects cross-thread, but change notificationis a somewhat behind the scenes operation, so it's not alwaysobvious.&lt;/p&gt;&lt;p&gt;For property change notification, the solutions were:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Dispatch the entire property change operation to the UIthread&lt;/li&gt;&lt;li&gt;Update the NotifyPropertyChanged code to check to see whichthread it's running on, and then dispatch the event asappropriate&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Either way works, but I prefer the update to theNotifyPropertyChanged method.&lt;/p&gt;&lt;p&gt;For collection change notifications in Silverlight, thesolutions are:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Create (or find) an implementation of ObservableCollectionwhich does the cross-thread checking. The reason this isn'tbuilt-in is change notification happens often, and dispatching eachand every change notification can be a real performance drain.That's also why WPF has a separate and optimized solution. You'dneed to enable batching to avoid the overhead of hundreds ofdispatch calls.&lt;/li&gt;&lt;li&gt;Dispatch the entire collection update when you're running on abackground thread.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;In contrast to the property change notifications, for collectionchange, I prefer to dispatch the entire call. If you're adding 1object or 100, you'll still get only one dispatch call, soperformance is better.&lt;/p&gt;&lt;p&gt;The Task Parallel Library in WPF, and the subset of it inSilverlight also offer some alternative approaches to handlingcross-thread work. Similarly, the async and await keywords in .NET4.5 and Windows 8 XAML can also come into play. More on those inthe future.&lt;/p&gt;&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/fNpx-ibznhybKF2eEgX79WjYDaE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fNpx-ibznhybKF2eEgX79WjYDaE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/fNpx-ibznhybKF2eEgX79WjYDaE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fNpx-ibznhybKF2eEgX79WjYDaE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/PeteBrown-Silverlight/~4/mPgdkOol8xE" height="1" width="1"/&gt;</description>    </item>    <item>      <title>Silverlight Reporting Open Source Printing/Reports Example Updated for Silverlight 5</title>      <author>Pete Brown	</author>      <link>http://10rem.net/blog/2012/01/09/silverlight-reporting-open-source-printing-reports-example-updated-for-silverlight-5</link>      <pubDate>Mon, 09 Jan 2012 20:44:30 GMT</pubDate>      <guid>http://10rem.net/blog/2012/01/09/silverlight-reporting-open-source-printing-reports-example-updated-for-silverlight-5</guid>      <description>&lt;p&gt;I recently posted an updated version of Silverlight reporting on&lt;a href="http://silverlightreporting.codeplex.com/"target="_blank"&gt;codeplex&lt;/a&gt;. Here's the overview.&lt;/p&gt;&lt;p&gt;&lt;a href="http://silverlightreporting.codeplex.com/"target="_blank"&gt;&lt;img src="http://10rem.net/media/82245/Windows-Live-Writer_Silverlight-Reporting-Open-Source-Printi_EA02_image_5.png" width="490" height="100" alt="image" border="0" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;This project, a unofficial project by Pete Brown of Microsoft,provides a a very basic framework for building simple, short,multi-page reports using Silverlight 5.&lt;/p&gt;&lt;p&gt;The intent is not to be an all-encompassing reporting solution,or a solution for large reports. Instead, this is a set of code youcan build upon to create short (2-5 page) reports from yourSilverlight applications.&lt;/p&gt;&lt;p&gt;Currently the sample consists of the full source code of asimple report writer. It includes:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;automatic pagination&lt;/li&gt;&lt;li&gt;support for line items of varying height&lt;/li&gt;&lt;li&gt;total page count&lt;/li&gt;&lt;li&gt;templating&lt;/li&gt;&lt;li&gt;page headers and footers&lt;/li&gt;&lt;li&gt;report footer with support for calculated fields&lt;/li&gt;&lt;li&gt;events to allow hooking into printing at various stages&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Latest Release&lt;/h3&gt;&lt;p&gt;Version information changed to use semantic versioning. Thisvesion is numbered: &lt;ahref="http://silverlightreporting.codeplex.com/releases/view/80092"target="_blank"&gt;1.0.0-alpha.3&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Now targets Silverlight 5&lt;/li&gt;&lt;li&gt;Added ability to specify postscript (vector) printing. Theselected driver must support PostScript or this setting will haveno effect.&lt;/li&gt;&lt;li&gt;Fixed issue with not being able to re-print the report. (andfixed leaky event handlers)&lt;/li&gt;&lt;li&gt;Added null check on templates&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href="http://silverlightreporting.codeplex.com/"target="_blank"&gt;&lt;img src="http://10rem.net/media/82250/Windows-Live-Writer_Silverlight-Reporting-Open-Source-Printi_EA02_image_6.png" width="366" height="468" alt="image" border="0" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;This is still alpha, and is a minor project. Expect bugs. Reportthem when you do. Offer fixes if you can :)&lt;/p&gt;&lt;p&gt;&lt;ahref="http://silverlightreporting.codeplex.com/releases/view/80092"target="_blank"&gt;Get the latest release here&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ltWkyhytsE8DRleqvgYuDsugFjk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ltWkyhytsE8DRleqvgYuDsugFjk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ltWkyhytsE8DRleqvgYuDsugFjk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ltWkyhytsE8DRleqvgYuDsugFjk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/PeteBrown-Silverlight/~4/9lvuBR5MsTc" height="1" width="1"/&gt;</description>    </item>    <item>      <title>Windows Phone 7.5 - Using advanced tiles API</title>      <description>&lt;table width="20"&gt;    &lt;tbody&gt;        &lt;tr&gt;            &lt;td&gt;            &lt;div class="fb-like" data-show-faces="true" data-send="false" data-href="http://www.silverlightshow.net/items/Windows-Phone-7.5-Using-advanced-tiles-API.aspx" data-font="segoe ui" data-layout="button_count"&gt;&lt;/div&gt;            &lt;/td&gt;            &lt;td&gt;&lt;a href="https://twitter.com/share" class="twitter-share-button" data-via="silverlightshow" data-counturl="http://www.silverlightshow.net/items/Windows-Phone-7.5-Using-advanced-tiles-API.aspx" data-count="horizontal" data-text="Reading the article 'Windows Phone 7.5 - Using advanced tiles API' by @aboschin #wpdev" data-url="http://slshow.net/zYx7bj"&gt;Tweet&lt;/a&gt;&lt;/td&gt;            &lt;td&gt;&lt;g:plusone size="medium" href="http://www.silverlightshow.net/items/Windows-Phone-7.5-Using-advanced-tiles-API.aspx"&gt;&lt;/g:plusone&gt;            &lt;/td&gt;            &lt;td&gt;            &lt;/td&gt;        &lt;/tr&gt;    &lt;/tbody&gt;&lt;/table&gt;&lt;p style="text-align: justify;"&gt;There is not any doubt, the first thing you meet when you use Windows Phone are the tiles. These are the large squares on the home screen that identifies some applications and they are also a distinguishable character that make your Windows Phone unique. &lt;/p&gt;&lt;div style="border:1px solid #dddddd;border-image: initial; padding-bottom: 5px; background-color: #f3f3f3; margin-top: 5px; padding-left: 10px; width: 200px; float: right; margin-left: 10px; padding-top: 5px;"&gt;&lt;h3&gt;Don't miss...&lt;/h3&gt;&lt;ul style="list-style-type: circle; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-left: 20px; font-size: 12px;"&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/items/Data-Access-Strategies-WebClient.aspx"&gt;The article series 'WP7 Data Access Strategies'&lt;/a&gt; &lt;/li&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/video/Webinar-Azure-for-WP7-Devs.aspx"&gt;&lt;strong&gt;Recording of the webinar&lt;/strong&gt;: Azure for the Windows Phone Developer&lt;/a&gt;&lt;/li&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/ebooks/wp7_exam.aspx"&gt;The ebook 'Getting Ready for the Windows Phone Exam 70-599':&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;p style="padding-bottom: 5px; text-align: center;"&gt;&lt;a href="http://www.silverlightshow.net/ebooks/wp7_exam.aspx"&gt;&lt;img style="border:0px solid; border-image: initial; width: 100px; height: 141px;" alt="Getting Ready for the Windows Phone Exam 70-599" src="http://www.silverlightshow.net/Storage/Ebooks/wp7_exam_cover.png" /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size: 13px;"&gt;($4.99)&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;&lt;a href="http://www.silverlightshow.net/ebooks/wp7_exam.aspx"&gt;&lt;/a&gt;&lt;p style="font-size: 12px; text-align: center;"&gt;&lt;a href="http://www.silverlightshow.net/ebooks.aspx"&gt;All SilverlightShow Ebooks&lt;/a&gt;&amp;nbsp;&lt;img alt="" src="http://www.silverlightshow.net/Storage/arrow-content.jpg" /&gt;&lt;/p&gt;&lt;/div&gt;As you know for sure, the tiles can be attached or detached from the home screen and some particular software can take advantage of double size tiles. While this is not a feature available to developers, in OS7.5, the tiles gained new features and a new set of APIs that you can use to enrich your applications. As an example you are now able to update your tiles from inside the application and you can use double faced tiles to improve information to the user. In this article I would like to explore these new features and show how to take advantage of them, while porting your software to the new operating system.&lt;h4 style="text-align: justify;"&gt;Accessing and changing your tile(s)&lt;/h4&gt;&lt;p style="text-align: justify;"&gt;Once your application is running the user can have pinned its tile on the home screen. If this happened, you can have access to a bunch of tile's properties you can change at every time while the application is running, but please take note that it implies that the tile exists. Obviously, none of these APIs can work if your application is not pinned.&lt;/p&gt;&lt;p style="text-align: justify;"&gt;The root of your work is the ShellTile class that gives you access to a collection of ActiveTiles. At the very first place in this collection there is a structure that represents the main tile of your application. Reading the previous paragraph, you can expect this collection is empty when you application has not been pinned, but it is not true. The collection always contains at least one element, and you can update it every time also if the application's tile is not in the home screen. This does not cause a visible change but if the user choose to pin the application at a later time its tile will reflect these changes. The ShellTile class returned by this collection contains an "Update" method that is useful to change the tile's content:&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="border:1px solid silver;border-image: initial; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; StandardTileData data = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; StandardTileData&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;     Title = &lt;span style="color: #006080;"&gt;"My tile!"&lt;/span&gt;,&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;     Count = 10,&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;     BackgroundImage = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Uri(&lt;span style="color: #006080;"&gt;"/Background.png"&lt;/span&gt;, UriKind.RelativeOrAbsolute),&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;     BackTitle = &lt;span style="color: #006080;"&gt;"This is the back"&lt;/span&gt;,&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;     BackContent = &lt;span style="color: #006080;"&gt;"Hallo!"&lt;/span&gt;,&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt;     BackBackgroundImage = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Uri(&lt;span style="color: #006080;"&gt;"/Background.png"&lt;/span&gt;, UriKind.RelativeOrAbsolute)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt; };&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt;  11:&lt;/span&gt; ShellTile.ActiveTiles.First().Update(data);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="text-align: justify;"&gt;The properties of the StandardTileData class reflect the parts of the tile and are divided in two categories: Front and Back. So, we have a "Title" property that reflects the title of the tile on the front side and the "BackTitle" that has the same meaning for the back side. This led to the consideration that in OS 7.5, tiles can have two sides available. It suffice you set the value of one of the "Back" properties and the tile automatically activates the back side on a random schedule. &lt;/p&gt;&lt;p style="text-align: justify;"&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/AndreaBoschin/______Capture.png"&gt;&lt;img style="margin-top: 0px; margin-right: 17px; margin-bottom: 0px; margin-left: 0px; display: inline; float: left;" title="Capture" alt="Capture" src="http://www.silverlightshow.net/Storage/Users/AndreaBoschin/_____Capture_thumb.png" width="139" height="140" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="text-align: justify;"&gt;Tiles have also a background image, usually of the size of 173x173 pixels, that fills the entire square. The image must reside in the project as a resource and we can refer to it with a relative uri that starts at the root of the project. So "/Background.png" refers to the standard image, usually created by visual studio in the default project. Of course you can set different images for each side of the tile.&lt;/p&gt;&lt;p style="text-align: justify;"&gt;If you generate images on the fly, while the application is running, you can also use isolated storage to peek up images to show in the tiles. For this purpose you have to generate images in the standard path "/Shared/ShellContent", and then use the "isostore:" prefix when you refer to it in the tile's uri. Here is an extended example that shows this tecnique with a generated background image. The image contains a simple gradient as shown on the left side.&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="border:1px solid silver;border-image: initial; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;const&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; TilePath = &lt;span style="color: #006080;"&gt;"/Shared/ShellContent/tile.jpg"&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; MainPage_Loaded(&lt;span style="color: #0000ff;"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;     WriteableBitmap bmap = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; WriteableBitmap(173, 173);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;for&lt;/span&gt; (&lt;span style="color: #0000ff;"&gt;byte&lt;/span&gt; x = 0; x &amp;lt; 173; x++)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;for&lt;/span&gt; (&lt;span style="color: #0000ff;"&gt;byte&lt;/span&gt; y = 0; y &amp;lt; 173; y++)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt;             bmap.Pixels[y * 173 + x] = (0xff &amp;lt;&amp;lt; 24) | (x &amp;lt;&amp;lt; 16) | y;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt;  11:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; (IsolatedStorageFile file = IsolatedStorageFile.GetUserStoreForApplication())&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt;  12:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt;  13:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (file.FileExists(TilePath))&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum14" style="color: #606060;"&gt;  14:&lt;/span&gt;             file.DeleteFile(TilePath);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum15" style="color: #606060;"&gt;  15:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum16" style="color: #606060;"&gt;  16:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; (IsolatedStorageFileStream stream = file.CreateFile(TilePath))&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum17" style="color: #606060;"&gt;  17:&lt;/span&gt;             bmap.SaveJpeg(stream, 173, 173, 0, 100);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum18" style="color: #606060;"&gt;  18:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum19" style="color: #606060;"&gt;  19:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum20" style="color: #606060;"&gt;  20:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum21" style="color: #606060;"&gt;  21:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; bCheckTiles_Click(&lt;span style="color: #0000ff;"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum22" style="color: #606060;"&gt;  22:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum23" style="color: #606060;"&gt;  23:&lt;/span&gt;     StandardTileData data = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; StandardTileData&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum24" style="color: #606060;"&gt;  24:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum25" style="color: #606060;"&gt;  25:&lt;/span&gt;         Title = &lt;span style="color: #006080;"&gt;"andrea"&lt;/span&gt;,&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum26" style="color: #606060;"&gt;  26:&lt;/span&gt;         Count = 10,&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum27" style="color: #606060;"&gt;  27:&lt;/span&gt;         BackTitle = &lt;span style="color: #006080;"&gt;"This is the back"&lt;/span&gt;,&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum28" style="color: #606060;"&gt;  28:&lt;/span&gt;         BackContent = &lt;span style="color: #006080;"&gt;"Hallo!"&lt;/span&gt;,&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum29" style="color: #606060;"&gt;  29:&lt;/span&gt;         BackBackgroundImage = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Uri(&lt;span style="color: #006080;"&gt;"isostore:/Shared/ShellContent/tile.jpg"&lt;/span&gt;, UriKind.RelativeOrAbsolute)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum30" style="color: #606060;"&gt;  30:&lt;/span&gt;     };&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum31" style="color: #606060;"&gt;  31:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum32" style="color: #606060;"&gt;  32:&lt;/span&gt;     ShellTile.ActiveTiles.First().Update(data);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum33" style="color: #606060;"&gt;  33:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="text-align: justify;"&gt;Finally you probably noticed an asimmetry in front and back properties. While front properties have a "Count" value, the background can specify a "BackContent". The "Count" property is made to specify a number to show on the right-top corner. This may be useful to applications that can check for email messages and so on. The BackContent instead, is used to fill the main content of the tile background. The tile figure on the left side show the word "Hallo!" in the place where content is displayed.&lt;/p&gt;&lt;h4 style="text-align: justify;"&gt;Schedule tile updates&lt;/h4&gt;&lt;p style="text-align: justify;"&gt;Once you configured your application's tile, your next need is probably to change the tile's content to notify the user about a service you are monitoring. This usually means use a time-based schedule that is able to check on a server if there is something to notify. Since OS 7.0, Windows Phone has a ShellTileSchedule. It was very limited because you was only able to update the background image, using a remote Uri to call on a scheduled basis. In OS 7.5 this has not changed a lot. The only thing we get added is the capability of also update secondary tiles (I will speak about secondary tiles in a few). You can connect the ShellTileSchedule to an arbitrary tile using the ActiveTiles collections as shown here:&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="border:1px solid silver;border-image: initial; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; ShellTileSchedule schedule = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; ShellTileSchedule(ShellTile.ActiveTiles.First())&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;     Interval = UpdateInterval.EveryHour, &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;     MaxUpdateCount = 0, &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;     Recurrence = UpdateRecurrence.Interval, &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;     StartTime = DateTime.Now,&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;     RemoteImageUri = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Uri(&lt;span style="color: #006080;"&gt;"http://xamlplayground.org/wp7updates/tile.jpg"&lt;/span&gt;)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt; };&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt; schedule.Start();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="text-align: justify;"&gt;The ShellTileSchedule constructor accept a reference to a ShellTile in the collection so you can schedule multiple updates, one for each tile of your application. &lt;/p&gt;&lt;p style="text-align: justify;"&gt;As I shown in the example of the &lt;a href="http://www.silverlightshow.net/items/Windows-Phone-7.5-Use-Background-agents.aspx" target="_blank"&gt;previous article&lt;/a&gt; about background agents, Windows Phone 7.5 gives an additional opportunity to schedule tile updates. You are able to use a ScheduledAgent and from inside the agent you are able to access the ActiveTiles collection and update almost every property you think useful to notify the user, with the sole limitation of a fixed schedule of 30 minutes. In the Panoramio example I showed how to access GPS position and retrieve a random image from Panoramio to update the application tile with a local image. Please check out the &lt;a href="http://www.silverlightshow.net/items/Windows-Phone-7.5-Use-Background-agents.aspx" target="_blank"&gt;previous article&lt;/a&gt; for a detailed explanation.&lt;/p&gt;&lt;h4 style="text-align: justify;"&gt;Using secondary tiles&lt;/h4&gt;&lt;p style="text-align: justify;"&gt;A great new opportunity with Windows Phone 7.5, is the ability of configure more than a tile, to pin to the home screen. These tiles can work as shortcuts for services exposed by your applications. To make a practical example, you can think at secondary tiles to expose different locations for a weather channel or to have a shortcut to airplanes flights and so on. The sole limit is your fantasy. &lt;/p&gt;&lt;p style="text-align: justify;"&gt;A secondary tile is simply created using the static Create method only on user input. This means your application cannot create tiles automatically, but only when the user explicitly ask it, interacting with the application interface. To create the tile you have to fill a StandardTileData class and pass it to the method. As a result the application exits and the user is brought to the tile position in the home screen. This also means that you can only create a secondary tile for each session because, the process close the application every time. Here is the code to create the tile:&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="border:1px solid silver;border-image: initial; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; PinToStart(&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; address)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;     Server server = Repository.GetServer(address);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (server != &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;         ShellTile tile = ShellTile.ActiveTiles.FirstOrDefault(&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt;             t =&amp;gt; t.NavigationUri.ToString().EndsWith(&lt;span style="color: #006080;"&gt;"server="&lt;/span&gt; + address));&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (tile == &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt;  11:&lt;/span&gt;         {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt;  12:&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; destFileName = CopyImageToShellContent(address);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt;  13:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum14" style="color: #606060;"&gt;  14:&lt;/span&gt;             StandardTileData newTile = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; StandardTileData&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum15" style="color: #606060;"&gt;  15:&lt;/span&gt;             {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum16" style="color: #606060;"&gt;  16:&lt;/span&gt;                 Title = server.Name,&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum17" style="color: #606060;"&gt;  17:&lt;/span&gt;                 Count = 0,&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum18" style="color: #606060;"&gt;  18:&lt;/span&gt;                 BackgroundImage = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Uri(&lt;span style="color: #006080;"&gt;"Background.png"&lt;/span&gt;, UriKind.Relative),&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum19" style="color: #606060;"&gt;  19:&lt;/span&gt;                 BackTitle = server.Name,&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum20" style="color: #606060;"&gt;  20:&lt;/span&gt;                 BackBackgroundImage = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Uri(destFileName, UriKind.Absolute),&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum21" style="color: #606060;"&gt;  21:&lt;/span&gt;                 BackContent = AppStrings.Title&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum22" style="color: #606060;"&gt;  22:&lt;/span&gt;             };&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum23" style="color: #606060;"&gt;  23:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum24" style="color: #606060;"&gt;  24:&lt;/span&gt;             ShellTile.Create(&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Uri(&lt;span style="color: #006080;"&gt;"/Pages/VNCPanorama.xaml?server="&lt;/span&gt; + address, UriKind.Relative), newTile);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum25" style="color: #606060;"&gt;  25:&lt;/span&gt;         }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum26" style="color: #606060;"&gt;  26:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum27" style="color: #606060;"&gt;  27:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="text-align: justify;"&gt;This sample, taken directly from the next release of my &lt;a href="http://www.xamlplayground.org/post/2011/11/18/Silver-VNC-10-for-Windows-Phone-Mango.aspx" target="_blank"&gt;Silver VNC client for Windows Phone 7&lt;/a&gt;, shows how to create the tile. The important thing to note is the uri you have to pass to the Create method. This uri (called NavigationUri) is the one called when the user hits the pinned tile. It indicates the page inside your application that will be used as landing page for the request and can have multiple query string parameters to let the application decide how to answer to the request. Thanks to these parameters you can have multiple tiles that connect to the application with different actions. Inside the page that receive the user request you can parse the query string to evaluate the action to perform:&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="border:1px solid silver;border-image: initial; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.txtName.Text = &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;.Empty;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.txtAddress.Text = &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;.Empty;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.Load();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.EvaluateFromPinnedTile(e);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;base&lt;/span&gt;.OnNavigatedTo(e);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; EvaluateFromPinnedTile(NavigationEventArgs e)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt;  11:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt;  12:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (e.NavigationMode == System.Windows.Navigation.NavigationMode.New)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt;  13:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum14" style="color: #606060;"&gt;  14:&lt;/span&gt;         Match match = Regex.Match(e.Uri.ToString(), &lt;span style="color: #006080;"&gt;".*?server=(?&amp;lt;address&amp;gt;.*)"&lt;/span&gt;);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum15" style="color: #606060;"&gt;  15:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum16" style="color: #606060;"&gt;  16:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (match.Success)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum17" style="color: #606060;"&gt;  17:&lt;/span&gt;         {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum18" style="color: #606060;"&gt;  18:&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; address = match.Groups[&lt;span style="color: #006080;"&gt;"address"&lt;/span&gt;].Value;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum19" style="color: #606060;"&gt;  19:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum20" style="color: #606060;"&gt;  20:&lt;/span&gt;             Server server = Repository.GetServer(address);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum21" style="color: #606060;"&gt;  21:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum22" style="color: #606060;"&gt;  22:&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (server != &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum23" style="color: #606060;"&gt;  23:&lt;/span&gt;                 &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.Connect(server);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum24" style="color: #606060;"&gt;  24:&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum25" style="color: #606060;"&gt;  25:&lt;/span&gt;                 MessageBox.Show(&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;.Format(AppStrings.Message_UnknownServer, address));&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum26" style="color: #606060;"&gt;  26:&lt;/span&gt;         }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum27" style="color: #606060;"&gt;  27:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum28" style="color: #606060;"&gt;  28:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="text-align: justify;"&gt;Into the OnNavigated method I call the EvaluateFromPinnedTile method that is responsible to check if the navigation occur because the user hit the pinned tile. In the method I check the NavigationMode property, that is always set to "New" when it is raised from a secondary tile and the use a regular expression to effectively check the incoming uri and retrieve the address. If the call is validated then I retrieve the Server information, from the local database, and then I call the Connect method to start the VNC connection. &lt;/p&gt;&lt;p style="text-align: justify;"&gt;To be double sure to not have exceptions I also check that the server exists on the database. Also if I delete the tile when the server is deleted from the database, this check is more defensive. Here is the deletion code:&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="border:1px solid silver;border-image: initial; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; TryUnpinFromStart(&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; address)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;     ShellTile tile = ShellTile.ActiveTiles.FirstOrDefault(t =&amp;gt; t.NavigationUri.ToString().EndsWith(&lt;span style="color: #006080;"&gt;"server="&lt;/span&gt; + address));&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (tile != &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;         tile.Delete();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="text-align: justify;"&gt;While programming secondary tiles, you must be cautious because the user can always remove the pinned tile from the home screen, without the application get any warn about it. So please always be careful about what you get and always try to be in sync between secondary tiles and application data.&lt;/p&gt;&lt;h4 style="text-align: justify;"&gt;Tile your apps.&lt;/h4&gt;&lt;p style="text-align: justify;"&gt;Tiles are probably the most distinctive feature you have in Windows Phone 7. As it happen for every hard decision you can only love or hate them. I meet lot of people that take tiles as an example of the wrong of the Windows Phone and lot of other people that think in the opposite way. My think is that for common people tiles are a great opportunity of access all the capabilities of the phone without have to deal with complicated interfaces. Only hit and pin, is the only thing you need. From the developer side, use tiles correctly gives you an additional gear to make you applications more flexible and effective. However, my think is that tiles are great; given I love the simplicity, they are one of the best features of my favorite phone.&lt;/p&gt;</description>      <link>http://www.silverlightshow.net/items/Windows-Phone-7.5-Using-advanced-tiles-API.aspx</link>      <author>editorial@silverlightshow.net (Andrea Boschin  )</author>      <comments>http://www.silverlightshow.net/items/Windows-Phone-7.5-Using-advanced-tiles-API.aspx#comments</comments>      <guid isPermaLink="true">http://www.silverlightshow.net/items/Windows-Phone-7.5-Using-advanced-tiles-API.aspx</guid>      <pubDate>Mon, 09 Jan 2012 15:43:00 GMT</pubDate>    </item>    <item>      <link>http://feedproxy.google.com/~r/MarkMonster_Silverlight/~3/xZRF6QrQzH0/how-to-cancel-overwrite-a-successful-marketplace-update-submission</link>      <author xmlns="http://www.w3.org/2005/Atom">        <name>Mark Monster</name>      </author>      <category>Technology</category>      <category>WP7</category>      <category>WPDev</category>      <title>How to cancel (overwrite) a successful Marketplace update submission?</title>      <description>&lt;p&gt;It was a day after I submitted an update to one of my apps to the marketplace where I found out about a bug. This was a functional bug which didn’t affect Marketplace testing. I already knew that I couldn’t cancel a running submission, so I already learned the Hard Way to never Auto Publish, but do a Manual Publish after successful testing.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Tip: Do a Manual Publish after successful testing. This makes sure you are in control!&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Alright, what happened to me recently is that I made a small code change that causes problems a Background Task for about 50% of the time. I didn’t find this during initial testing. A small case of using the less than sign instead of the greater than sign. I found out about this bug after I submitted the app to the marketplace. So I waited until the submission was successful (or failed).&lt;/p&gt;  &lt;p&gt;The Marketplace team successfully tested my application and I was in control (&lt;strong&gt;see tip&lt;/strong&gt;). What can I do?&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Publish the application:&amp;#160; I obviously don’t want this, there’s a bug in the app.&lt;/li&gt;    &lt;li&gt;Edit catalog details: Doesn’t help me either.&lt;/li&gt;    &lt;li&gt;Edit product details: That should help…&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;So I went for “Edit product details”, but sadly that didn’t work, because it helped me to Step 2 and not Step 1 where I could upload a new Application Package.&lt;/p&gt;  &lt;p&gt;Alright, time for some hacking I would say. &lt;strong&gt;It might be risky, so use it at your own risk.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;1. Start with the Edit catalog details url, copy the applicationId and the parentApplicationInstanceId.&lt;/p&gt;  &lt;p&gt;2. Replace the applicationId and the parentApplicationInstanceId in the following url.&lt;/p&gt;  &lt;p&gt;https://windowsphone.create.msdn.com/AppSubmission#/PageUpload&amp;amp;mode=Update&amp;amp;applicationId=00000000-0000-0000-0000-000000000000&amp;amp;parentApplicationInstanceId=00000000-0000-0000-0000-000000000000&lt;/p&gt;  &lt;p&gt;3. Then follow that link. &lt;strong&gt;But do nothing else.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;4. Go back to the original page where the “Edit product details” didn’t go to step 1, but to step 2. In my situation it did suddenly go to step 1 and I was able to upload a new Application Package.&lt;/p&gt;  &lt;p&gt;I’m now waiting again for the Marketplace testing. I hope this will help some people who have a similar problem.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MarkMonster_Silverlight/~4/xZRF6QrQzH0" height="1" width="1"/&gt;</description>      <pubDate>Sat, 07 Jan 2012 22:41:17 +0100</pubDate>      <updated xmlns="http://www.w3.org/2005/Atom">2012-01-07T22:41:17+01:00</updated>      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://mark.mymonster.nl/2012/01/07/how-to-cancel-overwrite-a-successful-marketplace-update-submission</origLink>    </item>    <item>      <title>"Physamajig" for Windows 8</title>      <description>&lt;SPAN style="FONT-FAMILY: 'Times New Roman','serif'; FONT-SIZE: 12pt"&gt;&lt;FONT size=2 face=Arial&gt;&lt;FONT size=3 face="Times New Roman"&gt;&lt;STRONG&gt;&lt;U&gt;&lt;FONT size=2 face=Arial&gt;&lt;/FONT&gt;&lt;/U&gt;&lt;/STRONG&gt;&lt;P style="LINE-HEIGHT: normal" class=MsoNormal&gt;&lt;BR&gt;&lt;FONT color=#a52a2a&gt;&lt;STRONG&gt;&lt;U&gt;UPDATE 1/16/11:&lt;/U&gt; Physamajig has been selected as a finalist in the &lt;/STRONG&gt;&lt;/FONT&gt;&lt;A href="https://buildwindowscontest.com/"&gt;&lt;FONT color=#a52a2a&gt;&lt;STRONG&gt;Windows 8 First Apps Contest&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT color=#a52a2a&gt;&lt;STRONG&gt;!&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P style="LINE-HEIGHT: normal" class=MsoNormal&gt;I am not one to shy away from programming contests. So with the announcement of the &lt;A href="https://buildwindowscontest.com/"&gt;Windows 8 First Apps Contest&lt;/A&gt;, I wanted to try and do something fun and at the same time refine my &lt;A href="http://www.andybeaulieu.com/Home/tabid/67/EntryID/221/Default.aspx"&gt;Physics Helper XAML&lt;/A&gt; project&lt;/FONT&gt;&lt;FONT size=2 face=Arial&gt;.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="LINE-HEIGHT: normal" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Times New Roman','serif'; FONT-SIZE: 12pt"&gt;&lt;FONT size=2 face=Arial&gt;What I came up with is "&lt;STRONG&gt;Physamajig&lt;/STRONG&gt;" - a Metro style app that allows you to interactively create physics simulations in Windows 8! &lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;IFRAME height=450 src="http://www.youtube.com/embed/k0Y1Rbrurl0" frameBorder=0 width=600 allowfullscreen&gt;&lt;/IFRAME&gt;&lt;/P&gt;&lt;P style="LINE-HEIGHT: normal" class=MsoNormal&gt;&lt;FONT size=2 face=Arial&gt;Physamajig is similar to a WP7 app I created called "&lt;A href="http://www.windowsphone.com/en-US/apps/7f6ae8df-9300-e011-9264-00237de2db9e"&gt;Paint to Life&lt;/A&gt;" - but it takes things much further by including many new tools, joints, physics properties, file options, and more! And I have to say that the Windows 8 Metro version of this app looks much more slick than the WP7 version.&lt;/FONT&gt;&lt;/P&gt;&lt;P style="LINE-HEIGHT: normal" class=MsoNormal&gt;&lt;IMG src="http://www.andybeaulieu.com/images/smallshotforweb.png"&gt;&lt;/P&gt;&lt;P style="LINE-HEIGHT: normal" class=MsoNormal&gt;&lt;FONT size=2 face=Arial&gt;The app comes with several sample creations pre-installed, and one of the next features I am working on is a web service so that users can share their creations online.&lt;/FONT&gt;&lt;/P&gt;&lt;P style="LINE-HEIGHT: normal" class=MsoNormal&gt;&lt;FONT size=2 face=Arial&gt;There are definitely some gotchas with working with the Developer Preview bits for Windows 8, but for such an early release it is quite productive really. I found the &lt;A href="http://social.msdn.microsoft.com/Forums/en-us/winappswithcsharp/threads"&gt;Community Forums&lt;/A&gt; quite helpful when I hit issues, if nothing else to know that I was not alone :) &lt;/FONT&gt;&lt;/P&gt;&lt;P style="LINE-HEIGHT: normal" class=MsoNormal&gt;&lt;FONT size=2 face=Arial&gt;If you're building any apps for the Windows 8 Contest, I'd be happy to know more about them - please share!&lt;/FONT&gt;&lt;/P&gt;&lt;P style="LINE-HEIGHT: normal" class=MsoNormal&gt;&lt;FONT size=2 face=Arial&gt;&lt;/FONT&gt; &lt;/P&gt;</description>      <link>http://www.andybeaulieu.com/Home/tabid/67/EntryID/223/Default.aspx</link>      <author>andy@andybeaulieu.com</author>      <comments>http://www.andybeaulieu.com/Home/tabid/67/EntryID/223/Default.aspx#Comments</comments>      <guid isPermaLink="true">http://www.andybeaulieu.com/Default.aspx?tabid=67&amp;EntryID=223</guid>      <pubDate>Fri, 06 Jan 2012 18:24:00 GMT</pubDate>      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">14</comments>      <ping xmlns="http://madskills.com/public/xml/rss/module/trackback/">http://www.andybeaulieu.com/DesktopModules/Blog/Trackback.aspx?id=223</ping>    </item>    <item>      <title>Discussing the Microsoft Client Landscape on DotNetRocks</title>      <link>http://feeds.johnpapa.net/~r/JohnPapa/~3/xiT0PmMEAiA/dnr730</link>      <description>&lt;p&gt;A few weeks ago I had a great time talking with Carl and Richard about the client development landscape. We chatted about everything from XAML, to Windows Phone, Windows 8, to Silverlight, to HTML5, to JavaScript, to KnockoutJS, to and JsRender. &lt;a href="http://bitly.com/dnr730jp"&gt;That discussion ended up being on this week’s DotNetRocks episode #730.&lt;/a&gt;&lt;/p&gt; &lt;p&gt;I’m finding that the client landscape is an extremely interesting area with a lot of exciting new activity. Between hardware solutions and some great technologies running on them, it’s a great time to dive into them and see what floats, and more importantly, get inspired to create. This is one of the reasons I decided to start writing a new column in MSDN Magazine (soon to be formally announced) on the client landscape and where I can explore an array of client tech.&lt;/p&gt; &lt;p&gt;You can check out &lt;a href="http://bitly.com/dnr730jp"&gt;the entire lively discussion on DotNetRocks with Carl, Richard and me right here&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;a href="http://bitly.com/dnr730jp"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://johnpapa.net/Media/Default/Windows-Live-Writer/Discussing-the-Microsoft-Client-Landscap_B2FA/image_3.png" width="870" height="140"&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;&lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=xiT0PmMEAiA:R1xM5YV9NJU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?i=xiT0PmMEAiA:R1xM5YV9NJU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=xiT0PmMEAiA:R1xM5YV9NJU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?i=xiT0PmMEAiA:R1xM5YV9NJU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=xiT0PmMEAiA:R1xM5YV9NJU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=xiT0PmMEAiA:R1xM5YV9NJU:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JohnPapa/~4/xiT0PmMEAiA" height="1" width="1"/&gt;</description>      <pubDate>Thu, 05 Jan 2012 17:50:49 GMT</pubDate>      <guid isPermaLink="false">http://johnpapa.net:80/dnr730</guid>      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://johnpapa.net:80/dnr730</origLink>    </item>    <item>      <title>3 Challenges for Windows Phone</title>      <link>http://feeds.johnpapa.net/~r/JohnPapa/~3/1sJIMhzpVuE/3-challenges-for-windows-phone</link>      <description>&lt;p&gt;I like my Windows Phone. The UI is awesome and I’m itching to get the Lumia 900 when it comes out. The iPhone interface feels a bit dated to me. But the lack of good apps is killing me right now. I have faith in the Windows Phone team though that 2012 will be a big year and they’ll continue to rise. &lt;/p&gt; &lt;p&gt;Here is an article I wrote for VS Magazine that states what I deem as the 3 challenges WP faces today. The key is to forget the developers who write code for it and go talk to users … real people. Most hardly know what it is. Sigh. &lt;a href="http://visualstudiomagazine.com/articles/2012/01/01/microsoft-phone-challenges.aspx"&gt;http://visualstudiomagazine.com/articles/2012/01/01/microsoft-phone-challenges.aspx&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;&lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=1sJIMhzpVuE:Lv9QgTYAEgk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?i=1sJIMhzpVuE:Lv9QgTYAEgk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=1sJIMhzpVuE:Lv9QgTYAEgk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?i=1sJIMhzpVuE:Lv9QgTYAEgk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=1sJIMhzpVuE:Lv9QgTYAEgk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=1sJIMhzpVuE:Lv9QgTYAEgk:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JohnPapa/~4/1sJIMhzpVuE" height="1" width="1"/&gt;</description>      <pubDate>Thu, 05 Jan 2012 00:18:43 GMT</pubDate>      <guid isPermaLink="false">http://johnpapa.net:80/3-challenges-for-windows-phone</guid>      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://johnpapa.net:80/3-challenges-for-windows-phone</origLink>    </item>    <item>      <title>Yet Another Podcast #56–Jeff Blankenburg: Evangelist</title>      <link>http://feedproxy.google.com/~r/JesseLiberty-SilverlightGeek/~3/PNz7x8tb7dQ/</link>      <comments>http://jesseliberty.com/2012/01/04/yet-another-podcast-56jeff-blankenburg-evangelist/#comments</comments>      <pubDate>Wed, 04 Jan 2012 15:45:04 +0000</pubDate>      <creator xmlns="http://purl.org/dc/elements/1.1/">Jesse Liberty</creator>      <category><![CDATA[Essentials]]></category>      <category><![CDATA[YapCast]]></category>      <guid isPermaLink="false">http://jesseliberty.com/?p=5163</guid>      <encoded xmlns="http://purl.org/rss/1.0/modules/content/"><![CDATA[Talking with Jeff Blankenburg about his 31 Days of Mango series and what it means to be a Microsoft Evangelist.&#160; Jeff’s web site Migrating to Windows Phone 31 Days of Mango e-Book 31 Days of Mango Windows Telephone App Listen &#8230; Continue reading &#8594;<br/><br/>For the complete article and hyperlinks, please visit my blog at http://JesseLiberty.com<div class="feedflare"><a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=PNz7x8tb7dQ:hw_h3rjdC8M:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=PNz7x8tb7dQ:hw_h3rjdC8M:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=PNz7x8tb7dQ:hw_h3rjdC8M:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?i=PNz7x8tb7dQ:hw_h3rjdC8M:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=PNz7x8tb7dQ:hw_h3rjdC8M:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?i=PNz7x8tb7dQ:hw_h3rjdC8M:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=PNz7x8tb7dQ:hw_h3rjdC8M:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?i=PNz7x8tb7dQ:hw_h3rjdC8M:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=PNz7x8tb7dQ:hw_h3rjdC8M:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?d=qj6IDK7rITs" border="0"></img></a></div><img src="http://feeds.feedburner.com/~r/JesseLiberty-SilverlightGeek/~4/PNz7x8tb7dQ" height="1" width="1"/>]]></encoded>      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://jesseliberty.com/2012/01/04/yet-another-podcast-56jeff-blankenburg-evangelist/feed/</commentRss>      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">3</comments>      <enclosure url="http://jesseliberty.com/wp-content/media/Show56.mp3" length="19194749" type="audio/mpeg" />      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://jesseliberty.com/2012/01/04/yet-another-podcast-56jeff-blankenburg-evangelist/</origLink>    </item>    <item>      <title>Windows 8 and the future of XAML: Part 1: An overview of the Windows 8 platform</title>      <description>&lt;table width="20"&gt;    &lt;tbody&gt;        &lt;tr&gt;            &lt;td&gt;            &lt;div class="fb-like" data-show-faces="true" data-send="false" data-href="http://www.silverlightshow.net/items/Windows-8-and-the-future-of-XAML-Part-1-An-overview-of-the-Windows-8-platform.aspx" data-font="segoe ui" data-layout="button_count"&gt;&lt;/div&gt;            &lt;/td&gt;            &lt;td&gt;&lt;a href="https://twitter.com/share" class="twitter-share-button" data-via="silverlightshow" data-counturl="http://www.silverlightshow.net/items/Windows-8-and-the-future-of-XAML-Part-1-An-overview-of-the-Windows-8-platform.aspx" data-count="horizontal" data-text="Reading @gillcleeren's article: Windows 8 &amp;amp; the future of XAML: An overview of the #Win8 platform" data-url="http://slshow.net/tw8fVY"&gt;Tweet&lt;/a&gt;&lt;/td&gt;            &lt;td&gt;&lt;g:plusone size="medium" href="http://www.silverlightshow.net/items/Windows-8-and-the-future-of-XAML-Part-1-An-overview-of-the-Windows-8-platform.aspx"&gt;&lt;/g:plusone&gt;            &lt;/td&gt;            &lt;td&gt;            &lt;/td&gt;        &lt;/tr&gt;    &lt;/tbody&gt;&lt;/table&gt;&lt;div style="border:1px solid #dddddd;border-image: initial; padding-bottom: 5px; background-color: #f3f3f3; margin-top: 5px; padding-left: 10px; margin-left: 10px; padding-top: 5px;"&gt;&lt;div style="text-align: center;"&gt;&lt;p style="text-align: center;"&gt;&lt;strong&gt;Is there a specific Win 8 topic you need covered in this series?&lt;br /&gt;&lt;/strong&gt;&lt;strong&gt;&lt;a href="http://www.silverlightshow.net/Forums/general-discussions/new-article-series-by-gill-cleeren--windows-8-and-the-future-of-xaml--any-additional-topics-you-need-covered-in-this-series.aspx" target="_self"&gt;Check out the currently planned TOC for the whole series&lt;/a&gt;, and feel free to suggest more topics for inclusion.&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;h2&gt;&amp;nbsp;&lt;br /&gt;Introduction to the series&lt;/h2&gt;&lt;p&gt;Welcome to this first part of a whole series on Windows 8 articles, which I&amp;rsquo;ll be writing over the coming weeks and months. It&amp;rsquo;s my goal in this series to introduce you to what we know at this point about Windows 8 and how we as (XAML) developers will need to adapt to the new platform. &lt;/p&gt;&lt;div style="border:1px solid #dddddd;border-image: initial; padding-bottom: 5px; background-color: #f3f3f3; margin-top: 5px; padding-left: 10px; width: 200px; float: right; margin-left: 10px; margin-right: 5px; padding-top: 5px;"&gt;&lt;h3&gt;Don't miss...&lt;/h3&gt;&lt;ul style="list-style-type: circle; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-left: 20px; font-size: 12px;"&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/video/Recording-of-Webinar-Introduction-to-XAML-Development-on-Windows-8-by-Gill-Cleeren.aspx"&gt;Webinar recording: Introduction to XAML Development on Windows 8&lt;/a&gt; &lt;/li&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/items/Windows-8-XAML-Metro-Apps-with-OData.aspx"&gt;Article series: Windows 8 XAML Metro Apps with OData&lt;/a&gt; &lt;/li&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/ebooks/xmas_bundle.aspx"&gt;Few days left to get SilverlightShow Holiday Bundle of 21 ebooks!&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;p style="padding-bottom: 5px; text-align: center;"&gt;&lt;a href="http://www.silverlightshow.net/ebooks/xmas_bundle.aspx" target="_self"&gt;&lt;img style="width: 107px; height: 150px;" alt="Producing and Consuming OData in a Silverlight and WP7 App Ebook" src="http://www.silverlightshow.net/Storage/xmasbundle_transparent.png" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="font-size: 12px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.silverlightshow.net/ebooks.aspx"&gt;All SilverlightShow Ebooks&lt;/a&gt;&amp;nbsp;&lt;img alt="" src="http://www.silverlightshow.net/Storage/arrow-content.jpg" /&gt;&lt;/p&gt;&lt;/div&gt;Since you&amp;rsquo;re probably a XAML developer like I am, we are going to see things from a XAML point-of-view. In some of the upcoming articles, I&amp;rsquo;m going to describe you how you can leverage what you already know in XAML when Windows 8 will be ready. I&amp;rsquo;m also going to spend time looking at how you can convert existing Silverlight applications to Windows 8 Metro apps, so that they follow the rules of the OS. We will also be spending time of course on digging into the developer framework making the development on Windows 8 easy: Windows Runtime or shorter, WinRT. Finally, the series will close with a step-by-step guide on building a complete Windows 8 Metro-style application.&lt;p&gt;Now in this first part, we&amp;rsquo;ll focus on Windows 8 itself and the relation to Metro-style apps. We won&amp;rsquo;t be focusing on the development part yet; I just want to make sure that everyone is on board with the new OS itself as well as being able to place the terms Metro, Metro apps, WinRT etc.&lt;/p&gt;&lt;p&gt;I hope you join me on this trip through the Windows platform of the future.&lt;/p&gt;&lt;p&gt;&lt;em&gt;Small note: in this articles, I try to refer to specific versions as little as possible, since I want the information to stay valid as much as humanly possible when Windows 8 will RTM. Therefore, you won&amp;rsquo;t find download links in these articles. Doing a small search will get you the downloads you need!&lt;/em&gt;&lt;/p&gt;&lt;h2&gt;Part 1: An overview of the Windows 8 platform&lt;/h2&gt;&lt;p&gt;To be honest, I&amp;rsquo;m writing this very article in the morning of January 1st, 2012&amp;hellip; yes indeed, New Year&amp;rsquo;s Day 2012. And come to think of it, I couldn&amp;rsquo;t have chosen a better moment - at the beginning of a new year - to write about one of the biggest things awaiting us in that new year: the launch of a new version of the world&amp;rsquo;s most widely used operating, Windows 8. (Note that at the time of writing of this article, no announcements have been made by Microsoft on any launch date of the OS, but everyone assumes that we&amp;rsquo;ll see the OS in its final form on our machines sometime in 2012&amp;hellip;). As mentioned, in this first article, I will take you through the most important concepts as well as show you some nice improvements.&lt;/p&gt;&lt;h3&gt;Let&amp;rsquo;s BUILD&amp;hellip; and all the panic&lt;/h3&gt;&lt;p&gt;At Mix in the spring of 2011, Microsoft said that they were planning to hold a conference in September where they would show off Windows 8, mainly for developers. While many assumed this was going to be a new edition of PDC, Microsoft named the conference BUILD (www.buildwindows.com). In the months between Mix and Build, some early footage of Windows 8 was shown (http://www.youtube.com/watch?v=p92QfWOw88I), where we saw for the first time the Windows 8 Metro interface. This and next videos sparked a lot of rumors, announcing the death of Silverlight and XAML: some had totally misunderstood the context of the story and thought that HTML5 and JavaScript was going to become the only way of building applications for Windows 8.&lt;/p&gt;&lt;p&gt;Nothing however could be further from the truth. When Microsoft showed Windows 8 at Build, it became clear that the HTML5/JavaScript combination was one way of building apps, but certainly not the only one. Managed developers who build their apps in .NET are going to be doing more or less the same when building apps for Windows 8, based on the same languages (C#, VB). Take a look at the next image, which I took from a slide deck from Build.&lt;/p&gt;&lt;p&gt;&lt;img style="display: inline;        border-width: 0px;border-style: solid;" title="clip_image002" alt="clip_image002" src="http://www.silverlightshow.net/Storage/Users/gillcleeren/clip_image002_871dba3b-3de8-4500-bb81-70dc72a3027a.png" width="614" height="441" /&gt;&lt;/p&gt;&lt;p&gt;As you can see, there&amp;rsquo;s basically two ways of building applications for Windows 8. The part on the right (Desktop Apps) is the same thing as we are doing today. This includes WinForms, ASP.NET, C++, WPF, Silverlight etc applications. Nothing is really changing here, apart from the fact that .NET is being updated to 4.5. This means new features to for example WPF. We aren&amp;rsquo;t going to focus on that a lot in this series, since as mentioned, not much new is to be discovered, things are staying the same. &lt;/p&gt;&lt;p&gt;The big change is the left part, Metro style apps, which is essentially a new type of applications and a new way of building apps. HTML5/JavaScript is one way of building these apps; however, the combination XAML/C# (or XAML/VB) is going to be the way that most managed developers today are going to select. Note that below XAML/C#, a new layer is added, WinRT (aka Windows Runtime). In one sentence, WinRT will allow us to leverage the power of Windows to build Metro style apps using the language of our choice, be it C#, VB, C++ or JavaScript. Much more on WinRT in the next articles!&lt;/p&gt;&lt;h3&gt;BUILD hardware and software announcements&lt;/h3&gt;&lt;p&gt;At Build, Microsoft added another type of platform that they are targeting. Previously, we could develop applications for the web/browser or for the desktop. Web applications are traditionally built using ASP.NET/ASP.NET MVC or Silverlight. Optionally, a client-side library such as jQuery can be used here as well. When targeting the desktop, WPF or also Silverlight were viable solutions.&lt;/p&gt;&lt;p&gt;Microsoft is now adding something in between here: they are now focusing on tablet devices as well. These devices as well as the software running on them is optimized for touch-based input. However, we&amp;rsquo;ll see that Metro applications should also be able to be controlled using the mouse and keyboard. In the image below, we can see Steven Sinofsky at the BUILD keynote with a touch-based tablet device, running Windows 8. Note Windows 8 running on regular PCs and notebooks as well: it&amp;rsquo;s not ONLY for tablet devices.&lt;/p&gt;&lt;p&gt;&lt;img style="border:0px;  border-image: initial; display: inline;" title="image" alt="image" src="http://www.silverlightshow.net/Storage/Users/gillcleeren/image_826091a0-d260-45c4-8abb-e9192b518c20.png" width="971" height="514" /&gt; &lt;/p&gt;&lt;p&gt;To build Metro-apps today, Microsoft announced an Express edition of Visual Studio 11. At the point of writing, this is the only way of building Metro apps (vice-versa: being an Express edition, this version only supports building Metro apps; we can&amp;rsquo;t use it to build for example WPF applications). We will be using this version extensively in the upcoming articles. &lt;/p&gt;&lt;p&gt;&lt;img style="display: inline;        border-width: 0px;border-style: solid;" title="clip_image003" alt="clip_image003" src="http://www.silverlightshow.net/Storage/Users/gillcleeren/clip_image003_f8a9a2d1-9150-4dd2-bca5-6e1aecdec807.png" width="551" height="386" /&gt;&lt;/p&gt;&lt;p&gt;A new edition of the full-blown version of Visual Studio was also announced: this version supports .NET 4.5 and allows us to build any kind of application, including Silverlight 4 and 5. This version doesn&amp;rsquo;t require Windows 8 and can run on Windows 7 therefore as well.&lt;/p&gt;&lt;p&gt;I&amp;rsquo;ve now referred to &amp;ldquo;Metro-style apps&amp;rdquo; several times already, although it may not be 100% clear what exactly is meant with the term &amp;ldquo;Metro-style apps&amp;rdquo;. To make this perfectly clear, let&amp;rsquo;s open Windows 8!&lt;/p&gt;&lt;h3&gt;Exploring Windows 8 and Metro-style apps&lt;/h3&gt;&lt;p&gt;Upon starting a Windows 8 installation for the first time, you arrive in the following environment. This is the Metro environment where Metro-style apps live.&lt;/p&gt;&lt;p&gt;&lt;img style="display: inline;        border-width: 0px;border-style: solid;" title="clip_image005" alt="clip_image005" src="http://www.silverlightshow.net/Storage/Users/gillcleeren/clip_image005_eff3365c-6730-44c4-86a1-301628157ec0.png" width="609" height="458" /&gt;&lt;/p&gt;&lt;p&gt;The rectangles we see here are &amp;ldquo;tiles&amp;rdquo; (we don&amp;rsquo;t say icons anymore). When tapping (or clicking if using a mouse) on one of them, we are launching the application behind it. Most tiles you can see in the above screenshot link to Metro-style apps: applications that run in this environment itself. &lt;/p&gt;&lt;p&gt;But wait, what&amp;rsquo;s this icon, sorry, tile at the bottom left?&lt;/p&gt;&lt;p&gt;&lt;img style="display: inline;        border-width: 0px;border-style: solid;" title="clip_image006" alt="clip_image006" src="http://www.silverlightshow.net/Storage/Users/gillcleeren/clip_image006_9f80e08f-004c-4c67-9054-b6a3a7c1646a.png" width="289" height="183" /&gt;&lt;/p&gt;&lt;p&gt;When opening this Desktop tile, we are brought to the traditional Desktop environment. &lt;/p&gt;&lt;p&gt;&lt;img style="display: inline;        border-width: 0px;border-style: solid;" title="clip_image008" alt="clip_image008" src="http://www.silverlightshow.net/Storage/Users/gillcleeren/clip_image008_c2a9471a-d86d-4fc1-8fd7-da1555d182e7.png" width="609" height="458" /&gt;&lt;/p&gt;&lt;p&gt;In this desktop mode, regular applications such as Office, WinZip, Google Chrome etc will run as they do now on Windows 7. Also, all the applications we wrote in .NET (or will write in .NET 4.5), will run here with nothing really different than before.&lt;/p&gt;&lt;p&gt;So, with Windows 8, we can say that we have 2 environments where applications can run: in the desktop mode and in the Metro environment. No application can run in both environments. It&amp;rsquo;s not possible for a desktop application to run in the Metro environment. It&amp;rsquo;s also not possible for a Metro application (built with WinRT as we&amp;rsquo;ll see in further articles) to run in the desktop environment. There&amp;rsquo;s a clean separation between the two.&lt;/p&gt;&lt;p&gt;Another way of thinking of this is the following. Although technically not correct, we can think of the Metro environment as a shell on top of the desktop mode which can in turn run Metro applications.&lt;/p&gt;&lt;p&gt;The Metro environment is tightly linked to the desktop mode. In the current version, there&amp;rsquo;s no Start menu anymore in the desktop mode. When clicking on the Windows Orb button in the left button corner, we&amp;rsquo;re taken back to the Metro environment. So, one could say that the Metro environment is also an extended Start menu which is now capable of running applications. However, I don&amp;rsquo;t really support thinking of the Metro environment in this way.&lt;/p&gt;&lt;p&gt;Let&amp;rsquo;s now look at some typical Metro-style applications.&lt;/p&gt;&lt;h4&gt;Typical Metro-style apps&lt;/h4&gt;&lt;p&gt;With the default installation, some (small) Metro-style applications, created by Microsoft, are installed by default. Let&amp;rsquo;s open for example the News app, shown below.&lt;/p&gt;&lt;p&gt;&lt;img style="display: inline;        border-width: 0px;border-style: solid;" title="clip_image010" alt="clip_image010" src="http://www.silverlightshow.net/Storage/Users/gillcleeren/clip_image010_e5fbea7e-fb8b-4a7a-885d-220baa429e81.png" width="609" height="458" /&gt;&lt;/p&gt;&lt;p&gt;Note that this is a full-screen screenshot, I haven&amp;rsquo;t cut off anything. Several things are strikingly different from traditional applications. For one thing, they are filling the screen by default. Content is important, not the chrome of the application. The application shows no menus or toolbars by default; it&amp;rsquo;s kept very simple and easy to use. The interface itself is also optimized for touch, but can be controlled with the mouse as well.&lt;/p&gt;&lt;p&gt;When opening one of the titles, some details are shown about the post, as shown below.&lt;/p&gt;&lt;p&gt;&lt;img style="display: inline;        border-width: 0px;border-style: solid;" title="clip_image012" alt="clip_image012" src="http://www.silverlightshow.net/Storage/Users/gillcleeren/clip_image012_19d31e44-ffdd-4fb0-8e22-33c8e82d7293.png" width="609" height="458" /&gt;&lt;/p&gt;&lt;p&gt;Again, no toolbars and a very neat and clean interface, optimized for touch. &lt;/p&gt;&lt;p&gt;But how can we now go back to the overview screen? If you&amp;rsquo;re using a touch-based device, simply swipe in from the top of the screen. If using a mouse, simply right-click. Both actions will result in a so-called Application Bar to be shown at the bottom of the screen. Using the only button in this bar, we can navigate back. The application bar is customizable and we&amp;rsquo;ll see how to do so in later articles. Readers with a WP7 background will immediately recognize the application bar as well.&lt;/p&gt;&lt;p&gt;&lt;img style="display: inline;        border-width: 0px;border-style: solid;" title="clip_image014" alt="clip_image014" src="http://www.silverlightshow.net/Storage/Users/gillcleeren/clip_image014_165a4964-320f-4284-aee4-aa455839ff70.png" width="609" height="458" /&gt;&lt;/p&gt;&lt;p&gt;Let&amp;rsquo;s open another application, the Memories application, shown below.&lt;/p&gt;&lt;p&gt;&lt;img style="display: inline;        border-width: 0px;border-style: solid;" title="clip_image016" alt="clip_image016" src="http://www.silverlightshow.net/Storage/Users/gillcleeren/clip_image016_80e6a316-c1ac-4516-87d1-8d904811e1cb.png" width="609" height="458" /&gt;&lt;/p&gt;&lt;p&gt;This application as well is a beautiful example of the Metro style being used. When opening an album, we get the details.&lt;/p&gt;&lt;p&gt;&lt;img style="display: inline;        border-width: 0px;border-style: solid;" title="clip_image018" alt="clip_image018" src="http://www.silverlightshow.net/Storage/Users/gillcleeren/clip_image018_0e25e6e8-aba6-4f29-8b9c-a91656a17beb.png" width="609" height="458" /&gt;&lt;/p&gt;&lt;p&gt;And we can edit content using the Application Bar as well.&lt;/p&gt;&lt;p&gt;&lt;img style="display: inline;        border-width: 0px;border-style: solid;" title="clip_image020" alt="clip_image020" src="http://www.silverlightshow.net/Storage/Users/gillcleeren/clip_image020_8b419c95-d61c-4413-b9d4-474d7162413b.png" width="609" height="458" /&gt;&lt;/p&gt;&lt;h4&gt;Internet Explorer in Metro&lt;/h4&gt;&lt;p&gt;If you&amp;rsquo;ve taken a good look at the Metro environment screenshot, you may have noticed that there&amp;rsquo;s a tile for Internet Explorer there as well. Indeed, there&amp;rsquo;s a Metro version of IE available, again with the same characteristics as other Metro apps. This version of IE is optimized for the content so it&amp;rsquo;s not cluttered with tabs and toolbars.&lt;/p&gt;&lt;p&gt;&lt;img style="display: inline;        border-width: 0px;border-style: solid;" title="clip_image022" alt="clip_image022" src="http://www.silverlightshow.net/Storage/Users/gillcleeren/clip_image022_70651c16-2574-4737-adbc-11633cd9436d.png" width="609" height="458" /&gt;&lt;/p&gt;&lt;p&gt;This version however doesn&amp;rsquo;t support plug-ins, so it&amp;rsquo;s not possible to run Silverlight (or Flash) applications in this browser. To do so (and in line with what we said earlier), we need to go to the full browser in the desktop mode. There, a Silverlight application can run perfectly.&lt;/p&gt;&lt;p&gt;It&amp;rsquo;s possible from the Metro IE to jump to the regular version, using the following button. This effectively means that if you arrive on a Silverlight site in the Metro version of IE, you can switch to the full version on the fly.&lt;/p&gt;&lt;p&gt;&lt;img style="display: inline;        border-width: 0px;border-style: solid;" title="clip_image023" alt="clip_image023" src="http://www.silverlightshow.net/Storage/Users/gillcleeren/clip_image023_ff2a3416-3e03-4e83-bfb1-d4ba6bce7c85.png" width="172" height="185" /&gt;&lt;/p&gt;&lt;h4&gt;The Metro control panel&lt;/h4&gt;&lt;p&gt;Another nice example of the touch interface in Windows 8 Metro is the control panel.&lt;/p&gt;&lt;p&gt;&lt;img style="display: inline;        border-width: 0px;border-style: solid;" title="clip_image024" alt="clip_image024" src="http://www.silverlightshow.net/Storage/Users/gillcleeren/clip_image024_d1ed54bd-adab-4ad5-ab41-0a4c9e46c6bf.png" width="132" height="139" /&gt;&lt;/p&gt;&lt;p&gt;As can be seen from the screenshot below, the interface of this Metro control panel is optimized to be used using your fingers as input device. The control panel inside the Metro environment is specific to settings that influence the Metro environment itself. The regular control panel lives inside the Desktop mode and it gives us access to the regular settings, just like in Windows 7.&lt;/p&gt;&lt;p&gt;&lt;img style="display: inline;        border-width: 0px;border-style: solid;" title="clip_image026" alt="clip_image026" src="http://www.silverlightshow.net/Storage/Users/gillcleeren/clip_image026_2ee10c1c-672d-429c-b29f-630023273138.png" width="609" height="458" /&gt;&lt;/p&gt;&lt;h4&gt;More on the desktop mode&lt;/h4&gt;&lt;p&gt;With all the novelties being added, one might get the idea that the desktop mode isn&amp;rsquo;t being changed at all. Well, luckily that isn&amp;rsquo;t true: there are some major improvements being done in the &amp;ldquo;regular&amp;rdquo; Windows environment as well. &lt;/p&gt;&lt;p&gt;One area that&amp;rsquo;s getting an overhaul is the Windows Explorer itself. A ribbon is being added, known to millions of Office users already. Microsoft added some new actions directly to the ribbon. In the screenshot below, you can see the explorer ribbon.&lt;/p&gt;&lt;p&gt;&lt;img style="display: inline;        border-width: 0px;border-style: solid;" title="clip_image028" alt="clip_image028" src="http://www.silverlightshow.net/Storage/Users/gillcleeren/clip_image028_3.png" width="609" height="461" /&gt;&lt;/p&gt;&lt;p&gt;Just like in Office, the ribbon is context-sensitive: depending on your action or selection within the explorer window, one or more tabs might appear. In the screenshot below, you can see what happens if I select a picture.&lt;/p&gt;&lt;p&gt;&lt;img style="display: inline;        border-width: 0px;border-style: solid;" title="clip_image030" alt="clip_image030" src="http://www.silverlightshow.net/Storage/Users/gillcleeren/clip_image030_4589668f-8e89-41ec-8785-f4617e3cf7d1.png" width="609" height="239" /&gt;&lt;/p&gt;&lt;p&gt;The next screenshot shows what happens if we select a hard drive.&lt;/p&gt;&lt;p&gt;&lt;img style="display: inline;        border-width: 0px;border-style: solid;" title="clip_image032" alt="clip_image032" src="http://www.silverlightshow.net/Storage/Users/gillcleeren/clip_image032_307ae197-ec5c-4602-b3ee-aca30adf6432.png" width="609" height="210" /&gt;&lt;/p&gt;&lt;p&gt;Another item that got an overhaul is the Task Manager. Below you can see a screenshot of the new Task Manager. Notice that it&amp;rsquo;s as if some Metro-sauce has been added over the old version of the Task Manager!&lt;/p&gt;&lt;p&gt;&lt;img style="display: inline;        border-width: 0px;border-style: solid;" title="clip_image034" alt="clip_image034" src="http://www.silverlightshow.net/Storage/Users/gillcleeren/clip_image034_d7bd39d1-95e4-4204-8266-3dff7816084c.png" width="609" height="556" /&gt;&lt;/p&gt;&lt;p&gt;Take a look at the Processes tab. Notice anything in particular here?&lt;/p&gt;&lt;p&gt;&lt;img style="display: inline;        border-width: 0px;border-style: solid;" title="clip_image036" alt="clip_image036" src="http://www.silverlightshow.net/Storage/Users/gillcleeren/clip_image036_00011fef-0ab6-49b3-bfd0-aa992ad7e006.png" width="560" height="296" /&gt;&lt;/p&gt;&lt;p&gt;The Metro-apps are shown in this list as well. However, they are in a suspended state. Again, for the WP7 developers, this may seem familiar with the application lifecycle we have in WP7. Indeed, in the Metro environment, applications can remain in memory without getting access to CPU cycles. In this case, they are in the suspended state. We&amp;rsquo;ll see more about the lifecycle of Metro applications later in this series as well!&lt;/p&gt;&lt;h4&gt;Where will I be working?&lt;/h4&gt;&lt;p&gt;A question I&amp;rsquo;ve received quite a few times while presenting about Windows 8 is &amp;ldquo;Will I be working in the Desktop Mode or in the Metro environment mostly&amp;rdquo;. Like so many things in life, the answer is here again: &amp;ldquo;It depends&amp;rdquo;.&lt;/p&gt;&lt;p&gt;At this point, I reckon that if you&amp;rsquo;re working on a regular machine and you&amp;rsquo;re doing your daily job (be that working as a developer, writing in Word, making Excel sheets&amp;hellip;), you&amp;rsquo;ll default to the Desktop Mode. If however, you&amp;rsquo;re working on a tablet, the Metro environment will suite your needs better.&lt;/p&gt;&lt;p&gt;The answer to this question is however a difficult one, certainly at the time of writing where we don&amp;rsquo;t have a public beta yet. Therefore, this remains a &amp;ldquo;to be continued&amp;rdquo;!&lt;/p&gt;&lt;h3&gt;Summary&lt;/h3&gt;&lt;p&gt;In this first article, I&amp;rsquo;ve given you an overview of Windows 8, explaining you how Windows 8 contains 2 modes and shown you what exactly Metro applications are. This is just the tip of the iceberg (in fact, I think it&amp;rsquo;s even less!).&lt;/p&gt;&lt;p&gt;In the following article, we&amp;rsquo;ll start our exploration of the Windows Runtime so stay tuned! &lt;/p&gt;</description>      <link>http://www.silverlightshow.net/items/Windows-8-and-the-future-of-XAML-Part-1-An-overview-of-the-Windows-8-platform.aspx</link>      <author>editorial@silverlightshow.net (Gill Cleeren )</author>      <comments>http://www.silverlightshow.net/items/Windows-8-and-the-future-of-XAML-Part-1-An-overview-of-the-Windows-8-platform.aspx#comments</comments>      <guid isPermaLink="true">http://www.silverlightshow.net/items/Windows-8-and-the-future-of-XAML-Part-1-An-overview-of-the-Windows-8-platform.aspx</guid>      <pubDate>Tue, 03 Jan 2012 23:59:00 GMT</pubDate>    </item>    <item>      <title>Amazon Kindle Fire: Return to sender</title>      <category>blogging</category>      <category>silverlight</category>      <category>tech stuff</category>      <category>ux</category>      <link>http://feeds.timheuer.com/~r/timheuer/~3/NBRNQp9OroU/returned-my-amazon-kindle-fire.aspx</link>      <description>&lt;p&gt;I wanted to believe, I really did.  It has been over a month since my &lt;a href="http://timheuer.com/blog/archive/2011/11/16/amazon-kindle-fire-review-first-impressions.aspx"&gt;first impressions of the Amazon Kindle Fire&lt;/a&gt;.  Over the holidays, I processed a return for my &lt;a href="http://www.amazon.com/gp/product/B0051VVOB2/ref=as_li_ss_tl?ie=UTF8&amp;amp;tag=meoffa-20&amp;amp;linkCode=as2&amp;amp;camp=217145&amp;amp;creative=399373&amp;amp;creativeASIN=B0051VVOB2"&gt;Kindle Fire&lt;/a&gt;.  When the Fire was announced I was intrigued and excited as I thought that Amazon had the real potential to make a great product and the customer base to capitalize on that potential.  For me, it just didn’t live up to the hype.  I’ll stress that last sentence…this is &lt;strong&gt;my opinion based on my experiences/desires&lt;/strong&gt;.  As with anything in life, your mileage may vary.&lt;/p&gt;  &lt;h2&gt;So what went wrong?&lt;/h2&gt;  &lt;p&gt;I used the Fire a lot.  I watched videos on it daily (my evening ritual of getting caught up on TV) via Netflix and Hulu apps.  I rented about 10 movies via Amazon on the device.  For video, it was great.  For everything else, it was pretty much frustrating for me.  I’ve been able to isolate it to a few areas: apps, user experience, prejudice.&lt;/p&gt;  &lt;h2&gt;Apps&lt;/h2&gt;  &lt;p&gt;I downloaded the free daily app from the Amazon Android store daily…and ended up with a device full of sub-standard products mostly.  The Hulu app really was the only 3rd party one that I felt was designed for the Fire and did most things well.  Even then it had quirks, but mostly it was fine.  Netflix’s app is horrible, lagging, confusing and not enjoyable to use before you get to the playing content.  Most other apps just weren’t doing anything for me.&lt;/p&gt;  &lt;p&gt;The lack of a Mail solution *provided by the device* for my mail configuration led to a decreased usage in the device to me.  The responsiveness in the games that I acquired was just not there as well.  Overall I felt the only “app” I was using was video playback.  Everything else wasn’t cutting it…even the Kindle reading app was just too bright for me for long periods of reading.&lt;/p&gt;  &lt;h2&gt;User Experience&lt;/h2&gt;  &lt;p&gt;Large area of failure here for me.  Here’s my list of areas that lacked polish and just failed:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Hardware home button – I’m realizing how important this really is.  My kids couldn’t figure out how to get back to the ‘start’ screen.  On the iPad, they know immediately.&lt;/li&gt;    &lt;li&gt;Software ‘home bar’ (not sure what to call it) sometimes appeared, sometimes didn’t.&lt;/li&gt;    &lt;li&gt;Touch responsiveness – I felt like I had to do gestures multiple times to get it to respond.  The first update was said to fix some of this, but it didn’t do anything noticeable for my use.&lt;/li&gt;    &lt;li&gt;Touch feedback – I know this seems odd, but there were times I couldn’t tell if I had actually completed a touch interaction…visual state changes didn’t happen, etc.&lt;/li&gt;    &lt;li&gt;Orientation changing – general inconsistency here in what was supported or not within the own set of experiences delivered by the Fire.  But the transition from one orientation to another was jarring, like a snap rather than a smooth transition.&lt;/li&gt;    &lt;li&gt;Apps experience – no consistency.  I’m not looking for &lt;em&gt;lets-make-every-app-the-same&lt;/em&gt; consistency, but as a user there was know real reliability in controls usage, visuals, responsiveness, action expectations, etc.  This is the good/bad of the Android platform – ultimate freedom but at the price of confusion and quality sometimes.&lt;/li&gt;    &lt;li&gt;Application lifetime – the management of the state of an application was horrible for an end-user.  The parts of Android really showed through here.  I would occasionally get “not responding” windows in an application or when trying to start one.  These types of things do not pass the mother-in-law sniff test for me.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;These were some of the things that &lt;em&gt;continually&lt;/em&gt; frustrated me.  There were other nits, but not always in my face.  &lt;/p&gt;  &lt;h2&gt;Prejudice&lt;/h2&gt;  &lt;p&gt;Aside from any technical reasons the biggest factor for my return is prejudice.  Don’t get me wrong, I love Amazon.  I’m a Prime member, and only get my purchased digital media from them (i.e., video rentals and MP3).  They have great service offerings and catalog of goods.  These are all the reasons I thought they could execute well out-of-the-gate with the Fire.&lt;/p&gt;  &lt;p&gt;However, I also have an iPad.&lt;/p&gt;  &lt;p&gt;Make no mistake about it: if you use an iPad for the same amount of time you use a Kindle Fire, you will likely share the same experience that the iPad just is an all-around better product currently.  Now the media (and users like myself) are the ones drawing the comparisons of the Fire to an iPad.  Amazon itself hasn’t done any comparisons side-by-side or even remotely close.  They have never marketed (to my knowledge) the Fire as an iPad competitor.  But that doesn’t matter…because consumers rule the world and we have already drawn that conclusion.  Bottom line is that if you are making a touch device I can travel with that has media and a store where I can get application and content – you’re competing with the iPad.&lt;/p&gt;  &lt;p&gt;Since I already am an iPad user I could not erase the experience that I have with my iPad when using the Fire.  All my user experience annoyances around touch are because it is just better on the iPad.  If I didn’t have an iPad, maybe my perception would be hugely different.  But since I have one, my prejudice is set and the comparison bar as well.&lt;/p&gt;  &lt;h2&gt;Holiday gift taste test&lt;/h2&gt;  &lt;p&gt;When I arrived to the in-laws for the holidays they mentioned they were getting my wife’s ~80yr old (*very* active) grandmother a Kindle Fire because that is what she wanted.  I shirked a bit (and probably commented too much) at the idea and told them I didn’t think this was a good idea.  GG (as we call her since she has 12 great-grandchildren) is not technically savvy and has never had anything remotely considered “new tech” in her life.  I knew that it would fall on me to be the resident &lt;a href="http://en.wikipedia.org/wiki/Nick_Burns,_Your_Company%27s_Computer_Guy#Nick_Burns.2C_Your_Company.27s_Computer_Guy"&gt;Nick Burns&lt;/a&gt; and trainer for the holiday week.  And the time did come where I had to do that.  It went something like this *before* we started configuring her Fire…&lt;/p&gt;  &lt;p&gt;Me: GG, why do you want a Fire?   &lt;br /&gt;GG: I want to get ‘with the times’ and this seems to be a hot item.    &lt;br /&gt;Me: Do you have an Amazon account or have ever bought anything on Amazon?    &lt;br /&gt;GG: No, never.  Can’t I put books on it?    &lt;br /&gt;Me: Yes, but where do you plan on getting those books?    &lt;br /&gt;GG: Can’t I get them anywhere?    &lt;br /&gt;Me: No, you’ll be buying them through Amazon.&lt;/p&gt;  &lt;p&gt;NOTE: I didn’t want to explain that &lt;em&gt;technically&lt;/em&gt; you could put other publications on there as I knew that would be an action never accomplished.&lt;/p&gt;  &lt;p&gt;GG: You mean I can’t get something from Barnes and Noble and put it on my Fire?   &lt;br /&gt;Me: No.  But why would you, Amazon has a massive content library.    &lt;br /&gt;GG: Well, that seems monopolistic.  What about movies?    &lt;br /&gt;Me: Yep, you can get movies, but through Amazon.    &lt;br /&gt;Me: Most of the time anything you put on there you will be buying from Amazon&lt;/p&gt;  &lt;p&gt;This point seemed to have been lost on GG when desiring this device.  Regardless we proceeded with the setup.  Now since the device was purchased from the mother-in-law, when powered on it was attached to her account and we had to set up a new account for GG.  This was going to be fun, I thought.&lt;/p&gt;  &lt;p&gt;The first step was to create an Amazon account since she didn’t have one.  The first screen on the Fire to do this asks for 4 simple bits of information: email, username, password, password confirmation.  This was the first introduction GG had to a software keyboard and it did not go well.  The first mistake made was to “press” the keyboard and I had to educate that &lt;em&gt;click, press, push&lt;/em&gt; are no longer useful but rather &lt;em&gt;tap, swipe, tap+hold&lt;/em&gt; are the new ways she needed to think.  This took some training as she continually hit wrong keys, held the key too long which produced duplicates, etc.  I am not sure if it was her bifocals or what but GG was continually ‘off by 1’ on the keyboard and we had many times to The password field was the hardest because it obfuscated the letter after typing it, providing minimal visual time to see if what was typed was correct.  Now I timed this exercise myself so I could see how long this really took.  With no exaggeration the time to complete this screen was about 30 minutes.  The password/re-enter password took up most of that time.  The next screen was address information…to which I offered to enter this data for her :-).  After that was credit card data.&lt;/p&gt;  &lt;p&gt;GG: Why do they need my credit card?   &lt;br /&gt;Me: How do you plan on buying anything, money order?&lt;/p&gt;  &lt;p&gt;In seriousness, this pointed to a generational gap of this concept of stored account information for one-click purchasing that is available on things like Amazon, Apple, anywhere.&lt;/p&gt;  &lt;p&gt;We moved on to a review of the Fire and notable me mentioning that the user guide itself was a Kindle book.  This did not please GG as she was used to a manual.  Since she is a Scrabble lover and other folks in the house were playing Words with Friends, we downloaded that app, set her up an account, and taught her how to play that.  Again, the touch interaction here was painful to watch.&lt;/p&gt;  &lt;p&gt;My bottom line for sharing this anecdote is that I don’t think the Fire is an every-generation device.  Contrast that to the iPad, where I think she would have had a much better on-boarding experience.  I left GG alone for the day with her device and the next day she shared her frustration that things didn’t seem to work and it was hard to use the touch keyboard and understand what to do.  Now I can easily (and will) chalk this up to a generational thing and a first-time ‘device’ user in GG.  However, it pointed to a fact to me that the Fire is only for a class of folks who are familiar with computers in a more-than-one-time-usage manner.&lt;/p&gt;  &lt;h2&gt;Summary&lt;/h2&gt;  &lt;p&gt;I will stress that again, &lt;strong&gt;for me&lt;/strong&gt;, the Kindle Fire was a bust.  I still faithfully &lt;a href="http://timheuer.com/blog/archive/2010/08/27/comparing-kindle-3-to-kindle-2-recommendation-review.aspx"&gt;have my own Kindle reader&lt;/a&gt; which I will still hail as the ultimate in reading devices (and think that is what GG should exchange her Fire for).  The Fire, in current form, however is a bust in my opinion.  I think Amazon *can* get this right if they put some muscle behind it and tighten up the Android edges that show and concentrate a little more on experience refinement.  I absolutely loved the size of the device (hoping Apple takes note) and think that in a few versions they might get it right.&lt;/p&gt;  &lt;p&gt;But for now, the Kindle Fire has been returned…and with a great customer service policy, my money fully refunded, satisfaction guaranteed.   &lt;/p&gt;&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:30309099-3035-4f3b-a0fa-2d9f588eef84" class="wlWriterEditableSmartContent"&gt;&lt;span class="tags"&gt;tags: &lt;a href="http://timheuer.com/blog/Tags/kindle/default.aspx" rel="tag"&gt;kindle&lt;/a&gt;, &lt;a href="http://timheuer.com/blog/Tags/kindle+fire/default.aspx" rel="tag"&gt;kindle fire&lt;/a&gt;, &lt;a href="http://timheuer.com/blog/Tags/fire/default.aspx" rel="tag"&gt;fire&lt;/a&gt;, &lt;a href="http://timheuer.com/blog/Tags/amazon/default.aspx" rel="tag"&gt;amazon&lt;/a&gt;, &lt;a href="http://timheuer.com/blog/Tags/ipad/default.aspx" rel="tag"&gt;ipad&lt;/a&gt;, &lt;a href="http://timheuer.com/blog/Tags/ipod/default.aspx" rel="tag"&gt;ipod&lt;/a&gt;, &lt;a href="http://timheuer.com/blog/Tags/apple/default.aspx" rel="tag"&gt;apple&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="wlWriterHeaderFooter" style="margin:0px; padding:0px 0px 0px 0px;"&gt;&lt;hr /&gt;&lt;div class="cc-license"&gt;This work is licensed under a &lt;a href="http://creativecommons.org/licenses/by/3.0/"&gt;Creative Commons Attribution By license.&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://timheuer.com/blog/aggbug/14821.aspx" width="1" height="1" /&gt;&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/4JXbCvW516Co0HmRnH37WktX-qs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4JXbCvW516Co0HmRnH37WktX-qs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/4JXbCvW516Co0HmRnH37WktX-qs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4JXbCvW516Co0HmRnH37WktX-qs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/timheuer/~4/NBRNQp9OroU" height="1" width="1"/&gt;</description>      <creator xmlns="http://purl.org/dc/elements/1.1/">Tim Heuer</creator>      <guid isPermaLink="false">http://timheuer.com/blog/archive/2012/01/03/returned-my-amazon-kindle-fire.aspx</guid>      <pubDate>Tue, 03 Jan 2012 18:10:39 GMT</pubDate>      <comments>http://timheuer.com/blog/archive/2012/01/03/returned-my-amazon-kindle-fire.aspx#feedback</comments>      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">13</comments>      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://timheuer.com/blog/comments/commentRss/14821.aspx</commentRss>      <ping xmlns="http://madskills.com/public/xml/rss/module/trackback/">http://timheuer.com/blog/services/trackbacks/14821.aspx</ping>      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://timheuer.com/blog/archive/2012/01/03/returned-my-amazon-kindle-fire.aspx</origLink>    </item>    <item>      <title>Vibrating the phone</title>      <link>http://feedproxy.google.com/~r/JesseLiberty-SilverlightGeek/~3/i_5oxPrr7BY/</link>      <comments>http://jesseliberty.com/2012/01/03/vibrating-the-phone/#comments</comments>      <pubDate>Tue, 03 Jan 2012 17:31:15 +0000</pubDate>      <creator xmlns="http://purl.org/dc/elements/1.1/">Jesse Liberty</creator>      <category><![CDATA[Essentials]]></category>      <category><![CDATA[Mango]]></category>      <category><![CDATA[Mini-Tutorial]]></category>      <category><![CDATA[WindowsPhone]]></category>      <guid isPermaLink="false">http://jesseliberty.com/?p=5158</guid>      <encoded xmlns="http://purl.org/rss/1.0/modules/content/"><![CDATA[Windows Phone Tutorial A little vibration added to your application can be just the haptic feedback needed. It turns out that vibration is absurdly easy to add; so much so that discussions of adding vibration typically come with the caveat &#8230; Continue reading &#8594;<br/><br/>For the complete article and hyperlinks, please visit my blog at http://JesseLiberty.com<div class="feedflare"><a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=i_5oxPrr7BY:J1RK4g3HPHI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=i_5oxPrr7BY:J1RK4g3HPHI:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=i_5oxPrr7BY:J1RK4g3HPHI:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?i=i_5oxPrr7BY:J1RK4g3HPHI:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=i_5oxPrr7BY:J1RK4g3HPHI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?i=i_5oxPrr7BY:J1RK4g3HPHI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=i_5oxPrr7BY:J1RK4g3HPHI:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?i=i_5oxPrr7BY:J1RK4g3HPHI:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=i_5oxPrr7BY:J1RK4g3HPHI:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?d=qj6IDK7rITs" border="0"></img></a></div><img src="http://feeds.feedburner.com/~r/JesseLiberty-SilverlightGeek/~4/i_5oxPrr7BY" height="1" width="1"/>]]></encoded>      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://jesseliberty.com/2012/01/03/vibrating-the-phone/feed/</commentRss>      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">2</comments>      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://jesseliberty.com/2012/01/03/vibrating-the-phone/</origLink>    </item>    <item>      <title>Moving UIElements around in Metro</title>      <link>http://geekswithblogs.net/WynApseTechnicalMusings/archive/2012/01/02/148221.aspx</link>      <description>&lt;font face="tahoma"&gt;I'm playing with some code for the &lt;a href="https://buildwindowscontest.com/"&gt;&lt;u&gt;First Apps Contest&lt;/u&gt;&lt;/a&gt;, and since I had to dig some of this out, I thought maybe others might be interested. Was just thinking that ratting through documentation and trying to make stuff work is very reminiscent of WPF/E back in... holy crap... December 2006... doesn't seem like 5 years ago!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Where to start&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;I figured the easiest thing to do would be to put a circle on the screen and move it around. This has *got* to be easier than drag/drop, right?&lt;br /&gt;&lt;br /&gt;Well yes it is, but as with most things you gotta figure out where to poke it to make it work, and of course I got involved in other stuff so I made it a bit tougher than I needed. I called this "Application3", and it's like the &lt;a href="http://www.wynapse.com/Metro/SecondMetroApp.aspx"&gt;&lt;u&gt;last one&lt;/u&gt;&lt;/a&gt; except I'm not doing a snap pane on this one.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.wynapse.com/Metro/MovingUiElementsAroundInMetro.aspx"&gt;&lt;u&gt;Read on...&lt;/u&gt;&lt;/a&gt;&lt;/font&gt; &lt;img src="http://geekswithblogs.net/WynApseTechnicalMusings/aggbug/148221.aspx" width="1" height="1" /&gt;</description>      <creator xmlns="http://purl.org/dc/elements/1.1/">Dave Campbell</creator>      <guid>http://geekswithblogs.net/WynApseTechnicalMusings/archive/2012/01/02/148221.aspx</guid>      <pubDate>Tue, 03 Jan 2012 00:36:35 GMT</pubDate>      <comment xmlns="http://wellformedweb.org/CommentAPI/">http://geekswithblogs.net/WynApseTechnicalMusings/comments/148221.aspx</comment>      <comments>http://geekswithblogs.net/WynApseTechnicalMusings/archive/2012/01/02/148221.aspx#feedback</comments>      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://geekswithblogs.net/WynApseTechnicalMusings/comments/commentRss/148221.aspx</commentRss>      <ping xmlns="http://madskills.com/public/xml/rss/module/trackback/">http://geekswithblogs.net/WynApseTechnicalMusings/services/trackbacks/148221.aspx</ping>    </item>    <item>      <title>New MVVM Light templates with bug fixes</title>      <link>http://geekswithblogs.net/lbugnion/archive/2012/01/02/new-mvvm-light-templates-with-bug-fixes.aspx</link>      <description>&lt;p&gt;The current version of MVVM Light had a couple of issues in the project templates. The most annoying one was causing a problem when creating new projects: The GUIDs used to uniquely identify the project were in fact not re-generated properly every time, and we ended up with the same GUID in every new project. The symptoms are the following: If you side-load an MVVM Light application, and then side-load another one, you will see that the first one is overwritten. Note however that &lt;strong&gt;this is only an issue when side-loading applications&lt;/strong&gt;: The GUIDs are properly re-generated and overwritten by Microsoft during the app approval process.&lt;/p&gt;  &lt;p&gt;This was not really an issue with WPF and Silverlight applications (which is why the bug was never found until now), however the Windows Phone uses these GUIDs to check if the application is already installed on the Windows Phone device or not. &lt;/p&gt;  &lt;p&gt;I also took this occasion to update the templates with some information in the AssemblyInfo.cs, so that should make it even easier to fill the assembly information.&lt;/p&gt;  &lt;p&gt;I just published a new MSI that corrects the issue. You can install the new MSI on top of the existing one. As usual, there is an MSI for &lt;a href="http://mvvmlight.codeplex.com/releases/view/71278"&gt;MVVM Light V3&lt;/a&gt; and one for &lt;a href="http://mvvmlight.codeplex.com/releases/view/73208"&gt;MVVM Light V4 beta&lt;/a&gt;.&lt;/p&gt;  &lt;h2&gt;Fixing the issue in existing applications&lt;/h2&gt;  &lt;p&gt;If you encounter this issue in existing application, you can use the following steps to correct it. Note that I recommend you to follow these steps for every MVVM Light application.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Start the GUID generator installed with Visual Studio (open the Start menu and type GUID to find it). &lt;/li&gt;    &lt;li&gt;In the GUID generator, select the Registry Format. &lt;/li&gt;    &lt;li&gt;Press the New GUID button and then the Copy button. &lt;/li&gt; &lt;/ul&gt; &lt;a title="GUID generator" href="http://www.flickr.com/photos/36917929@N06/6621147243/"&gt;&lt;img alt="2011010201" src="http://farm8.staticflickr.com/7156/6621147243_e4dc1db068_o.png" width="403" height="424" /&gt;&lt;/a&gt;   &lt;ul&gt;   &lt;li&gt;Open the CSPROJ file in Notepad (or any text editor). &lt;/li&gt;    &lt;li&gt;Locate the &amp;lt;ProjectGuid&amp;gt; attribute. &lt;/li&gt;    &lt;li&gt;Select its content and paste the GUID you previously copied. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;For Windows Phone projects only, in addition:&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;In the GUID generator, press the New GUID button and then the Copy button. &lt;/li&gt;    &lt;li&gt;Open the file WMAppManifest.xml (in the Properties folder). &lt;/li&gt;    &lt;li&gt;Find the ProductID attribute and replace its content with the GUID you previously copied. &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Projects exposed to COM&lt;/h3&gt;  &lt;p&gt;Some project also have a GUID in the AssemblyInfo.cs. Open this file in Visual Studio or in Notepad and check if you can see a GUID there. If there is one, copy a new GUID from the GUID generator and replace the old one with the one you just copied. Be careful to remove the opening ‘{‘ and closing ‘}’.&lt;/p&gt;  &lt;h2&gt;That’s it&lt;/h2&gt;  &lt;p&gt;Apologies for this bug, and thanks to everyone who reported it and helped make MVVM Light better.&lt;/p&gt;  &lt;p&gt;Cheers,    &lt;br /&gt;Laurent&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div style="margin-bottom: -1em"&gt;   &lt;div style="vertical-align: middle"&gt;&lt;a href="http://www.galasoft.ch/"&gt;&lt;img title="GalaSoft Laurent Bugnion" alt="GalaSoft Laurent Bugnion" src="http://www.galasoft.ch/logo/Current/logo_120x30.png" /&gt;&lt;/a&gt; &lt;/div&gt;    &lt;div style="position: relative; left: 130px; top: -36px"&gt;&lt;strong&gt;&lt;a href="http://www.galasoft.ch/contact_en.html"&gt;Laurent Bugnion (GalaSoft)&lt;/a&gt;&lt;/strong&gt;       &lt;br /&gt;&lt;a href="http://feeds.feedburner.com/galasoft"&gt;Subscribe&lt;/a&gt; | &lt;a href="http://twitter.com/lbugnion"&gt;Twitter&lt;/a&gt; | &lt;a href="http://www.facebook.com/lbugnion"&gt;Facebook&lt;/a&gt; | &lt;a href="http://www.flickr.com/photos/lbugnion"&gt;Flickr&lt;/a&gt; | &lt;a href="http://www.linkedin.com/in/lbugnion"&gt;LinkedIn&lt;/a&gt;       &lt;br /&gt;&lt;iframe style="border-top-style: none; margin-bottom: -20px; height: 23px; width: 450px; border-bottom-style: none; overflow: hidden; border-right-style: none; border-left-style: none; margin-top: 7px" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.galasoft.ch/archive/2012/01/02/new-mvvm-light-templates-with-bug-fixes.aspx&amp;amp;layout=standard&amp;amp;show_faces=true&amp;amp;width=450&amp;amp;action=like&amp;amp;colorscheme=light" frameborder="0" allowtransparency="allowtransparency" scrolling="no"&gt;&lt;/iframe&gt;&lt;/div&gt; &lt;/div&gt; &lt;img src="http://geekswithblogs.net/lbugnion/aggbug/148217.aspx" width="1" height="1" /&gt;</description>      <creator xmlns="http://purl.org/dc/elements/1.1/">Laurent Bugnion</creator>      <guid>http://geekswithblogs.net/lbugnion/archive/2012/01/02/new-mvvm-light-templates-with-bug-fixes.aspx</guid>      <pubDate>Mon, 02 Jan 2012 20:13:28 GMT</pubDate>      <comment xmlns="http://wellformedweb.org/CommentAPI/">http://geekswithblogs.net/lbugnion/comments/148217.aspx</comment>      <comments>http://geekswithblogs.net/lbugnion/archive/2012/01/02/new-mvvm-light-templates-with-bug-fixes.aspx#feedback</comments>      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://geekswithblogs.net/lbugnion/comments/commentRss/148217.aspx</commentRss>      <ping xmlns="http://madskills.com/public/xml/rss/module/trackback/">http://geekswithblogs.net/lbugnion/services/trackbacks/148217.aspx</ping>    </item>    <item>      <title>Binding Formatting</title>      <link>http://feedproxy.google.com/~r/JesseLiberty-SilverlightGeek/~3/darvONxKku4/</link>      <comments>http://jesseliberty.com/2011/12/29/binding-formatting/#comments</comments>      <pubDate>Thu, 29 Dec 2011 17:48:15 +0000</pubDate>      <creator xmlns="http://purl.org/dc/elements/1.1/">Jesse Liberty</creator>      <category><![CDATA[Data]]></category>      <category><![CDATA[Essentials]]></category>      <category><![CDATA[Mango]]></category>      <category><![CDATA[Mini-Tutorial]]></category>      <category><![CDATA[WindowsPhone]]></category>      <guid isPermaLink="false">http://jesseliberty.com/?p=5154</guid>      <encoded xmlns="http://purl.org/rss/1.0/modules/content/"><![CDATA[Windows Phone Tutorial When you are binding data there are additional properties that allow you to format the display and to handle errors and null values. The StringFormat property allows you to add any standard .NET format string that matches &#8230; Continue reading &#8594;<br/><br/>For the complete article and hyperlinks, please visit my blog at http://JesseLiberty.com<div class="feedflare"><a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=darvONxKku4:2Je63Wuxfvk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=darvONxKku4:2Je63Wuxfvk:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=darvONxKku4:2Je63Wuxfvk:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?i=darvONxKku4:2Je63Wuxfvk:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=darvONxKku4:2Je63Wuxfvk:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?i=darvONxKku4:2Je63Wuxfvk:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=darvONxKku4:2Je63Wuxfvk:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?i=darvONxKku4:2Je63Wuxfvk:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=darvONxKku4:2Je63Wuxfvk:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?d=qj6IDK7rITs" border="0"></img></a></div><img src="http://feeds.feedburner.com/~r/JesseLiberty-SilverlightGeek/~4/darvONxKku4" height="1" width="1"/>]]></encoded>      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://jesseliberty.com/2011/12/29/binding-formatting/feed/</commentRss>      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">3</comments>      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://jesseliberty.com/2011/12/29/binding-formatting/</origLink>    </item>    <item>      <title>One Month in... and things change...</title>      <link>http://geekswithblogs.net/WynApseTechnicalMusings/archive/2011/12/27/148149.aspx</link>      <description>		&lt;font face="tahoma"&gt;One month in...&lt;br /&gt;&lt;br /&gt;Well, it's been a month on the &lt;a href="http://www.windowsdevnews.com"&gt;&lt;u&gt;new site&lt;/u&gt;&lt;/a&gt; now. &lt;br /&gt;&lt;br /&gt;I guess at first I thought everyone would just start following the new feed and the traffic would magically appear at WDN, but I still saw a lot of folks hitting GWB, presumably looking for good Silverlight links. &lt;br /&gt;&lt;br /&gt;So I announced my postings at GWB to not leave anyone out of the loop.&lt;br /&gt;&lt;br /&gt;And now I find that's annoyed some people... sorry about that!&lt;br /&gt;&lt;br /&gt;I can't see cross-posting the posts completely, so you'll just have to go to the new site to see them I guess.&lt;br /&gt;&lt;br /&gt;SilverlightCream.com is still up and still growing with every post. The aggregation there can be searched as always and if you have a driving desire to submit there vs submitting to WindowsDevNews, I'm still getting those emails.&lt;br /&gt;&lt;br /&gt;When I blog, I am posting links to &lt;a href="http://twitter.com/SilverlightNews"&gt;&lt;u&gt;@SilverlightNews&lt;/u&gt;&lt;/a&gt; in addition to &lt;a href="http://twitter.com/windowsdevnews"&gt;&lt;u&gt;@WindowsDevNews&lt;/u&gt;&lt;/a&gt;, at least for now.&lt;br /&gt;&lt;br /&gt;I am also still blogging all the links I was blogging before, the difference is now I'm also blogging other stuff as well.&lt;br /&gt;&lt;br /&gt;The only real thing *YOU* need to change is the &lt;a href="http://feeds.feedburner.com/WindowsDevNews"&gt;&lt;u&gt;Feed location&lt;/u&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I'm not giving up this blog, I will announce new things as I go, and the history is here to be viewed.&lt;br /&gt;&lt;br /&gt;As everyone is aware, some things have changed, and that causes other changes.&lt;br /&gt;&lt;br /&gt;&lt;font color="blue"&gt;&lt;b&gt;Stay in the 'Light!&lt;/b&gt;&lt;/font&gt;&lt;/font&gt; &lt;img src="http://geekswithblogs.net/WynApseTechnicalMusings/aggbug/148149.aspx" width="1" height="1" /&gt;</description>      <creator xmlns="http://purl.org/dc/elements/1.1/">Dave Campbell</creator>      <guid>http://geekswithblogs.net/WynApseTechnicalMusings/archive/2011/12/27/148149.aspx</guid>      <pubDate>Tue, 27 Dec 2011 20:16:42 GMT</pubDate>      <comment xmlns="http://wellformedweb.org/CommentAPI/">http://geekswithblogs.net/WynApseTechnicalMusings/comments/148149.aspx</comment>      <comments>http://geekswithblogs.net/WynApseTechnicalMusings/archive/2011/12/27/148149.aspx#feedback</comments>      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">2</comments>      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://geekswithblogs.net/WynApseTechnicalMusings/comments/commentRss/148149.aspx</commentRss>      <ping xmlns="http://madskills.com/public/xml/rss/module/trackback/">http://geekswithblogs.net/WynApseTechnicalMusings/services/trackbacks/148149.aspx</ping>    </item>    <item>      <title> Windows Dev News for December 26, 2011 - 2 - #0017</title>      <link>http://geekswithblogs.net/WynApseTechnicalMusings/archive/2011/12/26/148143.aspx</link>      <description>		&lt;font face="tahoma"&gt;My latest post is up... check it out at &lt;a href="http://windowsdevnews.com/Blogs.aspx?ID=32"&gt;&lt;u&gt;WindowsDevNews&lt;/u&gt;&lt;/a&gt;&lt;/font&gt; &lt;img src="http://geekswithblogs.net/WynApseTechnicalMusings/aggbug/148143.aspx" width="1" height="1" /&gt;</description>      <creator xmlns="http://purl.org/dc/elements/1.1/">Dave Campbell</creator>      <guid>http://geekswithblogs.net/WynApseTechnicalMusings/archive/2011/12/26/148143.aspx</guid>      <pubDate>Tue, 27 Dec 2011 03:28:54 GMT</pubDate>      <comment xmlns="http://wellformedweb.org/CommentAPI/">http://geekswithblogs.net/WynApseTechnicalMusings/comments/148143.aspx</comment>      <comments>http://geekswithblogs.net/WynApseTechnicalMusings/archive/2011/12/26/148143.aspx#feedback</comments>      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://geekswithblogs.net/WynApseTechnicalMusings/comments/commentRss/148143.aspx</commentRss>      <ping xmlns="http://madskills.com/public/xml/rss/module/trackback/">http://geekswithblogs.net/WynApseTechnicalMusings/services/trackbacks/148143.aspx</ping>    </item>    <item>      <title>Windows Dev News for December 26, 2011 - #0016</title>      <link>http://geekswithblogs.net/WynApseTechnicalMusings/archive/2011/12/26/148141.aspx</link>      <description>		&lt;font face="tahoma"&gt;My latest post is up... check it out at &lt;a href="http://windowsdevnews.com/Blogs.aspx?ID=31"&gt;&lt;u&gt;WindowsDevNews&lt;/u&gt;&lt;/a&gt;&lt;/font&gt; &lt;img src="http://geekswithblogs.net/WynApseTechnicalMusings/aggbug/148141.aspx" width="1" height="1" /&gt;</description>      <creator xmlns="http://purl.org/dc/elements/1.1/">Dave Campbell</creator>      <guid>http://geekswithblogs.net/WynApseTechnicalMusings/archive/2011/12/26/148141.aspx</guid>      <pubDate>Mon, 26 Dec 2011 17:15:02 GMT</pubDate>      <comment xmlns="http://wellformedweb.org/CommentAPI/">http://geekswithblogs.net/WynApseTechnicalMusings/comments/148141.aspx</comment>      <comments>http://geekswithblogs.net/WynApseTechnicalMusings/archive/2011/12/26/148141.aspx#feedback</comments>      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://geekswithblogs.net/WynApseTechnicalMusings/comments/commentRss/148141.aspx</commentRss>      <ping xmlns="http://madskills.com/public/xml/rss/module/trackback/">http://geekswithblogs.net/WynApseTechnicalMusings/services/trackbacks/148141.aspx</ping>    </item>    <item>      <title>Windows Dev News for December 24, 2011 - #0015</title>      <link>http://geekswithblogs.net/WynApseTechnicalMusings/archive/2011/12/24/148132.aspx</link>      <description>		&lt;font face="tahoma"&gt;My latest post is up... check it out at &lt;a href="http://windowsdevnews.com/Blogs.aspx?ID=30"&gt;&lt;u&gt;WindowsDevNews&lt;/u&gt;&lt;/a&gt;&lt;/font&gt; &lt;img src="http://geekswithblogs.net/WynApseTechnicalMusings/aggbug/148132.aspx" width="1" height="1" /&gt;</description>      <creator xmlns="http://purl.org/dc/elements/1.1/">Dave Campbell</creator>      <guid>http://geekswithblogs.net/WynApseTechnicalMusings/archive/2011/12/24/148132.aspx</guid>      <pubDate>Sat, 24 Dec 2011 21:23:51 GMT</pubDate>      <comment xmlns="http://wellformedweb.org/CommentAPI/">http://geekswithblogs.net/WynApseTechnicalMusings/comments/148132.aspx</comment>      <comments>http://geekswithblogs.net/WynApseTechnicalMusings/archive/2011/12/24/148132.aspx#feedback</comments>      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://geekswithblogs.net/WynApseTechnicalMusings/comments/commentRss/148132.aspx</commentRss>      <ping xmlns="http://madskills.com/public/xml/rss/module/trackback/">http://geekswithblogs.net/WynApseTechnicalMusings/services/trackbacks/148132.aspx</ping>    </item>    <item>      <title>SilverlightShow Top 5 for December 12 - 18, 2011</title>      <link>http://geekswithblogs.net/WynApseTechnicalMusings/archive/2011/12/22/148116.aspx</link>      <description>		&lt;font face="tahoma"&gt;Check out the Top Five most popular news at SilverlightShow for &lt;a href="http://windowsdevnews.com/Blogs.aspx?ID=29"&gt;&lt;u&gt;December 12 - 18 , 2011&lt;/u&gt;&lt;/a&gt;&lt;/font&gt; &lt;img src="http://geekswithblogs.net/WynApseTechnicalMusings/aggbug/148116.aspx" width="1" height="1" /&gt;</description>      <creator xmlns="http://purl.org/dc/elements/1.1/">Dave Campbell</creator>      <guid>http://geekswithblogs.net/WynApseTechnicalMusings/archive/2011/12/22/148116.aspx</guid>      <pubDate>Fri, 23 Dec 2011 05:09:29 GMT</pubDate>      <comment xmlns="http://wellformedweb.org/CommentAPI/">http://geekswithblogs.net/WynApseTechnicalMusings/comments/148116.aspx</comment>      <comments>http://geekswithblogs.net/WynApseTechnicalMusings/archive/2011/12/22/148116.aspx#feedback</comments>      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://geekswithblogs.net/WynApseTechnicalMusings/comments/commentRss/148116.aspx</commentRss>      <ping xmlns="http://madskills.com/public/xml/rss/module/trackback/">http://geekswithblogs.net/WynApseTechnicalMusings/services/trackbacks/148116.aspx</ping>    </item>    <item>      <title>Knockout 2.0.0 is Available</title>      <link>http://feeds.johnpapa.net/~r/JohnPapa/~3/MwYicNC9G7c/kov2RTW</link>      <description>&lt;p&gt;&lt;a href="http://www.knockoutjs.com"&gt;Knockout 2.0.0&lt;/a&gt; was released last night to the web! You might have been tinkering with the 1.3.0 RC recently, but it has been renamed to 2.0.0. Steve lists a few reasons why he went this route and I fully support the decision to jump to a new major version number. If you look inside to see what he added and changed for KO v2.0.0 you will see a pretty dramatic and powerful set of improvements.&lt;/p&gt; &lt;p&gt;I have to thank Steve for creating and keeping up with the community requests for KO. He has been especially helpful to me in creating my upcoming series in MSDN Magazine on Knockout and my &lt;a href="http://www.pluralsight-training.net/microsoft/"&gt;Pluralsight&lt;/a&gt; course, both of which should be out starting in February and are updated for KO 2, so please keep an eye out for them!&lt;/p&gt; &lt;p&gt;First let’s cover the important links, then let’s hit some of the best new features.&lt;/p&gt; &lt;p&gt;Links that have been fully updated for Knockout 2.0.0 are the &lt;a href="https://github.com/SteveSanderson/knockout/downloads"&gt;builds on GitHub&lt;/a&gt;, the &lt;a href="http://learn.knockoutjs.com/"&gt;tutorials&lt;/a&gt; , and the &lt;a href="http://knockoutjs.com/documentation/introduction.html"&gt;documentation and live examples&lt;/a&gt; . And of course, &lt;a href="http://blog.stevensanderson.com/2011/12/21/knockout-2-0-0-released"&gt;Steve’s post that summarizes everything you need to know&lt;/a&gt;. Many community folks contributed to this release and some even wrote documentation. &lt;/p&gt; &lt;p&gt;Here are my top 5 features in KO 2:&lt;/p&gt; &lt;p&gt;(I linked to Steve’s JSFiddle examples for many of these. Just click on the keywords below to see examples.)&lt;/p&gt;&lt;strong&gt; &lt;h3&gt;&lt;strong&gt;1. Control of flow bindings&lt;/strong&gt;&lt;/h3&gt;&lt;/strong&gt; &lt;p&gt;This is where you can use built in bindings for &lt;strong&gt;&lt;a href="http://jsfiddle.net/StevenSanderson/kR329/light/"&gt;if&lt;/a&gt;&lt;/strong&gt;, &lt;strong&gt;ifnot&lt;/strong&gt;, &lt;strong&gt;&lt;a href="http://jsfiddle.net/StevenSanderson/kR329/light/"&gt;foreach&lt;/a&gt;&lt;/strong&gt;, and &lt;strong&gt;&lt;a href="http://jsfiddle.net/StevenSanderson/yVBPS/light/"&gt;with&lt;/a&gt;&lt;/strong&gt; inside of elements or even containerless tags … more on that in a moment. (I linked directly to Steve’s examples on JSFiddle). Excellent new feature that I use every day.&lt;/p&gt; &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;ul&lt;/span&gt; &lt;span style="color: #ff0000"&gt;data-bind&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="foreach: products"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;li&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;strong&lt;/span&gt; &lt;span style="color: #ff0000"&gt;data-bind&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="text: name"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;strong&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;em&lt;/span&gt; &lt;span style="color: #ff0000"&gt;data-bind&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="if: manufacturer"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;            &lt;span style="color: #ff0000"&gt;&amp;amp;mdash;&lt;/span&gt; made by &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;span&lt;/span&gt; &lt;span style="color: #ff0000"&gt;data-bind&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="text: manufacturer.company"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;span&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;em&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;li&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;ul&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br&gt;&lt;/div&gt;&lt;strong&gt;&lt;h3&gt;&lt;strong&gt;2. Containerless control of flow &lt;/strong&gt;&lt;/h3&gt;&lt;/strong&gt;&lt;p&gt;Another killer feature. Sometimes you may need to control the flow of your bindings or templates. &lt;a href="http://jsfiddle.net/StevenSanderson/8vms5/light/"&gt;Knockout 2.0.0 adds the ability to use HTML comments to wrap control of flow bindings&lt;/a&gt;. I really love this feature as it helps me clean up my HTML and avoid having an element for no reason other than control of flow (which I had to do occasionally with KO 1.2) &lt;/p&gt;&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;span style="color: #008000"&gt;&amp;lt;!-- ko foreach: customers --&amp;gt;&lt;/span&gt;&lt;br&gt;   &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;div&lt;/span&gt; &lt;span style="color: #ff0000"&gt;data-bind&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="text: companyName"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;div&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #008000"&gt;&amp;lt;!-- /ko --&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br&gt;&lt;/div&gt;&lt;strong&gt;&lt;h3&gt;&lt;strong&gt;3. Parent binding contexts&lt;/strong&gt;&lt;/h3&gt;&lt;/strong&gt;&lt;p&gt;Can anyone say ancestor relative source bindings? Yeah, you XAML folks know what I mean. KO 2v2 makes it easy to navigate from inside of a template where the data context&amp;nbsp; is one thing, and reference a data context higher up in the hierarchy. This is really important when you are inside of a template and you need to reference a different data context (like for a combobox). &lt;a href="http://jsfiddle.net/StevenSanderson/W2Hrz/light/"&gt;You can reference the root context ($root), get an array of parent contexts ($parents), get the immediately preceding parent context ($parent) too&lt;/a&gt;.&amp;nbsp; This is one of those features that you don’t think about often, but when you need it … you REALLY need it. Otherwise, you write some funky workaround code. &lt;/p&gt;&lt;h3&gt;4. Event handlers now receive the model as the first Parameter&lt;/h3&gt;&lt;p&gt;This is pretty self explanatory … now &lt;a href="http://jsfiddle.net/StevenSanderson/caqva/light/"&gt;when you bind to an event handler Knockout will automatically pass the model for the current data context to the&lt;/a&gt; handler. This makes it much simpler to write handlers that must operate on the current context (like remove, check selected, etc.) What’s even better here is that you don’t have to tell it to pass the context … it just does it under the covers and it keeps your HTML clean. &lt;/p&gt;&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&amp;lt;button data-bind=&lt;span style="color: #006080"&gt;"click: $parent.removeProduct"&lt;/span&gt;&amp;gt;Delete&amp;lt;/button&amp;gt;&lt;/pre&gt;&lt;br&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;Breaking Change: &lt;/font&gt;&lt;/strong&gt;Note that in previous version the event handler received the DOM event object as the first parameter. In KO v2, the event handler receives the model as the first parameter, and the DOM event object as the second parameter. You will need to change any KO code that uses the DOM event object&amp;nbsp; to account for it as the second parameter.&lt;/p&gt;&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;// KO v1.2&lt;br&gt;myViewModel.myEventHandler = function(evt)&lt;br&gt;&lt;br&gt;// KO v2&lt;br&gt;myViewModel.myEventHandler = function(data, evt) &lt;/pre&gt;&lt;br&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;h3&gt;5. jQuery style event handlers&lt;/h3&gt;&lt;p&gt;Some folks don’t like putting the click handlers in their HTML bindings. So another new feature is to use jQuery style handlers for events handlers. This is straightforward to set up, but the added value here is from the &lt;a href="http://jsfiddle.net/StevenSanderson/3knhM/light/"&gt;ko.dataFor and ko.contextFor helper functions&lt;/a&gt;. Simply put, instead of passing the model into the handler, the handler itself can refer back to the context for the operation, or the data for (the model) the operation.&lt;/p&gt;&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;$(&lt;span style="color: #006080"&gt;".prods"&lt;/span&gt;).on(&lt;span style="color: #006080"&gt;"click"&lt;/span&gt;, &lt;span style="color: #006080"&gt;".del"&lt;/span&gt;, function() {&lt;br&gt;    viewModel.removeProduct(ko.dataFor(this))&lt;span style="color: #008000"&gt;;&lt;/span&gt;&lt;br&gt;});&lt;/pre&gt;&lt;br&gt;&lt;/div&gt;&lt;h3&gt;6. Native Templates&lt;/h3&gt;&lt;p&gt;OK, so this is really my top 6 favorite new features in Knockout, but it’s a really good one. Knockout 2.0.0 adds support for native templates. What’s that? It means that you no longer have to take a dependency on jQuery templates nor any other external JavaScript templating library. &lt;a href="http://knockoutjs.com/documentation/template-binding.html"&gt;You can check out the examples here for native templates, I highly recommend it!&lt;/a&gt;&lt;/p&gt;&lt;p&gt;If you want to continue using jQuery templates, you can do so. However KO 2 drops support for some of the older versions of jQuery templates. I won’t bore you with the details of how, because frankly, if you are using KO I think recommend moving to native templates and jQuery templates is no longer being actively developed.&lt;/p&gt;&lt;h3&gt;What Else?&lt;/h3&gt;&lt;p&gt;One other change that I almost missed my first time through it all is that there is a new function ko.computed. Actually, this is not a new function, it’s a new name for dependentObservable. Both names refer to the same function internally in KO, but the “new” way is to call them using ko.computed. &lt;/p&gt;&lt;div class="feedflare"&gt;&lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=MwYicNC9G7c:_eG1jJpz470:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?i=MwYicNC9G7c:_eG1jJpz470:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=MwYicNC9G7c:_eG1jJpz470:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?i=MwYicNC9G7c:_eG1jJpz470:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=MwYicNC9G7c:_eG1jJpz470:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=MwYicNC9G7c:_eG1jJpz470:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JohnPapa/~4/MwYicNC9G7c" height="1" width="1"/&gt;</description>      <pubDate>Thu, 22 Dec 2011 14:38:36 GMT</pubDate>      <guid isPermaLink="false">http://johnpapa.net:80/kov2RTW</guid>      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://johnpapa.net:80/kov2RTW</origLink>    </item>    <item>      <title>Windows Dev News for December 21, 2011 - #0014</title>      <link>http://geekswithblogs.net/WynApseTechnicalMusings/archive/2011/12/21/148102.aspx</link>      <description>		&lt;font face="tahoma"&gt;My latest post is up... check it out at &lt;a href="http://windowsdevnews.com/Blogs.aspx?ID=28"&gt;&lt;u&gt;WindowsDevNews&lt;/u&gt;&lt;/a&gt;&lt;/font&gt; &lt;img src="http://geekswithblogs.net/WynApseTechnicalMusings/aggbug/148102.aspx" width="1" height="1" /&gt;</description>      <creator xmlns="http://purl.org/dc/elements/1.1/">Dave Campbell</creator>      <guid>http://geekswithblogs.net/WynApseTechnicalMusings/archive/2011/12/21/148102.aspx</guid>      <pubDate>Thu, 22 Dec 2011 05:22:15 GMT</pubDate>      <comment xmlns="http://wellformedweb.org/CommentAPI/">http://geekswithblogs.net/WynApseTechnicalMusings/comments/148102.aspx</comment>      <comments>http://geekswithblogs.net/WynApseTechnicalMusings/archive/2011/12/21/148102.aspx#feedback</comments>      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://geekswithblogs.net/WynApseTechnicalMusings/comments/commentRss/148102.aspx</commentRss>      <ping xmlns="http://madskills.com/public/xml/rss/module/trackback/">http://geekswithblogs.net/WynApseTechnicalMusings/services/trackbacks/148102.aspx</ping>    </item>    <item>      <title>DecryptR Part 2</title>      <link>http://feedproxy.google.com/~r/JesseLiberty-SilverlightGeek/~3/8EuD3TxkFPE/</link>      <comments>http://jesseliberty.com/2011/12/21/decryptr-part-2/#comments</comments>      <pubDate>Wed, 21 Dec 2011 15:37:03 +0000</pubDate>      <creator xmlns="http://purl.org/dc/elements/1.1/">Jesse Liberty</creator>      <category><![CDATA[Essentials]]></category>      <category><![CDATA[Mango]]></category>      <category><![CDATA[Mini-Tutorial]]></category>      <category><![CDATA[Patterns & Skills]]></category>      <guid isPermaLink="false">http://jesseliberty.com/?p=5149</guid>      <encoded xmlns="http://purl.org/rss/1.0/modules/content/"><![CDATA[In a recent post, I discussed the DecryptR application I have been toying with.&#160; While the fundamentals are working, there is much to do.&#160; Today I’ll make a few minor improvements. First, let’s set the font in the list box &#8230; Continue reading &#8594;<br/><br/>For the complete article and hyperlinks, please visit my blog at http://JesseLiberty.com<div class="feedflare"><a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=8EuD3TxkFPE:kzVhMs8QaQg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=8EuD3TxkFPE:kzVhMs8QaQg:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=8EuD3TxkFPE:kzVhMs8QaQg:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?i=8EuD3TxkFPE:kzVhMs8QaQg:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=8EuD3TxkFPE:kzVhMs8QaQg:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?i=8EuD3TxkFPE:kzVhMs8QaQg:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=8EuD3TxkFPE:kzVhMs8QaQg:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?i=8EuD3TxkFPE:kzVhMs8QaQg:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?a=8EuD3TxkFPE:kzVhMs8QaQg:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/JesseLiberty-SilverlightGeek?d=qj6IDK7rITs" border="0"></img></a></div><img src="http://feeds.feedburner.com/~r/JesseLiberty-SilverlightGeek/~4/8EuD3TxkFPE" height="1" width="1"/>]]></encoded>      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://jesseliberty.com/2011/12/21/decryptr-part-2/feed/</commentRss>      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">0</comments>      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://jesseliberty.com/2011/12/21/decryptr-part-2/</origLink>    </item>    <item>      <title>Updates to the Windows Phone docs</title>      <link>http://blogs.msdn.com/b/silverlight_sdk/archive/2011/12/20/updates-to-the-windows-phone-docs.aspx</link>      <pubDate>Tue, 20 Dec 2011 18:10:47 GMT</pubDate>      <guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10249667</guid>      <creator xmlns="http://purl.org/dc/elements/1.1/">Cheryl Simmons - MSFT</creator>      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">0</comments>      <wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/silverlight_sdk/rsscomments.aspx?WeblogPostID=10249667</wfw:commentRss>      <comments>http://blogs.msdn.com/b/silverlight_sdk/archive/2011/12/20/updates-to-the-windows-phone-docs.aspx#comments</comments>      <description>&lt;p&gt;We recently made a refresh of the Windows Phone documentation and samples. We've updated several samples:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Background Agent&lt;/li&gt;&lt;li&gt;Background Transfer Service&lt;/li&gt;&lt;li&gt;Quick Card&lt;/li&gt;&lt;li&gt;Search Extensibility&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;We also added the following new sample that shows how to use types in the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.phone.net.networkinformation(v=VS.92).aspx"&gt;NetworkInformation&lt;/a&gt; namespace to get the network status of the device, mobile network and other information.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Network and Device Information&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;To get the latest samples go to the &lt;a href="http://msdn.microsoft.com/en-us/library/ff431744(v=VS.92).aspx"&gt;Code Samples&lt;/a&gt; page on MSDN.&amp;nbsp;&lt;/p&gt;&lt;p&gt;In addition, we made fixes to several&amp;nbsp;docs, some based on your feedback on &lt;a href="http://wpdev.uservoice.com/forums/110707-docs"&gt;UserVoice&lt;/a&gt;. For example, we added links to the camera sample from the camera docs. Please keep your feedback coming and we'll keep updating and making changes!&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10249667" width="1" height="1"&gt;</description>    </item>    <item>      <title>Book Review: Windows Phone 7 Silverlight Cookbook</title>      <description>&lt;p&gt;&lt;em&gt;This review is for the book &lt;/em&gt;&lt;em&gt;&lt;a href="http://www.silverlightshow.net/book/Windows-Phone-7-Silverlight-Cookbook.aspx"&gt;'Windows Phone 7 Silverlight Cookbook'&lt;/a&gt;&lt;/em&gt;&lt;em&gt;, and has been submitted by a&amp;nbsp;member of the &lt;/em&gt;&lt;a href="http://wpug.net/" target="_blank"&gt;&lt;em&gt;Windows Phone 7 User Group&lt;/em&gt;&lt;/a&gt;&lt;em&gt;&amp;nbsp;- a user group supported by SilverlightShow.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;We&amp;nbsp;&lt;/em&gt;&lt;a href="http://www.silverlightshow.net/About/Partners.aspx" target="_self"&gt;&lt;em&gt;support user groups&lt;/em&gt;&lt;/a&gt;&lt;em&gt; with books, swag, events promotion, free event passes and others. &lt;/em&gt;&lt;a href="http://www.silverlightshow.net/About/contacts.aspx" target="_self"&gt;&lt;em&gt;Contact us&amp;nbsp;to get support for your user group&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&amp;nbsp;&lt;br /&gt;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Interested in this book? Get it for free&lt;/strong&gt; by tweeting our next webinar&amp;nbsp;&lt;a href="http://www.silverlightshow.net/news/Free-SilverlightShow-Webinar-Leveraging-Windows-Azure-for-the-Windows-Phone-Developer.aspx" target="_self"&gt;&lt;strong&gt;Leveraging Windows Azure for the Windows Phone Developer&lt;/strong&gt;&lt;/a&gt;&amp;nbsp;using tag &lt;strong&gt;#webinarsilverlightshow&lt;/strong&gt;. Three of you will get a free ebook copy provided by &lt;a href="http://www.packtpub.com/" target="_blank"&gt;Packt Publishing&lt;/a&gt;. &lt;strong&gt;&lt;a href="http://twitter.com/home?status=Free+%40SilverlightShow+webinar%3A+Leveraging+Azure+for+Windows+Phone%3A+http%3A%2F%2Fslshow.net%2Fvv6hvN+%23webinarsilverlightshow+%23WPdev" target="_blank"&gt;Tweet this webinar now!&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;This book is another in the ever growing number offering an introduction to Windows Phone development. This one takes a slightly different approach to others I&amp;rsquo;ve read by opting for a &amp;ldquo;cookbook&amp;rdquo; style where it aims to provide a collection of &amp;ldquo;recipes&amp;rdquo; which the reader can apply to their apps.&lt;/p&gt;&lt;p&gt;The book starts out well by encouraging developers to work with Expression Blend (which is something most developers would benefit from) and begins with helping the reader understand the available controls before showing how to create simple animations and behaviours.&lt;/p&gt;&lt;p&gt;Unfortunately that&amp;rsquo;s where things start to go downhill as it follows the traditional pattern of introducing a selection of features and functionality and then providing an example of how to use it.&lt;/p&gt;&lt;p&gt;The authors assume a level of experience in the reader but unfortunately don&amp;rsquo;t make it clear what this is. The preface states that the book is aimed at both the hobbyist and the professional developer. As the latter I don&amp;rsquo;t feel it gave me enough information on the idiosyncrasies of applying the techniques, the book describes, to my work. I also fear that for the former they don&amp;rsquo;t go far enough to help the beginner understand when each feature should be used or when and what alternatives may be appropriate.&lt;/p&gt;&lt;p&gt;With 2 authors and 3 technical reviewers I was also disappointed to see a number of errors in the content. This included author notes which haven&amp;rsquo;t been completed (&amp;ldquo;Insert references to...&amp;rdquo;) as well as information which is factually incorrect. (&amp;ldquo;The emulator doesn&amp;rsquo;t support multi-touch.&amp;rdquo; &amp;ndash; It does, you can just only use it if the machine running the emulator supports it,)&lt;/p&gt;&lt;p&gt;The biggest disappointment I had with this book though was due to the comparison it draws with a cook book. When I look at a traditional cook book (one for preparing and cooking food) what attracts me is the dishes I can create from following the instructions therein. There are no recipes of that sort in this book. It&amp;rsquo;s more a collection of techniques. It&amp;rsquo;s also the pictures which particularly tempt me in a food based cookbook. Unfortunately the screenshots of the apps that are in the book aren&amp;rsquo;t particularly appealing and ignore lots of the simplest design guidelines and best practices.&lt;/p&gt;&lt;p&gt;The book&amp;rsquo;s subtitles claim it includes "Quick answers to common problems" and "All the recipes you need to start creating apps and making money".    &lt;br /&gt;I think it fails in both respects.     &lt;br /&gt;There are lots of common problems which the book completely ignores. Presumably because these aren&amp;rsquo;t easy to demonstrate or tied to a specific control or feature.&lt;/p&gt;&lt;p&gt;While the book does provide some help with creating apps, it doesn&amp;rsquo;t help the inexperienced or uneducated developer create apps which are better than what&amp;rsquo;s already available, or even identify what a higher quality app would look like. It also doesn&amp;rsquo;t mention anything which would help developers make money from their apps. There are already too many people creating apps who simply assume that if they build it sales (and money) will come. Except for a very small few this is simply not the case. I would expect a responsibly authored book providing guidance in this area to do a better job of explaining what someone entering the marketplace might expect and how to give themselves the best possible odds of creating something that will meet the needs of the user and the aims of the creator.&lt;/p&gt;&lt;p&gt;If you're new to developing for Windows Phone 7 then there are definitely lots of things that you can learn from this book. If you have some experience then it may provide a few introductory pointers to a more design focused approached to your app creation. Beyond that, however, there are many other books which will better help developers understand what can be done on Windows Phone and also how to do it.&lt;/p&gt;&lt;p&gt;Disclaimer. I was given a free PDF copy of this book for review purposes.&lt;/p&gt;</description>      <link>http://www.silverlightshow.net/items/Book-Review-Window-Phone-7-Silverlight-Cookbook.aspx</link>      <author>editorial@silverlightshow.net (Matt Lacey )</author>      <comments>http://www.silverlightshow.net/items/Book-Review-Window-Phone-7-Silverlight-Cookbook.aspx#comments</comments>      <guid isPermaLink="true">http://www.silverlightshow.net/items/Book-Review-Window-Phone-7-Silverlight-Cookbook.aspx</guid>      <pubDate>Tue, 20 Dec 2011 12:15:00 GMT</pubDate>    </item>    <item>      <title>Windows Dev News for December 19, 2011 - #0013</title>      <link>http://geekswithblogs.net/WynApseTechnicalMusings/archive/2011/12/19/148091.aspx</link>      <description>		&lt;font face="tahoma"&gt;My latest post is up... check it out at &lt;a href="http://windowsdevnews.com/Blogs.aspx?ID=27"&gt;&lt;u&gt;WindowsDevNews&lt;/u&gt;&lt;/a&gt;&lt;/font&gt; &lt;img src="http://geekswithblogs.net/WynApseTechnicalMusings/aggbug/148091.aspx" width="1" height="1" /&gt;</description>      <creator xmlns="http://purl.org/dc/elements/1.1/">Dave Campbell</creator>      <guid>http://geekswithblogs.net/WynApseTechnicalMusings/archive/2011/12/19/148091.aspx</guid>      <pubDate>Tue, 20 Dec 2011 04:29:58 GMT</pubDate>      <comment xmlns="http://wellformedweb.org/CommentAPI/">http://geekswithblogs.net/WynApseTechnicalMusings/comments/148091.aspx</comment>      <comments>http://geekswithblogs.net/WynApseTechnicalMusings/archive/2011/12/19/148091.aspx#feedback</comments>      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://geekswithblogs.net/WynApseTechnicalMusings/comments/commentRss/148091.aspx</commentRss>      <ping xmlns="http://madskills.com/public/xml/rss/module/trackback/">http://geekswithblogs.net/WynApseTechnicalMusings/services/trackbacks/148091.aspx</ping>    </item>    <item>      <title>Silverlight Show: 10 Laps around Silverlight 5 (Part 10 of 10)</title>      <link>http://feedproxy.google.com/~r/TheSilverlightBlog/~3/5ErB3ubJxDs/silverlight-show-10-laps-around-silverlight-5-part-10-of-10.aspx</link>      <pubDate>Mon, 19 Dec 2011 19:26:00 GMT</pubDate>      <guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10249317</guid>      <creator xmlns="http://purl.org/dc/elements/1.1/">Silverlight Team</creator>      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">0</comments>      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/silverlight/rsscomments.aspx?WeblogPostID=10249317</commentRss>      <comments>http://blogs.msdn.com/b/silverlight/archive/2011/12/19/silverlight-show-10-laps-around-silverlight-5-part-10-of-10.aspx#comments</comments>      <description>&lt;p&gt;In this article, a discussion about several new features that did not fit in any of the above categories. We will discuss In-Browser HTML, PostScript and Tasks for TPL. Please review the Roadmap for the series before going any further.&lt;/p&gt;  &lt;h2&gt;The Roadmap for this Series&lt;/h2&gt;  &lt;p&gt;Included, the Roadmap for the series below as you may want to visit other sections as you learn Silverlight 5. I picked the following features as I thought that you may find them useful in your day-to-day work. If you want a specific topic covered then please leave it in the comments below.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://www.silverlightshow.net/items/Silverlight-5-Part-1-of-10.aspx"&gt;Introduction to SL5 – provides a brief history of Silverlight and relevant links.&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-2-of-10.aspx"&gt;Binding - Ancestor Relative Source Binding and Implicit Data Templates.&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-4-of-10.aspx"&gt;Graphics - XNA 3D API and Improved Graphics Stack.&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-4-of-10.aspx"&gt;Media - Low-Latency Sound using XNA and Remote Control and Media Command (Keys) Support.&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/silverlight/archive/2011/11/18/silverlight-show-10-laps-around-silverlight-5-part-5-of-10.aspx"&gt;Text - Text Tracking and Leading, Linked and Multi-column Text, OpenType Support, Pixel Snapped Text and TextOptions.&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-6-of-10.aspx"&gt;Operating System Integration Part 1 - P/Invoke, Multiple Windows and Unrestricted File System Access in Full Trust.&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-7-of-10.aspx"&gt;Operating System Integration Part 2 - Default Filename for SaveFileDialog, 64-bit browser support and Power Awareness.&lt;/a&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/silverlight/archive/2011/12/02/silverlight-show-10-laps-around-silverlight-5-part-8-of-10.aspx"&gt;Productivity and Performance - XAML Binding Debugging, Parser Performance Improvements and Multi-core JIT for improved start-up time.&lt;/a&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/silverlight/archive/2011/12/12/silverlight-show-10-laps-around-silverlight-5-part-9-of-10.aspx"&gt;Controls - Double and Triple click support, PivotViewer and ComboBox Type-Ahead.&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Other items - [This Post] - In-Browser HTML, PostScript and Tasks for TPL.&lt;/strong&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;h2&gt;In-Browser HTML&lt;/h2&gt;  &lt;p&gt;In Silverlight 4, we could use the WebBrowser control only in an “Out-of-Browser” application. This has changed in Silverlight 5 as we can now use the WebBrowser control in the browser (IE). It will however require that you make a few changes to your system. Let’s get started: &lt;/p&gt;  &lt;p&gt;1)&lt;strong&gt; Update the registry&lt;/strong&gt; – Locate the following keys:&lt;/p&gt;  &lt;p&gt;If you running on a 32 bit machine, &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;HKEY_LOCAL_MACHINE\Software\Microsoft\Silverlight\&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;and if you are running on a 64-bit machine, &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Silverlight\&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;change the &lt;strong&gt;UpdateConsentMode&lt;/strong&gt; from a 0 to 1. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/mbcrump/________1_2.png"&gt;&lt;img title="1" alt="1" src="http://www.silverlightshow.net/Storage/Users/mbcrump/________1_thumb.png" width="627" height="282" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;2) &lt;strong&gt;Sign the XAP File&lt;/strong&gt; - Right click on the Silverlight application and go to properties. Choose &lt;strong&gt;Signing&lt;/strong&gt; and check the checkbox&lt;strong&gt; Sign the .XAP file&lt;/strong&gt;. Now click on the button &lt;strong&gt;Create Test Certificate&lt;/strong&gt;. Enter any password that you want and hit the OK button. Now click on the &lt;strong&gt;More Details&lt;/strong&gt; button.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/mbcrump/__________2_2.png"&gt;&lt;img title="2" alt="2" src="http://www.silverlightshow.net/Storage/Users/mbcrump/__________2_thumb.png" width="544" height="350" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Click on the &lt;strong&gt;Install Certificate&lt;/strong&gt; button. Clicking on the button brings up the &lt;strong&gt;Certificate Import wizard&lt;/strong&gt;. Click on the &lt;strong&gt;Next&lt;/strong&gt; button and choose Place all certificates in the following store. Click on the Browse button. This will show you a Certificate Store. Choose &lt;strong&gt;Trusted Publisher&lt;/strong&gt; and finish the wizard. Now repeat the same step to install this certificate in &lt;strong&gt;Trusted Root Certification Authorities&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/mbcrump/3_4.png"&gt;&lt;img title="3" alt="3" src="http://www.silverlightshow.net/Storage/Users/mbcrump/3_thumb_1.png" width="486" height="442" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;3) &lt;strong&gt;Enable Out-of-Browser and Require elevated trust when running in-browser.&lt;/strong&gt; Right click on the Silverlight application and go to properties. Place a checkmark in &lt;strong&gt;Enable Out-of-Browser&lt;/strong&gt; and &lt;strong&gt;Require elevated trust when running in-browser.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/mbcrump/________4_2.png"&gt;&lt;img title="4" alt="4" src="http://www.silverlightshow.net/Storage/Users/mbcrump/________4_thumb.png" width="573" height="464" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now let’s switch over to the MainPage.xaml and replace the Grid with the following code:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-10-of-10.aspx"&gt;Read the full post&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10249317" width="1" height="1"&gt;&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/fkO848e51XNFJXWZfw4_qPvKeVY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fkO848e51XNFJXWZfw4_qPvKeVY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/fkO848e51XNFJXWZfw4_qPvKeVY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fkO848e51XNFJXWZfw4_qPvKeVY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;&lt;a href="http://feeds.feedburner.com/~ff/TheSilverlightBlog?a=5ErB3ubJxDs:1MMvlWxjZYo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheSilverlightBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheSilverlightBlog?a=5ErB3ubJxDs:1MMvlWxjZYo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheSilverlightBlog?i=5ErB3ubJxDs:1MMvlWxjZYo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheSilverlightBlog?a=5ErB3ubJxDs:1MMvlWxjZYo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheSilverlightBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheSilverlightBlog/~4/5ErB3ubJxDs" height="1" width="1"/&gt;</description>      <category domain="http://blogs.msdn.com/b/silverlight/archive/tags/Tips+and+Training/">Tips and Training</category>      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://blogs.msdn.com/b/silverlight/archive/2011/12/19/silverlight-show-10-laps-around-silverlight-5-part-10-of-10.aspx</origLink>    </item>    <item>      <title>Muted audio even when the playback rate is set to a supported audio playback rate</title>      <link>http://blogs.msdn.com/b/silverlight_sdk/archive/2011/12/19/muted-audio-even-when-the-playback-rate-is-set-to-a-supported-audio-playback-rate.aspx</link>      <pubDate>Mon, 19 Dec 2011 18:28:00 GMT</pubDate>      <guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10249296</guid>      <creator xmlns="http://purl.org/dc/elements/1.1/">Nitya Ravi</creator>      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">1</comments>      <wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/silverlight_sdk/rsscomments.aspx?WeblogPostID=10249296</wfw:commentRss>      <comments>http://blogs.msdn.com/b/silverlight_sdk/archive/2011/12/19/muted-audio-even-when-the-playback-rate-is-set-to-a-supported-audio-playback-rate.aspx#comments</comments>      <description>&lt;p&gt;Silverlight 5 supports multiple playback rates. When the playback rate is set to&amp;nbsp;a rate that does &lt;b&gt;not&lt;/b&gt; support audio playback, audio will be muted. If playback is reset back to 1 or to any value that supports audio playback after multiple rates that don&amp;rsquo;t support audio/pitch correction playback, the audio could still be muted.&lt;/p&gt;&lt;p&gt;To work around this issue, you can reset the volume when the playback rate is changed. The following code demonstrates one way to reset the volume.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;void ME_RateChanged(object sender, RateChangedRoutedEventArgs e)&lt;/p&gt;&lt;p&gt;{&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // For playback rates that support audio playback, Enforce audio playback by resetting the MediaElement Volume property&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //to unmute audio after multiple playbackRate changes.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (e.NewRate &amp;lt;= 2&amp;nbsp; &amp;amp;&amp;amp; e.NewRate &amp;gt;= 0.5)&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ME.Volume = ME.Volume;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;p&gt;-Nitya.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10249296" width="1" height="1"&gt;</description>      <category domain="http://blogs.msdn.com/b/silverlight_sdk/archive/tags/bugs/">bugs</category>      <category domain="http://blogs.msdn.com/b/silverlight_sdk/archive/tags/silverlight+5/">silverlight 5</category>    </item>    <item>      <title>Merry Christmas! It&amp;rsquo;s my off-site backup.</title>      <link>http://feeds.jeffhandley.com/~r/JeffHandley/~3/wz1cRDgDkxc/Merry-Christmas-Itrsquos-my-off-site-backup.aspx</link>      <description>&lt;p&gt;Almost 4 years ago, &lt;a href="http://jeffhandley.com/archive/2008/04/06/leaving-big-and-relocating.aspx" target="_blank"&gt;I moved my family&lt;/a&gt; from Cincinnati, Ohio to Redmond, Washington so that I could join Microsoft.  Since we have two young children, and a small family, the move has been really hard on the grandparents.  But as our first Christmas out here approached, I came up with an idea that I’ve been repeating each year since.  Last night, I tweeted about this idea and the tweet went a bit viral, with hundreds of retweets (thanks largely to &lt;a href="https://twitter.com/#!/shanselman/status/148342981102018560" target="_blank"&gt;Scott Hanselman&lt;/a&gt;, I’m sure).&lt;/p&gt;  &lt;blockquote class="twitter-tweet"&gt;   &lt;p&gt;Every year I give the grandparents DVDs with all of our digital pictures from the year. To them it's a gift. To me it's off-site backup.&lt;/p&gt; — Jeff Handley (@JeffHandley) &lt;a href="https://twitter.com/JeffHandley/status/148341892940181504" data-datetime="2011-12-18T10:00:37+00:00"&gt;December 18, 2011&lt;/a&gt;&lt;/blockquote&gt; &lt;script src="//platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;  &lt;p&gt;Like many families, we take thousands of digital photos and we store them on an HP MediaSmart HomeServer.  Every year for the last 4 years, I sit down the weekend before Christmas, copy all of the year’s pictures from the HomeServer to my PC, organize them into folders of 4GB, burn them to DVD, and then send them to the grandparents as my Christmas gift to them.  What they don’t know (until now anyway), is that the gesture isn’t completely selfless.  As succinctly expressed in my tweet, those disks are my off-site backup of our family photos.  And we’re talking 2300 miles off-site, so I consider myself pretty well covered.&lt;/p&gt;  &lt;p&gt;Here are a few details for my process, in case you decide to pick up this routine too:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Organize the photos into folders with the year, subfolders with the year-month, then subfolders again with year-month-day, and file names that have date-time stamps.  (I store these on our HomeServer). &lt;/li&gt;    &lt;li&gt;When copying the folders in preparation for the year’s disks, always include December from the previous year, so that photos from the previous Christmas are included in the set. &lt;/li&gt;    &lt;li&gt;Split the photos into groups of ~4GB, and burn the groups to disks.  This year I had 7 DVDs. &lt;/li&gt;    &lt;li&gt;Deliver the disks to the grandparents, and ideally copy the photos to their PC and add them to the screensaver. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;My wife and I have agreed many times that in the case of a disaster, our family photos are what we’d miss the most.  Having all of our photos archived at the grandparents’ offers us a bit of reassurance that we’ll never lose them.  And you cannot imagine how much joy the grandparents get when they watch the photo slideshow.  We’ve spent several hours sitting together watching the screensaver.&lt;/p&gt;  &lt;p&gt;In the days of Angry Birds, this is what I call killing two stones with one bird.  Merry Christmas!&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:749a6e33-37ae-4176-9e8c-0fa5af56cc93" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/HomeServer" rel="tag"&gt;HomeServer&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Family+Photos" rel="tag"&gt;Family Photos&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Backup" rel="tag"&gt;Backup&lt;/a&gt;&lt;/div&gt;&lt;img src="http://jeffhandley.com/aggbug/283.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/JeffHandley/~4/wz1cRDgDkxc" height="1" width="1"/&gt;</description>      <creator xmlns="http://purl.org/dc/elements/1.1/">Jeff Handley</creator>      <guid isPermaLink="false">http://jeffhandley.com/archive/2011/12/19/Merry-Christmas-Itrsquos-my-off-site-backup.aspx</guid>      <pubDate>Mon, 19 Dec 2011 08:26:29 GMT</pubDate>      <comments>http://jeffhandley.com/archive/2011/12/19/Merry-Christmas-Itrsquos-my-off-site-backup.aspx#feedback</comments>      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">2</comments>      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://jeffhandley.com/comments/commentRss/283.aspx</commentRss>      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://jeffhandley.com/archive/2011/12/19/Merry-Christmas-Itrsquos-my-off-site-backup.aspx</origLink>    </item>    <item>      <title>SkyDrive usage through Live SDK on Windows Phone</title>      <description>&lt;table width="20"&gt;    &lt;tbody&gt;        &lt;tr&gt;            &lt;td&gt;            &lt;div class="fb-like" data-show-faces="true" data-send="false" data-href="http://www.silverlightshow.net/items/SkyDrive-usage-through-Live-SDK-on-Windows-Phone.aspx" data-font="segoe ui" data-layout="button_count"&gt;&lt;/div&gt;            &lt;/td&gt;            &lt;td&gt;&lt;a href="https://twitter.com/share" class="twitter-share-button" data-via="silverlightshow" data-counturl="http://www.silverlightshow.net/items/SkyDrive-usage-through-Live-SDK-on-Windows-Phone.aspx" data-count="horizontal" data-text="Reading @samidip's article 'SkyDrive usage through Live SDK on #WindowsPhone' #wpdev" data-url="http://slshow.net/rOpJh9"&gt;Tweet&lt;/a&gt;&lt;/td&gt;            &lt;td&gt;&lt;g:plusone size="medium" href="http://www.silverlightshow.net/items/SkyDrive-usage-through-Live-SDK-on-Windows-Phone.aspx"&gt;&lt;/g:plusone&gt;            &lt;/td&gt;            &lt;td&gt;            &lt;/td&gt;        &lt;/tr&gt;    &lt;/tbody&gt;&lt;/table&gt;&lt;div style="border:1px solid #dddddd;border-image: initial; padding-bottom: 5px; background-color: #f3f3f3; margin-top: 5px; padding-left: 10px; margin-left: 10px; padding-top: 5px;"&gt;&lt;div style="text-align: center;"&gt;&lt;div style="text-align: center;"&gt;&lt;strong&gt;This&amp;nbsp;article is also available&amp;nbsp;in print (Word, PDF) and e-reader formats (MOBI, EPUB).&lt;/strong&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;strong&gt;&lt;strong&gt;Download all formats, including source code for&lt;/strong&gt;&lt;span style="font-weight: normal;"&gt;&amp;nbsp;&lt;strong&gt;$0.99.&lt;/strong&gt;&amp;nbsp;&lt;/span&gt; &lt;a href="https://www.e-junkie.com/ecom/gb.php?c=cart&amp;amp;i=1034595&amp;amp;cl=173172&amp;amp;ejc=2" target="ej_ejc" class="ec_ejc_thkbx" onclick="javascript:return EJEJC_lc(this);"&gt;&lt;img src="http://www.e-junkie.com/ej/ej_add_to_cart.gif" alt="Add to Cart" style="border-width: 0px;border-style: solid;" /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;Guess how many people use Live Services? 500 million plus! And when our applications connect to the same services, they start feeling right at home with what our users are already used to. Microsoft recently opened the &lt;em&gt;Live Connect APIs&lt;/em&gt;, along with some SDKs for 3rd party applications on desktop/web/mobile platforms to leverage the cloud offerings from Live Services.&lt;div style="border:1px solid #dddddd;border-image: initial; padding-bottom: 5px; background-color: #f3f3f3; margin-top: 5px; padding-left: 10px; width: 200px; float: right; margin-left: 10px; margin-right: 5px; padding-top: 5px;"&gt;&lt;h3&gt;Don't miss...&lt;/h3&gt;&lt;ul style="list-style-type: circle; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-left: 20px; font-size: 12px;"&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/video/Windows-Phone-Unit-Testing-Webinar.aspx"&gt;Webinar recording: Unit Testing for Windows Phone&lt;/a&gt; &lt;/li&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/items/Producing-and-Consuming-OData-in-a-Silverlight-and-Windows-Phone-7-application.aspx"&gt;The article series: Producing and Consuming OData in a Silverlight and WP7 application&lt;/a&gt; &lt;/li&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/ebooks/odata_cloud.aspx"&gt;Samisip's Ebook 'OData &amp;amp; Cloud Augmentation of Windows Phone Apps':&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;p style="padding-bottom: 5px; text-align: center;"&gt;&lt;a href="http://www.silverlightshow.net/ebooks/odata_cloud.aspx"&gt;&lt;img style="width: 107px; height: 150px;" alt="Producing and Consuming OData in a Silverlight and WP7 App Ebook" src="http://www.silverlightshow.net/Storage/Ebooks/odata_cloud.png" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="font-size: 12px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.silverlightshow.net/ebooks.aspx"&gt;All SilverlightShow Ebooks&lt;/a&gt;&amp;nbsp;&lt;img alt="" src="http://www.silverlightshow.net/Storage/arrow-content.jpg" /&gt;&lt;/p&gt;&lt;/div&gt;&amp;nbsp;&lt;p&gt;In this short article, we take a look at how we could get started using the Live Connect API from our Windows Phone applications and interact with SkyDrive storage through the new Live SDK.&lt;/p&gt;&lt;h3&gt;&lt;a href="http://www.silverlightshow.net/Storage/Sources/LiveSDKDemo.zip"&gt;Download Source Code&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;[Please note that unlike other Demo solutions, you simply cannot hit F5 to run it. For obvious reasons, I have had to strip out references to my personal SkyDrive; so you would have to get yourself a client ID &amp;amp; make a one-word change before running the solution. Steps explained below.]&lt;/p&gt;&lt;h2&gt;Introduction&lt;/h2&gt;&lt;p&gt;The new Live APIs expose information around the following .. more information @ &lt;a href="http://msdn.microsoft.com/en-us/library/hh243641.aspx" target="_blank"&gt;Live Connect Developer Guide&lt;/a&gt;:&lt;/p&gt;&lt;ul&gt;    &lt;li&gt;&lt;strong&gt;SkyDrive&lt;/strong&gt; -- This is for working with files &amp;amp; media; we can read/write against the user's SkyDrive files/folders/albums. SkyDrive offers the perfect cloud storage for Windows Phone applications to push persistence to the user's SkyDrive or to act as back-up storage. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Hotmail&lt;/strong&gt; -- These sets of APIs expose the users contacts &amp;amp; calendars for read/writes. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Messenger&lt;/strong&gt; -- These APIs are for use in instant messaging. We can read user's current status &amp;amp; communicate with user's buddies. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Windows Live ID&lt;/strong&gt; -- This acts as a sort of Access Control Service that we could use to authenticate users &amp;amp; access their Live profile information. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The Live Connect APIs use standard protocols such as HTTP, OAuth 2.0, JSON and XMPP to make it easy working with them across multiple platforms. To leverage the APIs, we primarily use Representational State Transfer (REST) requests which return information in JSON. &lt;/p&gt;&lt;p&gt;While any of the above classes of APIs may be useful from a Windows Phone application, in this article we shall focus on the SkyDrive APIs, which arguably would be the most commonly used. No longer would developers need to spin up storage in cloud to augment their solutions; we can simply leverage the user's SkyDrive which has the additional benefit of user's accessibility &amp;amp; familiarity.&lt;/p&gt;&lt;h2&gt;Getting Started&lt;/h2&gt;&lt;p&gt;So, let's start integrating the Live Connect SDK into our Windows Phone application:&lt;/p&gt;&lt;ul&gt;    &lt;li&gt;While the standard technologies of HTTP/REST/JSon make it easy to work with in any platform, there is some additional help in the form of wrapper SDKs for Windows Phone &amp;amp; Windows 8. Let's grab the &lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=28195" target="_blank"&gt;Windows Phone Live SDK&lt;/a&gt; first. &lt;/li&gt;    &lt;li&gt;Next, to have Live Connect recognize requests from our Windows Phone App, we need an unique identifier, called the &lt;em&gt;Client ID&lt;/em&gt;. So, let's head over to the &lt;a href="https://manage.dev.live.com/Applications/Index" target="_blank"&gt;Live Connect App Management site&lt;/a&gt; &amp;amp; create a new application to interact with Live Services. &lt;/li&gt;    &lt;li&gt;The new application will be registered with a Client ID, along with a &lt;em&gt;Client Secret&lt;/em&gt; &amp;amp; &lt;em&gt;Redirect Domain&lt;/em&gt; (that you type in). The two latter ones are not strictly needed for Windows Phone integration. The end result should be something like this: &lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/samidip/App%20Config_4.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px;        border-width: 0px;border-style: solid;" title="App Config" alt="App Config" src="http://www.silverlightshow.net/Storage/Users/samidip/App%20Config_thumb_1.png" width="614" height="337" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;ul&gt;    &lt;li&gt;Live Connect is a combination of several services allowing access to different categories of information. These are organized into what's called &lt;em&gt;Scopes&lt;/em&gt;, and explicit declaration &amp;amp; user permission is required for our App to access the categorized information; as a good practice, we should never ask for more than what our App actually needs. For more information, please see &lt;a href="http://msdn.microsoft.com/en-us/library/hh243646.aspx" target="_blank"&gt;Scopes &amp;amp; Permissions&lt;/a&gt;. &lt;/li&gt;    &lt;li&gt;Users need to signed in with their Live Credentials &amp;amp; provide consent to utilize their SkyDrive, before we can leverage Live Connect APIs to manipulate files/folders in SkyDrive. While there are several ways to achieve this, in the XAML/C# world of Windows Phone, the easiest is to utilize the built-in &lt;em&gt;Sign-in&lt;/em&gt; control in the SDK. Before you use it, make sure to Add Reference to these two libraries: &lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/samidip/Add%20References_2.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="Add References" alt="Add References" src="http://www.silverlightshow.net/Storage/Users/samidip/Add%20References_thumb.png" width="354" height="297" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;ul&gt;    &lt;li&gt;Next,, if you're in the XAML Designer view &amp;amp; you don't see the Sign-in control in your Toolbox, here's how to add it. The obvious benefit of using the Sign-In control is that we do not need to write the low-level HTTP RESTful GET calls to authenticate &amp;amp; authorize our user; the log-on UI comes up automatically &amp;amp; the client classes hang on to the access tokens passed back from the sign-in control for utilization in future requests. &lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/samidip/Live%20Sign-In%20Control_2.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="Live Sign-In Control" alt="Live Sign-In Control" src="http://www.silverlightshow.net/Storage/Users/samidip/Live%20Sign-In%20Control_thumb.png" width="354" height="255" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;h2&gt;&lt;/h2&gt;&lt;h2&gt;&lt;/h2&gt;&lt;h2&gt;&lt;/h2&gt;&lt;h3&gt;&lt;/h3&gt;&lt;h3&gt;&lt;/h3&gt;&lt;h2&gt;&lt;/h2&gt;&lt;h1&gt;&lt;/h1&gt;&lt;h2&gt;The Demo App&lt;/h2&gt;&lt;p&gt;So, let's write a simple Windows Phone application that allows the user to sign in &amp;amp; see/insert files in one's SkyDrive storage. Here's some XAML on our &lt;em&gt;MainPage.xaml&lt;/em&gt; to show the sign-in control. Watch the use of scopes to declare what we want access to:&lt;/p&gt;&lt;div style="border:1px solid silver;border-image: initial; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &amp;lt;Grid x:Name=&lt;span style="color: #006080;"&gt;"ContentPanel"&lt;/span&gt; Grid.Row=&lt;span style="color: #006080;"&gt;"1"&lt;/span&gt; Margin=&lt;span style="color: #006080;"&gt;"12,0,12,0"&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt;      &amp;lt;StackPanel Orientation=&lt;span style="color: #006080;"&gt;"Vertical"&lt;/span&gt; &amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;          &amp;lt;TextBlock Text=&lt;span style="color: #006080;"&gt;"Please sign-in and allow access to your SkyDrive!"&lt;/span&gt; Margin=&lt;span style="color: #006080;"&gt;"20"&lt;/span&gt; TextWrapping=&lt;span style="color: #006080;"&gt;"Wrap"&lt;/span&gt; Width=&lt;span style="color: #006080;"&gt;"450"&lt;/span&gt; FontSize=&lt;span style="color: #006080;"&gt;"30"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;          &amp;lt;live:SignInButton Name=&lt;span style="color: #006080;"&gt;"btnSignin"&lt;/span&gt; ClientId=&lt;span style="color: #006080;"&gt;"Your_Client_ID"&lt;/span&gt; Scopes=&lt;span style="color: #006080;"&gt;"wl.signin wl.basic wl.skydrive wl.skydrive_update"&lt;/span&gt; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;                         RedirectUri=&lt;span style="color: #006080;"&gt;"Your_Redirect_URI"&lt;/span&gt; Branding=&lt;span style="color: #006080;"&gt;"Windows"&lt;/span&gt; TextType=&lt;span style="color: #006080;"&gt;"SignIn"&lt;/span&gt; SessionChanged=&lt;span style="color: #006080;"&gt;"btnSignin_SessionChanged"&lt;/span&gt; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;                         HorizontalAlignment=&lt;span style="color: #006080;"&gt;"Center"&lt;/span&gt; VerticalAlignment=&lt;span style="color: #006080;"&gt;"Top"&lt;/span&gt; /&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;          &amp;lt;TextBlock x:Name=&lt;span style="color: #006080;"&gt;"txtLoginResult"&lt;/span&gt; HorizontalAlignment=&lt;span style="color: #006080;"&gt;"Center"&lt;/span&gt; Margin=&lt;span style="color: #006080;"&gt;"0,20,0,0"&lt;/span&gt; FontSize=&lt;span style="color: #006080;"&gt;"30"&lt;/span&gt; Style=&lt;span style="color: #006080;"&gt;"{StaticResource PhoneTextAccentStyle}"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt;          &amp;lt;TextBlock x:Name=&lt;span style="color: #006080;"&gt;"txtWelcome"&lt;/span&gt; HorizontalAlignment=&lt;span style="color: #006080;"&gt;"Center"&lt;/span&gt; Margin=&lt;span style="color: #006080;"&gt;"0,20,0,0"&lt;/span&gt; FontSize=&lt;span style="color: #006080;"&gt;"30"&lt;/span&gt; Style=&lt;span style="color: #006080;"&gt;"{StaticResource PhoneTextAccentStyle}"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt;          &amp;lt;Button x:Name=&lt;span style="color: #006080;"&gt;"btnShowContent"&lt;/span&gt; Content=&lt;span style="color: #006080;"&gt;"Show File Content"&lt;/span&gt; Width=&lt;span style="color: #006080;"&gt;"300"&lt;/span&gt; Margin=&lt;span style="color: #006080;"&gt;"30"&lt;/span&gt; Visibility=&lt;span style="color: #006080;"&gt;"Collapsed"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt;                  Click=&lt;span style="color: #006080;"&gt;"btnShowContent_Click"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt;  11:&lt;/span&gt;          &amp;lt;Button x:Name=&lt;span style="color: #006080;"&gt;"btnAddFile"&lt;/span&gt; Content=&lt;span style="color: #006080;"&gt;"Add File"&lt;/span&gt; Width=&lt;span style="color: #006080;"&gt;"300"&lt;/span&gt; Margin=&lt;span style="color: #006080;"&gt;"30, -20,30,30"&lt;/span&gt; Visibility=&lt;span style="color: #006080;"&gt;"Collapsed"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt;  12:&lt;/span&gt;                  Click=&lt;span style="color: #006080;"&gt;"btnAddFile_Click"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt;  13:&lt;/span&gt;      &amp;lt;/StackPanel&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum14" style="color: #606060;"&gt;  14:&lt;/span&gt;  &amp;lt;/Grid&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;The resultant UI before the user signs in as as follows. Also, on first usage of the sign-in button, the user will be prompted to sign-on to Windows Live and provide one-time OAuth access to our application, as demonstrated below:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/samidip/Sign-In%20Control_2.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="Sign-In Control" alt="Sign-In Control" src="http://www.silverlightshow.net/Storage/Users/samidip/Sign-In%20Control_thumb.png" width="204" height="388" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://www.silverlightshow.net/Storage/Users/samidip/User%20Log-on_2.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="User Log-on" alt="User Log-on" src="http://www.silverlightshow.net/Storage/Users/samidip/User%20Log-on_thumb.png" width="204" height="388" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp; &lt;a href="http://www.silverlightshow.net/Storage/Users/samidip/OAuth%20Access_2.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="OAuth Access" alt="OAuth Access" src="http://www.silverlightshow.net/Storage/Users/samidip/OAuth%20Access_thumb.png" width="204" height="388" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;And here's some C# code to handle sign-on attempts. We use the &lt;em&gt;wl.signin&lt;/em&gt; to log the user in &amp;amp; &lt;em&gt;wl.basic&lt;/em&gt; to greet the user after reading some basic identifying information:&lt;/p&gt;&lt;div style="border:1px solid silver;border-image: initial; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; btnSignin_SessionChanged(&lt;span style="color: #0000ff;"&gt;object&lt;/span&gt; sender, LiveConnectSessionChangedEventArgs e)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt; {           &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (e.Status == LiveConnectSessionStatus.Connected)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;         client = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; LiveConnectClient(e.Session);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;         App.Current.LiveSession = e.Session;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.txtLoginResult.Text = &lt;span style="color: #006080;"&gt;"Signed in."&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.txtWelcome.Visibility = System.Windows.Visibility.Visible;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.btnShowContent.Visibility = System.Windows.Visibility.Visible;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.btnAddFile.Visibility = System.Windows.Visibility.Visible;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt;  11:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt;  12:&lt;/span&gt;         client.GetCompleted += &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; EventHandler&amp;lt;LiveOperationCompletedEventArgs&amp;gt;(OnGetCompleted);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt;  13:&lt;/span&gt;         client.GetAsync(&lt;span style="color: #006080;"&gt;"me"&lt;/span&gt;, &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum14" style="color: #606060;"&gt;  14:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum15" style="color: #606060;"&gt;  15:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum16" style="color: #606060;"&gt;  16:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum17" style="color: #606060;"&gt;  17:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.txtLoginResult.Text = &lt;span style="color: #006080;"&gt;"Not signed in."&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum18" style="color: #606060;"&gt;  18:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.txtWelcome.Visibility = System.Windows.Visibility.Collapsed;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum19" style="color: #606060;"&gt;  19:&lt;/span&gt;         client = &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum20" style="color: #606060;"&gt;  20:&lt;/span&gt;     }           &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum21" style="color: #606060;"&gt;  21:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum22" style="color: #606060;"&gt;  22:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum23" style="color: #606060;"&gt;  23:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; OnGetCompleted(&lt;span style="color: #0000ff;"&gt;object&lt;/span&gt; sender, LiveOperationCompletedEventArgs e)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum24" style="color: #606060;"&gt;  24:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum25" style="color: #606060;"&gt;  25:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (e.Error == &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum26" style="color: #606060;"&gt;  26:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum27" style="color: #606060;"&gt;  27:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (e.Result.ContainsKey(&lt;span style="color: #006080;"&gt;"first_name"&lt;/span&gt;) &amp;amp;&amp;amp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum28" style="color: #606060;"&gt;  28:&lt;/span&gt;             e.Result.ContainsKey(&lt;span style="color: #006080;"&gt;"last_name"&lt;/span&gt;))&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum29" style="color: #606060;"&gt;  29:&lt;/span&gt;         {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum30" style="color: #606060;"&gt;  30:&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (e.Result[&lt;span style="color: #006080;"&gt;"first_name"&lt;/span&gt;] != &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt; &amp;amp;&amp;amp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum31" style="color: #606060;"&gt;  31:&lt;/span&gt;                 e.Result[&lt;span style="color: #006080;"&gt;"last_name"&lt;/span&gt;] != &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum32" style="color: #606060;"&gt;  32:&lt;/span&gt;             {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum33" style="color: #606060;"&gt;  33:&lt;/span&gt;                 &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.txtWelcome.Text =&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum34" style="color: #606060;"&gt;  34:&lt;/span&gt;                     &lt;span style="color: #006080;"&gt;"Hello, "&lt;/span&gt; +&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum35" style="color: #606060;"&gt;  35:&lt;/span&gt;                     e.Result[&lt;span style="color: #006080;"&gt;"first_name"&lt;/span&gt;].ToString() + &lt;span style="color: #006080;"&gt;" "&lt;/span&gt; +&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum36" style="color: #606060;"&gt;  36:&lt;/span&gt;                     e.Result[&lt;span style="color: #006080;"&gt;"last_name"&lt;/span&gt;].ToString() + &lt;span style="color: #006080;"&gt;"!"&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum37" style="color: #606060;"&gt;  37:&lt;/span&gt;             }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum38" style="color: #606060;"&gt;  38:&lt;/span&gt;         }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum39" style="color: #606060;"&gt;  39:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum40" style="color: #606060;"&gt;  40:&lt;/span&gt;         {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum41" style="color: #606060;"&gt;  41:&lt;/span&gt;             txtWelcome.Text = &lt;span style="color: #006080;"&gt;"Hello, signed-in user!"&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum42" style="color: #606060;"&gt;  42:&lt;/span&gt;         }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum43" style="color: #606060;"&gt;  43:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum44" style="color: #606060;"&gt;  44:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum45" style="color: #606060;"&gt;  45:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum46" style="color: #606060;"&gt;  46:&lt;/span&gt;         txtWelcome.Text = &lt;span style="color: #006080;"&gt;"Error calling API: "&lt;/span&gt; +&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum47" style="color: #606060;"&gt;  47:&lt;/span&gt;             e.Error.ToString();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum48" style="color: #606060;"&gt;  48:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum49" style="color: #606060;"&gt;  49:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Did you notice a couple of fun things? Once connected, we store the instance of the &lt;em&gt;LiveConnectClient&lt;/em&gt; as a property on our &lt;em&gt;App&lt;/em&gt; object; this allows for reuse throughout the application. Also, the RESTful Live APIs support several shortcuts that include &amp;ldquo;&lt;em&gt;me&lt;/em&gt;&amp;rdquo; to indicate the current user. And here's the UI we are shooting for, after sign-on:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/samidip/Signed%20In_2.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="Signed In" alt="Signed In" src="http://www.silverlightshow.net/Storage/Users/samidip/Signed%20In_thumb.png" width="244" height="465" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;h2&gt;SkyDrive Files &lt;/h2&gt;&lt;p&gt;Now that we have permission to user&amp;rsquo;s Live Services, let&amp;rsquo;s dig into SkyDrive. Most of us are used to storing documents &amp;amp; media on SkyDrive, and have the content show up in our Windows Phone, or folders kept in sync between multiple PCs/Macs through &lt;a href="http://explore.live.com/windows-live-mesh?os=other" target="_blank"&gt;Live Mesh&lt;/a&gt;. With programmatic access to SkyDrive, we have access to a lot of operations, such as:&lt;/p&gt;&lt;ul&gt;    &lt;li&gt;Create/Read/Update/Delete Folders &lt;/li&gt;    &lt;li&gt;Do the same with &lt;em&gt;Albums&lt;/em&gt;, a special folder to handle media efficiently &lt;/li&gt;    &lt;li&gt;Traversing Directories &lt;/li&gt;    &lt;li&gt;Upload/Download Files &lt;/li&gt;    &lt;li&gt;Read/Update file/folder properties &lt;/li&gt;    &lt;li&gt;Move/copy files/folders etc. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;For much more information &amp;amp; details, please see &lt;a href="http://msdn.microsoft.com/en-us/windowslive/hh528485" target="_blank"&gt;SkyDrive Developer Center&lt;/a&gt;. For our Demo application, let us do the simple operations of reading files/folders from user&amp;rsquo;s SkyDrive &lt;em&gt;root&lt;/em&gt; &amp;amp; adding files to it. Here&amp;rsquo;s how we fetch &amp;amp; list all content from the root directory on user&amp;rsquo;s SkyDrive:&lt;/p&gt;&lt;div style="border:1px solid silver;border-image: initial; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; SkyDriveContent&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;  &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; Name { get; set; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;  &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; Description { get; set; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt; &lt;span style="color: #008000;"&gt;// Code in Phone Page.&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt; List&amp;lt;SkyDriveContent&amp;gt; ContentList = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; List&amp;lt;SkyDriveContent&amp;gt;();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; PhoneApplicationPage_Loaded(&lt;span style="color: #0000ff;"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt;  11:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt;  12:&lt;/span&gt;     LiveConnectClient client = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; LiveConnectClient(App.Current.LiveSession);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt;  13:&lt;/span&gt;     client.GetCompleted += &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; EventHandler&amp;lt;LiveOperationCompletedEventArgs&amp;gt;(clientDataFetch_GetCompleted);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum14" style="color: #606060;"&gt;  14:&lt;/span&gt;     client.GetAsync(&lt;span style="color: #006080;"&gt;"/me/skydrive/files"&lt;/span&gt;);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum15" style="color: #606060;"&gt;  15:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum16" style="color: #606060;"&gt;  16:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum17" style="color: #606060;"&gt;  17:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; clientDataFetch_GetCompleted(&lt;span style="color: #0000ff;"&gt;object&lt;/span&gt; sender, LiveOperationCompletedEventArgs e)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum18" style="color: #606060;"&gt;  18:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum19" style="color: #606060;"&gt;  19:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (e.Error == &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum20" style="color: #606060;"&gt;  20:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum21" style="color: #606060;"&gt;  21:&lt;/span&gt;         List&amp;lt;&lt;span style="color: #0000ff;"&gt;object&lt;/span&gt;&amp;gt; data = (List&amp;lt;&lt;span style="color: #0000ff;"&gt;object&lt;/span&gt;&amp;gt;)e.Result[&lt;span style="color: #006080;"&gt;"data"&lt;/span&gt;];&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum22" style="color: #606060;"&gt;  22:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;foreach&lt;/span&gt; (IDictionary&amp;lt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;, &lt;span style="color: #0000ff;"&gt;object&lt;/span&gt;&amp;gt; content &lt;span style="color: #0000ff;"&gt;in&lt;/span&gt; data)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum23" style="color: #606060;"&gt;  23:&lt;/span&gt;         {                   &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum24" style="color: #606060;"&gt;  24:&lt;/span&gt;             SkyDriveContent skyContent = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; SkyDriveContent();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum25" style="color: #606060;"&gt;  25:&lt;/span&gt;             skyContent.Name = (&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;)content[&lt;span style="color: #006080;"&gt;"name"&lt;/span&gt;];&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum26" style="color: #606060;"&gt;  26:&lt;/span&gt;             ContentList.Add(skyContent);                   &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum27" style="color: #606060;"&gt;  27:&lt;/span&gt;         }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum28" style="color: #606060;"&gt;  28:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum29" style="color: #606060;"&gt;  29:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.contentList.ItemsSource = ContentList;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum30" style="color: #606060;"&gt;  30:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum31" style="color: #606060;"&gt;  31:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;And, here&amp;rsquo;s the resulting UI that we bind the results to, simply showing the content names from SkyDrive root:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/samidip/Skydrive%20Content_2.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="Skydrive Content" alt="Skydrive Content" src="http://www.silverlightshow.net/Storage/Users/samidip/Skydrive%20Content_thumb.png" width="244" height="465" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Did you notice how we used &amp;ldquo;&lt;em&gt;me/skydrive/files&lt;/em&gt;&amp;rdquo; to fetch all content from user&amp;rsquo;s SkyDrive root? Every folder/album in SkyDrive has a unique ID, visible when we inspect the folder properties. From this point on, we can easily dive into any folder &amp;amp; traverse the user&amp;rsquo;s SkyDrive by making requests with &lt;em&gt;Folder_ID/files&lt;/em&gt; or &lt;em&gt;Album_ID/files&lt;/em&gt;. Having fun?&lt;/p&gt;&lt;p&gt;Now, how about putting files in user&amp;rsquo;s SkyDrive? Sure, we can .. here&amp;rsquo;s some simple UI &amp;amp; code to add a file to the root of the user&amp;rsquo;s SkyDrive directory:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/samidip/Add%20File_2.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="Add File" alt="Add File" src="http://www.silverlightshow.net/Storage/Users/samidip/Add%20File_thumb.png" width="244" height="465" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="border:1px solid silver;border-image: initial; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; btnSave_Click(&lt;span style="color: #0000ff;"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; fileName = &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.fileName.Text.Trim();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;byte&lt;/span&gt;[] byteArray = Encoding.Unicode.GetBytes(&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.fileContent.Text.Trim());&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;     MemoryStream fileStream = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; MemoryStream(byteArray);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;     &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;     LiveConnectClient uploadClient = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; LiveConnectClient(App.Current.LiveSession);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt;     uploadClient.UploadCompleted += &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; EventHandler&amp;lt;LiveOperationCompletedEventArgs&amp;gt;(uploadClient_UploadCompleted);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt;     uploadClient.UploadAsync(&lt;span style="color: #006080;"&gt;"me/skydrive"&lt;/span&gt;, fileName, fileStream );&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt;  11:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt;  12:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; uploadClient_UploadCompleted(&lt;span style="color: #0000ff;"&gt;object&lt;/span&gt; sender, LiveOperationCompletedEventArgs e)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt;  13:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum14" style="color: #606060;"&gt;  14:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (e.Error == &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum15" style="color: #606060;"&gt;  15:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum16" style="color: #606060;"&gt;  16:&lt;/span&gt;         Dispatcher.BeginInvoke(() =&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum17" style="color: #606060;"&gt;  17:&lt;/span&gt;         {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum18" style="color: #606060;"&gt;  18:&lt;/span&gt;             MessageBox.Show(&lt;span style="color: #006080;"&gt;"Voila, Saved to the SkyDrive :)"&lt;/span&gt;, &lt;span style="color: #006080;"&gt;"All Done!"&lt;/span&gt;, MessageBoxButton.OK);                    &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum19" style="color: #606060;"&gt;  19:&lt;/span&gt;         });&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum20" style="color: #606060;"&gt;  20:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum21" style="color: #606060;"&gt;  21:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum22" style="color: #606060;"&gt;  22:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.NavigationService.GoBack();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum23" style="color: #606060;"&gt;  23:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;So, what did we see? A simple upload location indicator of &amp;ldquo;&lt;em&gt;me/skydrive&lt;/em&gt;&amp;rdquo; puts the file at the root directory. You can certainly put it in any folder of your choice, as long as you know the ID of the folder. For confirmation, surely authenticate yourself &amp;amp; check if the file addition did work on your SkyDrive. Did for our case &lt;img style="border-style: none;" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://www.silverlightshow.net/Storage/Users/samidip/___wlEmoticon-smile_2.png" /&gt;:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/samidip/SkyDrive%20File%20Upload.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="SkyDrive File Upload" alt="SkyDrive File Upload" src="http://www.silverlightshow.net/Storage/Users/samidip/SkyDrive%20File%20Upload_thumb.png" width="604" height="144" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;h2&gt;&lt;sup&gt;&lt;/sup&gt;&lt;/h2&gt;&lt;h2&gt;Conclusion &amp;amp; Caveats&lt;/h2&gt;&lt;ul&gt;    &lt;li&gt;With great power, comes great responsibility! Let us not undermine the end-user&amp;rsquo;s faith in SkyDrive. &lt;/li&gt;    &lt;li&gt;More specific details about SkyDrive File/Folder APIs can be found &lt;a href="http://msdn.microsoft.com/en-us/windowslive/hh561740.aspx" target="_blank"&gt;HERE&lt;/a&gt;. &lt;/li&gt;    &lt;li&gt;Watch the BUILD session recording on Live Connect &lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/PLAT-134C" target="_blank"&gt;HERE&lt;/a&gt;. &lt;/li&gt;    &lt;li&gt;SkyDrive is a fantastic reliable alternative to augment storage for our Windows Phone applications, and user&amp;rsquo;s immediately see the file/folders we add in their SkyDrive. More importantly, Office sync on Windows Phone, and the dedicated SkyDrive apps on Windows Phone, iPhone &amp;amp; iPad immediately make the files available to the user. The story gets even better with built-in support in Windows 8, but I digress &lt;img style="border-style: none;" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://www.silverlightshow.net/Storage/Users/samidip/___wlEmoticon-smile_2.png" /&gt; &lt;/li&gt;    &lt;li&gt;Needless to say, SkyDrive access requires network connectivity. So, this should not possibly be our primary means of storage on Windows Phones. &lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;&amp;nbsp;&lt;/h2&gt;&lt;h2&gt;Summary&lt;/h2&gt;&lt;p&gt;In this article, we talked about how to leverage the new Live Connect APIs, in particular, the Live SDK in our Windows Phone applications. We saw the usage of the Sign-in control to ask for user&amp;rsquo;s authentication &amp;amp; seeking permission to use specific resources through the Live API. SkyDrive access is now handy, with full support to traverse, read &amp;amp; manipulate content in user&amp;rsquo;s SkyDrive directories. So, what are you waiting for? Look up some documentation &amp;amp; enable SkyDrive access from your Windows Phone application, resulting in happy users &amp;amp; happier you!&lt;/p&gt;&lt;p&gt;I would appreciate any comments or concerns or how things could be done better. Thanks for reading &amp;amp; happy coding.&lt;/p&gt;&lt;p&gt;Cheers &lt;em&gt;SilverlightShow&lt;/em&gt;!&lt;/p&gt;&lt;h2&gt;&amp;nbsp;&lt;/h2&gt;&lt;h2&gt;About the Author&lt;/h2&gt;&lt;p&gt;&lt;img style="background-image: none; margin-top: 0px; margin-right: 30px; margin-bottom: 0px; margin-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; float: left;        border-width: 0px;border-style: solid;" title="ActualPic" alt="ActualPic" src="http://www.silverlightshow.net/Storage/Users/samidip/__ActualPic_1.jpg" width="144" height="175" /&gt;Samidip Basu (&lt;a href="https://twitter.com/#!/samidip"&gt;@samidip&lt;/a&gt;) is a technologist &amp;amp; gadget-lover working as a Manager &amp;amp; Solutions Lead for Sogeti USA out of the Columbus Unit. With a strong developer background in Microsoft technology stack, he now spends much of his time in spreading the word to discover the full potential of the Windows Phone platform &amp;amp; cloud-backed mobile solutions in general. He passionately runs the Central Ohio Windows Phone User Group (&lt;a href="http://cowpug.org/"&gt;http://cowpug.org&lt;/a&gt;), labors in M3 Conf (&lt;a href="http://m3conf.com/"&gt;http://m3conf.com/&lt;/a&gt;) organization and can be found with at-least a couple of hobbyist projects at any time. His spare times call for travel and culinary adventures with the wife. Find out more at &lt;a href="http://samidipbasu.com/"&gt;http://samidipbasu.com&lt;/a&gt;.&lt;/p&gt;</description>      <link>http://www.silverlightshow.net/items/SkyDrive-usage-through-Live-SDK-on-Windows-Phone.aspx</link>      <author>editorial@silverlightshow.net (Samidip Basu )</author>      <comments>http://www.silverlightshow.net/items/SkyDrive-usage-through-Live-SDK-on-Windows-Phone.aspx#comments</comments>      <guid isPermaLink="true">http://www.silverlightshow.net/items/SkyDrive-usage-through-Live-SDK-on-Windows-Phone.aspx</guid>      <pubDate>Mon, 19 Dec 2011 07:34:25 GMT</pubDate>    </item>    <item>      <title>Windows Dev News for December 18, 2011 - #0012</title>      <link>http://geekswithblogs.net/WynApseTechnicalMusings/archive/2011/12/18/148079.aspx</link>      <description>		&lt;font face="tahoma"&gt;My latest post is up... check it out at &lt;a href="http://windowsdevnews.com/Blogs.aspx?ID=26"&gt;&lt;u&gt;WindowsDevNews&lt;/u&gt;&lt;/a&gt;&lt;/font&gt; &lt;img src="http://geekswithblogs.net/WynApseTechnicalMusings/aggbug/148079.aspx" width="1" height="1" /&gt;</description>      <creator xmlns="http://purl.org/dc/elements/1.1/">Dave Campbell</creator>      <guid>http://geekswithblogs.net/WynApseTechnicalMusings/archive/2011/12/18/148079.aspx</guid>      <pubDate>Mon, 19 Dec 2011 04:01:17 GMT</pubDate>      <comment xmlns="http://wellformedweb.org/CommentAPI/">http://geekswithblogs.net/WynApseTechnicalMusings/comments/148079.aspx</comment>      <comments>http://geekswithblogs.net/WynApseTechnicalMusings/archive/2011/12/18/148079.aspx#feedback</comments>      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://geekswithblogs.net/WynApseTechnicalMusings/comments/commentRss/148079.aspx</commentRss>      <ping xmlns="http://madskills.com/public/xml/rss/module/trackback/">http://geekswithblogs.net/WynApseTechnicalMusings/services/trackbacks/148079.aspx</ping>    </item>    <item>      <title>MVVM Light installers and Nuget (including Silverlight 5) #mvvmlight</title>      <link>http://geekswithblogs.net/lbugnion/archive/2011/12/18/mvvm-light-installers-and-nuget-including-silverlight-5-mvvmlight.aspx</link>      <description>&lt;p&gt;I just pushed two big updates to MVVM Light setup components.&lt;/p&gt;  &lt;h2&gt;MSI installers with Silverlight 5 support&lt;/h2&gt;  &lt;p&gt;The MSI installers are available on Codeplex. The current version supports Silverlight 3, Silverlight 4, &lt;strong&gt;Silverlight 5 (new)&lt;/strong&gt;, WPF 3.5 SP1, WPF 4, Windows Phone 7.0 and Windows Phone 7.1. The &lt;a href="http://mvvmlight.codeplex.com/releases/view/71278"&gt;installer for V3&lt;/a&gt; is available, as well &lt;a href="http://mvvmlight.codeplex.com/releases/view/73208"&gt;as the one for V4 beta&lt;/a&gt;.&lt;/p&gt;  &lt;h2&gt;NuGet support including Silverlight 5&lt;/h2&gt;  &lt;p&gt;I also pushed a new version of the NuGet packages which includes Silverlight 5. To install MVVM Light into an existing application with the help of the NuGet package manager in Visual Studio, &lt;a href="http://www.galasoft.ch/mvvm/installing/nuget"&gt;check the instructions&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;If you look for “mvvmlight” on NuGet, you will find four packages:&lt;/p&gt; &lt;a title="" href="http://www.flickr.com/photos/36917929@N06/6532927729"&gt;&lt;img src="http://farm8.staticflickr.com/7149/6532927729_d66b49a854.jpg" width="500" height="333" /&gt;&lt;/a&gt;   &lt;ul&gt;   &lt;li&gt;MVVM Light: The whole package, libraries + ViewModelLocator + MainViewModel. Installing this also modifies App.xaml to install the ViewModelLocator. This package is for V3 of MVVM Light! &lt;/li&gt;    &lt;li&gt;MVVM Light libraries only: Installs only the DLLs and references them. This package is for V3 of MVVM Light! &lt;/li&gt;    &lt;li&gt;MVVM Light [Preview]: This is the whole package too, but for V4 beta. &lt;/li&gt;    &lt;li&gt;MVVM Light libraries only [Preview]: Just the DLLs, for V4 beta. &lt;/li&gt; &lt;/ul&gt;  &lt;h2&gt;Update on V4’s availability&lt;/h2&gt;  &lt;p&gt;One of the most annoying issues in V3 is a memory leak that can appear in the Messenger component in certain circumstances. I will post details in due time, but there is indeed a risk that an instance is not garbage collected if it is registered with the Messenger with a non-static method, and if the developer omits to unregister the instance before deleting it.&lt;/p&gt;  &lt;p&gt;Because of the promise of a “weak” registration, I really want to solve this issue. Currently, I am able to completely solve it in WPF, and to solve it in most cases in Silverlight (including Windows Phone). There is still one special case in Silverlight where a memory leak may remain, and I am currently working on handling this. I am not sure that there is a solution for this last scenario, but there are other alternatives that it is not a blocking issue anymore.&lt;/p&gt;  &lt;p&gt;Once this fix is fully tested, I still have a few things I would like to add in V4. However I am also aware that we have been in beta (and alpha) for quite some time already, and it is very possible that I procrastinate some of these features into V5.&lt;/p&gt;  &lt;p&gt;Happy coding!    &lt;br /&gt;Laurent&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div style="margin-bottom: -1em"&gt;   &lt;div style="vertical-align: middle"&gt;&lt;a href="http://www.galasoft.ch/"&gt;&lt;img title="GalaSoft Laurent Bugnion" alt="GalaSoft Laurent Bugnion" src="http://www.galasoft.ch/logo/Current/logo_120x30.png" /&gt;&lt;/a&gt; &lt;/div&gt;    &lt;div style="position: relative; top: -36px; left: 130px"&gt;&lt;strong&gt;&lt;a href="http://www.galasoft.ch/contact_en.html"&gt;Laurent Bugnion (GalaSoft)&lt;/a&gt;&lt;/strong&gt;       &lt;br /&gt;&lt;a href="http://feeds.feedburner.com/galasoft"&gt;Subscribe&lt;/a&gt; | &lt;a href="http://twitter.com/lbugnion"&gt;Twitter&lt;/a&gt; | &lt;a href="http://www.facebook.com/lbugnion"&gt;Facebook&lt;/a&gt; | &lt;a href="http://www.flickr.com/photos/lbugnion"&gt;Flickr&lt;/a&gt; | &lt;a href="http://www.linkedin.com/in/lbugnion"&gt;LinkedIn&lt;/a&gt;       &lt;br /&gt;&lt;iframe style="border-bottom-style: none; margin-top: 7px; border-left-style: none; width: 450px; border-top-style: none; margin-bottom: -20px; height: 23px; border-right-style: none; overflow: hidden" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.galasoft.ch/archive/2011/12/18/mvvm-light-installers-and-nuget-including-silverlight-5-mvvmlight.aspx&amp;amp;layout=standard&amp;amp;show_faces=true&amp;amp;width=450&amp;amp;action=like&amp;amp;colorscheme=light" frameborder="0" allowtransparency="allowtransparency" scrolling="no"&gt;&lt;/iframe&gt;&lt;/div&gt; &lt;/div&gt; &lt;img src="http://geekswithblogs.net/lbugnion/aggbug/148076.aspx" width="1" height="1" /&gt;</description>      <creator xmlns="http://purl.org/dc/elements/1.1/">Laurent Bugnion</creator>      <guid>http://geekswithblogs.net/lbugnion/archive/2011/12/18/mvvm-light-installers-and-nuget-including-silverlight-5-mvvmlight.aspx</guid>      <pubDate>Sun, 18 Dec 2011 21:10:12 GMT</pubDate>      <comment xmlns="http://wellformedweb.org/CommentAPI/">http://geekswithblogs.net/lbugnion/comments/148076.aspx</comment>      <comments>http://geekswithblogs.net/lbugnion/archive/2011/12/18/mvvm-light-installers-and-nuget-including-silverlight-5-mvvmlight.aspx#feedback</comments>      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://geekswithblogs.net/lbugnion/comments/commentRss/148076.aspx</commentRss>      <ping xmlns="http://madskills.com/public/xml/rss/module/trackback/">http://geekswithblogs.net/lbugnion/services/trackbacks/148076.aspx</ping>    </item>    <item>      <title>Don't forget about the databinding features of Silverlight 4 that you get with Mango!</title>      <link>http://blogs.msdn.com/b/silverlight_sdk/archive/2011/12/16/don-t-forget-about-databinding-features-of-silverlight-4-you-get-with-mango.aspx</link>      <pubDate>Fri, 16 Dec 2011 23:55:00 GMT</pubDate>      <guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10248756</guid>      <creator xmlns="http://purl.org/dc/elements/1.1/">Cheryl Simmons - MSFT</creator>      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">1</comments>      <wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/silverlight_sdk/rsscomments.aspx?WeblogPostID=10248756</wfw:commentRss>      <comments>http://blogs.msdn.com/b/silverlight_sdk/archive/2011/12/16/don-t-forget-about-databinding-features-of-silverlight-4-you-get-with-mango.aspx#comments</comments>      <description>&lt;p&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: small;"&gt;If you are a Windows Phone developer, there are some properties offered on the &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.data.bindingbase(v=VS.95).aspx"&gt;Binding&lt;/a&gt; object in SIlverlight 4, which is supported by Mango.&amp;nbsp;Thse properties were not offered in Silverlight 3/Windows Phone OS 7.0.&amp;nbsp;The SL4 binding&amp;nbsp;properties&amp;nbsp;make setting up control bindings much easier and help you avoid using a &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.data.ivalueconverter.aspx"&gt;value converter&lt;/a&gt; in many cases.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: small;"&gt;You can set a &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.data.bindingbase.stringformat(v=VS.95).aspx"&gt;StringFormat&lt;/a&gt; value on the binding to format your string in many common formats such as currency, date, time, etc&amp;nbsp;. For example, if you want the string to be formatted like currency, your binding would look like this:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: #0000ff;"&gt;&lt;span style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Text&lt;span face="Consolas" color="#0000ff" size="2"&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;="{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span face="Consolas" color="#a31515" size="2"&gt;&lt;span face="Consolas" color="#a31515" size="2"&gt;&lt;span face="Consolas" color="#a31515" size="2"&gt;Binding&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span face="Consolas" color="#ff0000" size="2"&gt;&lt;span face="Consolas" color="#ff0000" size="2"&gt;&lt;span face="Consolas" color="#ff0000" size="2"&gt; StringFormat&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;=C&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: courier new,courier;"&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: #0000ff; font-family: Consolas; font-size: small;" face="Consolas" color="#0000ff" size="2"&gt;&lt;span style="color: #0000ff; font-family: Consolas;" face="Consolas" color="#0000ff" size="2"&gt;&lt;span style="color: #0000ff; font-family: Consolas;" face="Consolas" color="#0000ff" size="2"&gt;&lt;span style="color: #000000; font-family: arial,helvetica,sans-serif;" face="Consolas" color="#0000ff" size="2"&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;The docs for &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.data.bindingbase.stringformat(v=VS.95).aspx"&gt;StringFormat&lt;/a&gt; could use some work (don't worry--I've filed a bug and they should get fixed for the next update), but meanwhile look &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #000000; font-family: arial,helvetica,sans-serif;" face="Consolas" color="#0000ff" size="2"&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;at the following topics for more information about what your format strings should look like:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: #000000; font-family: arial,helvetica,sans-serif; font-size: small;" face="Consolas" color="#0000ff" size="2"&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;&lt;span face="Consolas" color="#0000ff" size="2"&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;a href="http://msdn.microsoft.com/en-us/library/dwhawy9k(v=VS.95).aspx"&gt;Standard Format Strings&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: #000000; font-family: arial,helvetica,sans-serif; font-size: small;" face="Consolas" color="#0000ff" size="2"&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;&lt;span face="Consolas" color="#0000ff" size="2"&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;a href="http://msdn.microsoft.com/en-us/library/az4se3k1(v=VS.95).aspx"&gt;Date Format Strings&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: small;"&gt;You can also set the &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.data.bindingbase.fallbackvalue(v=VS.95).aspx"&gt;FallbackValue&lt;/a&gt; property that is used when the binding can't return a value.&amp;nbsp;In other words, this value will display in the UI when the binding doesn't resolve.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: #0000ff; font-family: courier new,courier; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Text&lt;span face="Consolas" color="#0000ff" size="2"&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;="{&lt;span face="Consolas" color="#a31515" size="2"&gt;&lt;span face="Consolas" color="#a31515" size="2"&gt;&lt;span face="Consolas" color="#a31515" size="2"&gt;Binding Name,&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span face="Consolas" color="#ff0000" size="2"&gt;&lt;span face="Consolas" color="#ff0000" size="2"&gt;&lt;span face="Consolas" color="#ff0000" size="2"&gt;FallbackValue&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;=No Value&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;}"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: arial,helvetica,sans-serif; font-size: small;"&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;And finally set the &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.data.bindingbase.targetnullvalue(v=VS.95).aspx"&gt;TargetNullValue&lt;/a&gt;&amp;nbsp;to display a value when the underlying source value is null or&amp;nbsp;nothing.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: #0000ff; font-size: small;"&gt;&lt;span style="font-family: courier new,courier;"&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: courier new,courier;"&gt;Text&lt;span face="Consolas" color="#0000ff" size="2"&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;="{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span face="Consolas" color="#a31515" size="2"&gt;&lt;span face="Consolas" color="#a31515" size="2"&gt;&lt;span face="Consolas" color="#a31515" size="2"&gt;Binding Name&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span face="Consolas" color="#ff0000" size="2"&gt;&lt;span face="Consolas" color="#ff0000" size="2"&gt;&lt;span face="Consolas" color="#ff0000" size="2"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span face="Consolas" color="#ff0000" size="2"&gt;&lt;span face="Consolas" color="#ff0000" size="2"&gt;&lt;span face="Consolas" color="#ff0000" size="2"&gt;TargetNullValue&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span face="Consolas" size="2"&gt;&lt;span face="Consolas" size="2"&gt;n/a}&lt;/span&gt;&lt;/span&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: #000000; font-family: arial,helvetica,sans-serif; font-size: small;"&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;All of these properties will show in Intellisense and speed development for you.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: #000000; font-family: arial,helvetica,sans-serif; font-size: small;"&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;Enjoy!&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: #000000; font-family: arial,helvetica,sans-serif; font-size: small;"&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;&lt;span face="Consolas" color="#0000ff" size="2"&gt;--Cheryl&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10248756" width="1" height="1"&gt;</description>      <category domain="http://blogs.msdn.com/b/silverlight_sdk/archive/tags/Silverlight+4/">Silverlight 4</category>      <category domain="http://blogs.msdn.com/b/silverlight_sdk/archive/tags/Windows+Phone/">Windows Phone</category>      <category domain="http://blogs.msdn.com/b/silverlight_sdk/archive/tags/data+binding/">data binding</category>    </item>    <item>      <link>http://feedproxy.google.com/~r/MarkMonster_Silverlight/~3/EMoYOW1sGbY/the-problem-of-the-windows-phone-7-applicationbar-and-not-yet-updated-bindings</link>      <author xmlns="http://www.w3.org/2005/Atom">        <name>Mark Monster</name>      </author>      <category>.NET</category>      <category>MVVM</category>      <category>Phone</category>      <category>WP7</category>      <category>WPDev</category>      <title>The problem of the Windows Phone 7 ApplicationBar and not (yet) updated Bindings</title>      <description>&lt;p&gt;As a MVVM enthusiast I’m trying to use MVVM as much as possible, but not for things that are almost impossible to do with MVVM. But simple things, like a TextBox Text property is always bound to a ViewModel’s property. That’s something that works very well…until you start having ApplicationBar buttons and menu items.&lt;/p&gt;  &lt;p&gt;A lot of people already know that the ApplicationBar is something special, it’s not just a control like other stuff in your application. When clicking a button on the ApplicationBar the Binding is not yet updated. This is basically because the focus which is on the TextBox for example won’t be changed when clicking ApplicationBar buttons. This is different compared to normal buttons that you put somewhere on your page.&lt;/p&gt;  &lt;h3&gt;The Solution?&lt;/h3&gt;  &lt;p&gt;I’ve read different solutions on the web. For example, force focus on a different control by &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.control.focus(v=vs.96)" target="_blank"&gt;calling the Focus method on a Control&lt;/a&gt;. While this is working, I found a technically nicer solution. By getting the Binding of the current focused control and updating that binding.&lt;/p&gt;  &lt;p&gt;I wrote a small helper class that implements this Binding updating.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:BF48545B-72FC-48CD-B241-BB2967E2EF01:a701cf5a-be90-40a7-8cf2-715e3c2d450d" class="wlWriterEditableSmartContent"&gt;&lt;pre class="brush:csharp; gutter:true; first-line: 1; tab-size: 4; toolbar: false; collapse: false; "&gt;public static class ApplicationBarHelper{    public static void UpdateBindingOnFocussedControl()    {        object focusedElement = FocusManager.GetFocusedElement();        if (focusedElement != null &amp;amp;&amp;amp; focusedElement is TextBox)        {            var binding = (focusedElement as TextBox).GetBindingExpression(TextBox.TextProperty);            if (binding != null)                binding.UpdateSource();        }    } }&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The first thing you do in the Event handlers for the ApplicationBar Click events is call.&lt;/p&gt;&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:BF48545B-72FC-48CD-B241-BB2967E2EF01:a77ff0f5-963a-454c-894b-715e3fc7934a" class="wlWriterEditableSmartContent"&gt;&lt;pre class="brush:csharp; gutter:false; first-line: 1; tab-size: 4; toolbar: false; collapse: false; "&gt;ApplicationBarHelper.UpdateBindingOnFocussedControl();&lt;/pre&gt;&lt;/div&gt;&lt;h3&gt;What about the BindableApplicationBar?&lt;/h3&gt;&lt;p&gt;A lot of use MVVM enthusiasts are using the &lt;a href="http://phone7.codeplex.com/" target="_blank"&gt;BindableApplicationBar that’s part of the Phone7.Fx library&lt;/a&gt;. Can we use this in combination with the BindableApplicationBar? Yes we can, actually the best way would be to have this integrated with the BindableApplicationBar itself. I have just downloaded the source and manipulated two methods in two classes. &lt;/p&gt;&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:BF48545B-72FC-48CD-B241-BB2967E2EF01:8bc2a395-06f2-4932-a292-6b635ce9b46e" class="wlWriterEditableSmartContent"&gt;&lt;pre class="brush:csharp; gutter:true; first-line: 1; tab-size: 4; toolbar: false; collapse: false; highlight: [7,23]"&gt;public class BindableApplicationBarIconButton : FrameworkElement, IApplicationBarIconButton{    // Other code that hasn't been changed in this class.    void ApplicationBarIconButtonClick(object sender, EventArgs e)    {        ApplicationBarHelper.UpdateBindingOnFocussedControl();        if (Command != null &amp;amp;&amp;amp; CommandParameter != null)            Command.Execute(CommandParameter);        else if (Command != null)            Command.Execute(CommandParameterValue);        if (Click != null)            Click(this, e);    }}public class BindableApplicationBarMenuItem : FrameworkElement, IApplicationBarMenuItem{    // Other code that hasn't been changed in this class.    private void ApplicationBarMenuItemClick(object sender, EventArgs e)    {        ApplicationBarHelper.UpdateBindingOnFocussedControl();        if (Command != null &amp;amp;&amp;amp; CommandParameter != null)            Command.Execute(CommandParameter);        else if (Command != null)            Command.Execute(CommandParameterValue);        if (Click != null)            Click(this, e);    }}&lt;/pre&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/MarkMonster_Silverlight/~4/EMoYOW1sGbY" height="1" width="1"/&gt;</description>      <pubDate>Fri, 16 Dec 2011 19:00:00 +0100</pubDate>      <updated xmlns="http://www.w3.org/2005/Atom">2011-12-16T09:23:54+01:00</updated>      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://mark.mymonster.nl/2011/12/16/the-problem-of-the-windows-phone-7-applicationbar-and-not-yet-updated-bindings</origLink>    </item>    <item>      <title>Slides and Code from my VSLive Silverlight 5, REST, WCF Web API, MVC talk</title>      <author>Pete Brown	</author>      <link>http://10rem.net/blog/2011/12/15/slides-and-code-from-my-vslive-silverlight-5-rest-wcf-web-api-mvc-talk</link>      <pubDate>Thu, 15 Dec 2011 21:13:05 GMT</pubDate>      <guid>http://10rem.net/blog/2011/12/15/slides-and-code-from-my-vslive-silverlight-5-rest-wcf-web-api-mvc-talk</guid>      <description>&lt;p&gt;This talk was an adaptation of two chapters from Silverlight 5in Action. I started with a brief explanation of REST, and thenexplained the solution we were going to build during the session.The idea was to show how you can use REST in place of the heavierSoap approach in many cases, and make your services accessible tofar more clients.&lt;/p&gt;&lt;p&gt;I also showed how to share model objects between variousimplementations of .NET, using linked files and conditionalcompilation.&lt;/p&gt;&lt;p&gt;Without watching the session or reading the chapters, the sourceand slides are only somewhat useful as you miss the interim steps.So, if you happen to be at an event where I deliver this again(I've submitted it to several upcoming 2012 events), great. Ifnot…&lt;a href="http://www.manning.com/pbrown2/" target="_blank"&gt;buymy Silverlight 5 book&lt;/a&gt; ;)&lt;/p&gt;&lt;p&gt;&lt;img src="http://10rem.net/media/81420/Windows-Live-Writer_cb379422aa67_EC67_image_3.png" width="520" height="394" alt="image" border="0" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px"/&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;In addition to what's covered in my book, I also &lt;ahref="http://10rem.net/blog/2011/08/01/creating-a-silverlight-5-helper-for-aspnet-mvc3-razor" target="_blank"&gt;showed how to create a basic Razor Helper to loadSilverlight in the page&lt;/a&gt;. You can learn more at the linked blogpost.&lt;/li&gt;&lt;li&gt;The WCF Web API may be found at the &lt;ahref="http://wcf.codeplex.com/" target="_blank"&gt;WCF CodePlexSite&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;You can learn (a lot) more about ASP.NET MVC at our &lt;ahref="http://asp.net/" target="_blank"&gt;ASP.NET CommunitySite&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Of course, you can get all the Silverlight 5 bits at our &lt;ahref="http://silverlight.net/" target="_blank"&gt;SilverlightCommunity Site&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Everything else is attached to this blog post. The zip file isaround 7mb.&lt;/p&gt;&lt;p&gt;Feel free to present this at your own internal or public events.I only ask that you not submit this as a session at VSLive, TechEd,DevConnections or other large events where I may be planning topresent. When in doubt, ask.&lt;/p&gt;&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/gev81N_NmZnROGGHk-9RHs4ESQs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gev81N_NmZnROGGHk-9RHs4ESQs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/gev81N_NmZnROGGHk-9RHs4ESQs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gev81N_NmZnROGGHk-9RHs4ESQs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/PeteBrown-Silverlight/~4/pkCoMdUor7M" height="1" width="1"/&gt;</description>    </item>    <item>      <title>New Silverlight Show articles: Windows 8 XAML Metro Apps with OData</title>      <link>http://feedproxy.google.com/~r/TheSilverlightBlog/~3/9e_R9yE5OR4/new-silverlight-show-articles-windows-8-xaml-metro-apps-with-odata.aspx</link>      <pubDate>Thu, 15 Dec 2011 17:33:00 GMT</pubDate>      <guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10248191</guid>      <creator xmlns="http://purl.org/dc/elements/1.1/">Silverlight Team</creator>      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">0</comments>      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/silverlight/rsscomments.aspx?WeblogPostID=10248191</commentRss>      <comments>http://blogs.msdn.com/b/silverlight/archive/2011/12/15/new-silverlight-show-articles-windows-8-xaml-metro-apps-with-odata.aspx#comments</comments>      <description>&lt;p&gt;Silverlight Show has two new articles that provide some really interesting info about building Windows 8 XAML Metro Apps with OData written by Samidip Basu (&lt;a href="https://enterprise.cotweet.com/samidip"&gt;@samidip&lt;/a&gt;). &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://cot.ag/u6s0oc"&gt;Windows 8 XAML Metro Apps with OData - Part 1&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://cot.ag/v8DZdA"&gt;Windows 8 XAML Metro Apps with OData - Part 2&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10248191" width="1" height="1"&gt;&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/nSPyQKPndRyAUfJmTIEyL0as66U/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nSPyQKPndRyAUfJmTIEyL0as66U/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/nSPyQKPndRyAUfJmTIEyL0as66U/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nSPyQKPndRyAUfJmTIEyL0as66U/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;&lt;a href="http://feeds.feedburner.com/~ff/TheSilverlightBlog?a=9e_R9yE5OR4:OSZz7_fB5ow:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheSilverlightBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheSilverlightBlog?a=9e_R9yE5OR4:OSZz7_fB5ow:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheSilverlightBlog?i=9e_R9yE5OR4:OSZz7_fB5ow:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheSilverlightBlog?a=9e_R9yE5OR4:OSZz7_fB5ow:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheSilverlightBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheSilverlightBlog/~4/9e_R9yE5OR4" height="1" width="1"/&gt;</description>      <category domain="http://blogs.msdn.com/b/silverlight/archive/tags/Tips+and+Training/">Tips and Training</category>      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://blogs.msdn.com/b/silverlight/archive/2011/12/15/new-silverlight-show-articles-windows-8-xaml-metro-apps-with-odata.aspx</origLink>    </item>    <item>      <title>WCF RIA Services V1.0 SP2 Released</title>      <link>http://feeds.jeffhandley.com/~r/JeffHandley/~3/AqUInbQqOho/WCF-RIA-Services-V1-0-SP2-Released.aspx</link>      <description>&lt;p&gt;On December 9, 2011, Silverlight 5 was released.  As always, RIA Services is included in the &lt;a href="http://go.microsoft.com/fwlink/?LinkId=229318" target="_blank"&gt;Tools for Silverlight&lt;/a&gt;, and this new release included our V1.0 SP2 final build.  We refer to this as our RTW build, meaning Released-To-Web.  In addition to the Tools installer including WCF RIA Services V1.0 SP2, you can also find the standalone installer on &lt;a href="http://go.microsoft.com/fwlink/?LinkID=227926" target="_blank"&gt;Microsoft Download Center&lt;/a&gt;.  The &lt;a href="http://silverlight.net/getstarted/riaservices" target="_blank"&gt;silverlight.net/getstarted/riaservices&lt;/a&gt; page was also updated to reflect the new release.&lt;/p&gt;  &lt;p&gt;Aside from some bug fixes here and there, not much changed between SP2 RC and SP2 RTW.  The primary focus as been ensuring really solid compatibility with both Silverlight 5 and Silverlight 4 with this release, and testing the bits on tons of configurations for both design-time and runtime.  If you are upgrading from V1.0 SP1 to V1.0 SP2 though, here’s what you’ll find in this release:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Support for both Silverlight 4 and Silverlight 5 (SP1 had subtle issues that would cause bugs in SL5 apps)&lt;/li&gt;    &lt;li&gt;DateTimeOffset support&lt;/li&gt;    &lt;li&gt;Entity Framework Code-First development, using &lt;a href="http://nuget.org/packages/RIAServices.EntityFramework"&gt;this NuGet package&lt;/a&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;There are some more details in my &lt;a href="http://jeffhandley.com/archive/2011/09/02/RIAServicesSP2RC.aspx" target="_blank"&gt;SP2 RC announcement&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Known issues include:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Entity Framework 4.1 is required, but version 4.2 isn’t supported yet&lt;/li&gt;    &lt;li&gt;Requires Visual Studio 2010 or SP1. Visual Studio 11 isn’t supported yet&lt;/li&gt;    &lt;li&gt;Work on supporting Universal Providers for improved Windows Azure deployment is ongoing&lt;/li&gt;    &lt;li&gt;If you want to create a Silverlight 4 Business Application Template, first create an instance of the Silverlight 5 template, and then use the Silverlight project properties to retarget it to Silverlight 4. You might see some temporary errors (System.Windows.Markup.XamlParseException) in the designer and error window, but rebuilding will make those disappear.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;I want to send a shout out to &lt;a href="http://hashtagfail.com/post/13978432034/ria-services-sp2" target="_blank"&gt;Yavor Georgiev&lt;/a&gt; and point you to his blog, as he has been driving this SP2 RTW release for the last couple of months.  I’ve transitioned off of the WCF RIA Services team and over to ASP.NET Web Pages, NuGet, and Razor.&lt;/p&gt;  &lt;p&gt;If you have any questions or issues with the SP2 release, jump over to the &lt;a href="http://forums.silverlight.net/53.aspx" target="_blank"&gt;forums&lt;/a&gt;.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:6966778c-ad83-455e-9201-98b893671d55" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/RIAServices" rel="tag"&gt;RIAServices&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Silverlight" rel="tag"&gt;Silverlight&lt;/a&gt;&lt;/div&gt;&lt;img src="http://jeffhandley.com/aggbug/282.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/JeffHandley/~4/AqUInbQqOho" height="1" width="1"/&gt;</description>      <creator xmlns="http://purl.org/dc/elements/1.1/">Jeff Handley</creator>      <guid isPermaLink="false">http://jeffhandley.com/archive/2011/12/12/WCF-RIA-Services-V1-0-SP2-Released.aspx</guid>      <pubDate>Tue, 13 Dec 2011 07:04:51 GMT</pubDate>      <comments>http://jeffhandley.com/archive/2011/12/12/WCF-RIA-Services-V1-0-SP2-Released.aspx#feedback</comments>      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">3</comments>      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://jeffhandley.com/comments/commentRss/282.aspx</commentRss>      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://jeffhandley.com/archive/2011/12/12/WCF-RIA-Services-V1-0-SP2-Released.aspx</origLink>    </item>    <item>      <title>Portable tools rock&amp;ndash;my current favorites and a great tool</title>      <category>community</category>      <category>developer</category>      <category>silverlight</category>      <category>tech stuff</category>      <link>http://feeds.timheuer.com/~r/timheuer/~3/eut3_ab-yDw/portable-tools-for-productivity.aspx</link>      <description>&lt;p&gt;Lately &lt;a href="http://timheuer.com/blog/archive/2011/12/08/running-daily-builds-tracking-changes-source-control.aspx"&gt;I’ve been doing a lot of re-paving of machines&lt;/a&gt; and I never had my favorite tools on them, nor did I want to spend the time to re-install a set of tools that I knew I would blow away each day anyway.  Mostly my daily builds have been to do some scenario validation and is quite repetitive.  However there are times where a stable build combination comes along that I keep for a while to work on customer apps or sample development.  When these times happen I find myself needing my helpful little utilities more frequently.&lt;/p&gt;  &lt;p&gt;Recently I’ve been trying to learn &lt;a href="http://git-scm.com/"&gt;Git&lt;/a&gt;, a version control system that has been gaining popularity over the past few years and is quite cool and agile.  I am generally a huge fan of GUI tools because I feel that they are more in line with how I use other parts of the operating system/tools.  When exploring Git, however, I wasn’t a fan of having to re-install any of the tools over and over and do configuration, etc.  That’s when I discovered &lt;a href="http://code.google.com/p/msysgit/downloads/detail?name=PortableGit-1.7.8-preview20111206.7z&amp;amp;can=3&amp;amp;q="&gt;portable Git&lt;/a&gt;.  It immediately made me realize how dumb I’ve been all this time across machines and renewed my love for portable tools.&lt;/p&gt;  &lt;h2&gt;What is a portable tool?  &lt;/h2&gt;  &lt;p&gt;Quite simply it is a tool, regardless of size, that can run with no other dependencies than those that it comes with in the directory or executable.  No requirement of “oh you must have Foo framework 1.0.2.123 installed to use this” as the portable tools completely operate on their own.  Now some are single, small executables.  Others are full-blown programs that bring some serious runtime environments with them.  But both don’t require anything to pre-exist and can run without installation.&lt;/p&gt;  &lt;p&gt;I took one of my 8GB USB drives (Costco was having a sale – 3 8GB sticks for $24!!) and started loading up my favorites.  Here’s what it ended up like:&lt;/p&gt;  &lt;p&gt;&lt;img style="display: block; float: none; margin-left: auto; margin-right: auto" title="" alt="portable tools directory" src="http://storage2.timheuer.com/portabletools.PNG" width="288" height="328" /&gt;&lt;/p&gt;  &lt;p&gt;Now I use other tools on a more stable basis and when Windows 8 goes into more stable releases, I’ll probably lock to on-the-metal installs for those.  I also don’t require any &lt;a href="http://hanselman.com/tools"&gt;huge amount of tools&lt;/a&gt; all the time, but like my favorites.  So what are those directories?&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.sourcegear.com/diffmerge/"&gt;DiffMerge&lt;/a&gt; – a great, simple-but-visual tool to help do file or directory diff checking and merging if desired.  Some like WinDiff a lot, but I’ve been liking DiffMerge lately.&lt;/li&gt;    &lt;li&gt;Git – as mentioned above, this is the portable Git tools which provides a bash or command prompt environment.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.inkscape.org"&gt;Inkscape&lt;/a&gt; – a vector-based graphics tool&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.flos-freeware.ch/notepad2.html"&gt;Notepad2&lt;/a&gt; – my absolute favorite simple text editor&lt;/li&gt;    &lt;li&gt;&lt;a href="http://notepad-plus-plus.org/"&gt;Notepad++&lt;/a&gt; (npp in the above image) – another great text editor.  Why two you ask?  The one thing I like about Notepad++ is that I can open up multiple files at a time and do find/replaces across multiple files.  I don’t always do that, but it is a time saver when I need it.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.sublimetext.com/"&gt;Sublime Text&lt;/a&gt; – yet another text editor.  When looking for cool portable tools I found this one.  I’m not sure I’ll use it given Notepad2/++ but since it is in the picture, I thought I’d explain it.  Some say it is the TextMate for Windows.&lt;/li&gt;    &lt;li&gt;“portplat” – more on this in a bit.&lt;/li&gt;    &lt;li&gt;_ninja – I wish I could tell…but, well can’t&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;This USB is now extremely helpful to me on a regular basis.  After loading up a new machine I have instant access to tiny little things that just make me more familiar and immediately productive.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;NOTE: There are a few more that I use more infrequently but I think I’ll add to my USB key like reflector-type tools.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;In writing this post I wanted more…a lot more and started looking around.  Then I found &lt;a href="http://portableapps.com/"&gt;PortableApps.com&lt;/a&gt;!  I felt like a complete idiot when I discovered this because I thought I was so cool to seek out portable tools and here was this site who already aggregated them for me and went above that and made it easy to acquire them!&lt;/p&gt;  &lt;p&gt;What they do is provide a “Portable Apps Platform” that serves as basically a mini-launcher for a set of portable tools.  In addition to my folders above, here’s what my USB key now allows me to have as well:&lt;/p&gt;  &lt;p&gt;&lt;img style="display: block; float: none; margin-left: auto; margin-right: auto" title="" alt="Portable Apps Platform" src="http://storage2.timheuer.com/portableappsplat.PNG" /&gt;&lt;/p&gt;  &lt;p&gt;Now I should note that my existing tools (with the exception of diffmerge and git) are all available through this Portable Apps Platform tool setup.  I was already set up in my ways so I figured no need to change what I already had.  The Portable Apps Platform tool has a directory of a ton of apps:&lt;/p&gt;  &lt;p&gt;&lt;img style="display: block; float: none; margin-left: auto; margin-right: auto" title="" alt="Portable App Directory" src="http://storage2.timheuer.com/applisting.PNG" /&gt;&lt;/p&gt;    &lt;p&gt;Notice the scrollbar in that image above?  There is lots of stuff here.  Most I would never need, but nonetheless it is there…even portable games!&lt;/p&gt;  &lt;p&gt;So now I have versions of some browsers on my USB and two of my other favorite tools I didn’t even know were portable: 7-zip and Console2.  The great thing as well is that any configuration you make for these portable tools travel as well…so my customizations for my Console2 environment are on the USB drive and I don’t have to set up my fonts/colors each time!&lt;/p&gt;  &lt;p&gt;Within each tool there are likely customizations that you may want.  For example, I like having the “Open With…” settings on my context menu for Notepad2 and Notepad++ for convenience.  On my USB key I keep a setup.bat file with any special configurations for each tool that I want (that may either not be kept in the portable environment or may be machine-specific like the context menu).  I quickly run that and am ready to use my tools how I’m familiar with them.  &lt;/p&gt;  &lt;p&gt;Some tools also have config files built in to their environments, like Git.  I was sick of continually typing &lt;strong&gt;git config –global user.name&lt;/strong&gt; &lt;strong&gt;“Tim Heuer”&lt;/strong&gt; and other config each time I set that up.  Luckily a few questions on Twitter and &lt;a href="http://twitter.com/#!/xpaulbettsx/status/145976613593563136"&gt;Paul Betts was able to point me&lt;/a&gt; to the obvious.  So now I have a customized .gitconfig file on my USB key and whenever I use the bash environment my settings are already there!&lt;/p&gt;  &lt;h2&gt;So what’s missing?&lt;/h2&gt;  &lt;p&gt;I’m feeing liberated with these tools lately that now I’m frustrated I can’t get everything in an install-free environment!  &lt;/p&gt;  &lt;p&gt;Please don’t rant about Mac, Linux, whatever OS environment lets me do that.  I’m on Windows and it doesn’t for everything.  Yes…the registry lives…I deal with it.&lt;/p&gt;  &lt;p&gt;There are a few things I wish that were portable that would complete me.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Visual Studio – ah, someday maybe, someday.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.getpaint.net/"&gt;Paint.NET&lt;/a&gt; – While Inkscape is awesome, it isn’t as familiar with me as Photoshop-esque tools.  Paint.NET is the closest to that and would be awesome to always have around.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.fiddlertool.com"&gt;Fiddler&lt;/a&gt; – nuf said.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.silverlightspy.com"&gt;Silverlight Spy&lt;/a&gt; – extremely cool tool&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;It’s not a long list, but these are some regular tools that I wish were portable.  &lt;/p&gt;  &lt;p&gt;So there you have it.  If you haven’t discovered a portable set of tools, you should get out a USB key and load some up.  Who knows when you’ll find it handy!   &lt;/p&gt;&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:7d5d6de0-c1d5-465a-8f54-1ff9c00d0516" class="wlWriterEditableSmartContent"&gt;&lt;span class="tags"&gt;tags: &lt;a href="http://timheuer.com/blog/tags/portable/default.aspx" rel="tag"&gt;portable&lt;/a&gt;, &lt;a href="http://timheuer.com/blog/tags/notepad2/default.aspx" rel="tag"&gt;notepad2&lt;/a&gt;, &lt;a href="http://timheuer.com/blog/tags/git/default.aspx" rel="tag"&gt;git&lt;/a&gt;, &lt;a href="http://timheuer.com/blog/tags/portableapps/default.aspx" rel="tag"&gt;portableapps&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="wlWriterHeaderFooter" style="margin:0px; padding:0px 0px 0px 0px;"&gt;&lt;hr /&gt;&lt;div class="cc-license"&gt;This work is licensed under a &lt;a href="http://creativecommons.org/licenses/by/3.0/"&gt;Creative Commons Attribution By license.&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://timheuer.com/blog/aggbug/14820.aspx" width="1" height="1" /&gt;&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ZF6LNmY818dxQuP1Fnh2RAhDWcI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZF6LNmY818dxQuP1Fnh2RAhDWcI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ZF6LNmY818dxQuP1Fnh2RAhDWcI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZF6LNmY818dxQuP1Fnh2RAhDWcI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/timheuer/~4/eut3_ab-yDw" height="1" width="1"/&gt;</description>      <creator xmlns="http://purl.org/dc/elements/1.1/">Tim Heuer</creator>      <guid isPermaLink="false">http://timheuer.com/blog/archive/2011/12/12/portable-tools-for-productivity.aspx</guid>      <pubDate>Tue, 13 Dec 2011 05:51:33 GMT</pubDate>      <comments>http://timheuer.com/blog/archive/2011/12/12/portable-tools-for-productivity.aspx#feedback</comments>      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">6</comments>      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://timheuer.com/blog/comments/commentRss/14820.aspx</commentRss>      <ping xmlns="http://madskills.com/public/xml/rss/module/trackback/">http://timheuer.com/blog/services/trackbacks/14820.aspx</ping>      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://timheuer.com/blog/archive/2011/12/12/portable-tools-for-productivity.aspx</origLink>    </item>    <item>      <title>Code signing for the independent developer</title>      <category>developer</category>      <category>expression</category>      <category>silverlight</category>      <category>tech stuff</category>      <link>http://feeds.timheuer.com/~r/timheuer/~3/9BQGE8RSqrU/code-signing-for-independent-developer.aspx</link>      <description>&lt;p&gt;One of the features introduced with &lt;a href="http://silverlight.net"&gt;Silverlight&lt;/a&gt; 4 was the out-of-browser feature, enabling you to create an application that can be installed, run offline, automatically updated, etc.  As a part of that feature, some of the major code signing certificate vendors (for Authenticode certs) provided our team with test certificates so that we could go through the same process as a developer would to acquire the cert and apply it to an app…and, of course, validate it works.&lt;/p&gt;  &lt;p&gt;During that time some of those vendors had &lt;a href="http://timheuer.com/blog/archive/2010/05/05/thawte-silverlight-xap-signing-certificate-promotion.aspx"&gt;promotional&lt;/a&gt; &lt;a href="http://timheuer.com/blog/archive/2010/04/21/godaddy-code-sign-certificate-for-silverlight-xap-promo-code.aspx"&gt;codes&lt;/a&gt; for the first year for Silverlight developers, providing reduced-rate (but not reduced quality) code-signing certificates for their apps.  Still during this time there were a lot that questioned why some providers were still expensive and didn’t value “the little guy.”  By that I mean that there are a lot of smaller firms or independent personal developers.  The thought of dropping a few hundred dollars on a cert is sometimes tough.&lt;/p&gt;  &lt;p&gt;Last week a representative contacted me about their offerings as a premier partner of one of those providers.  &lt;a href="https://www.certs4less.com/codesigning.html"&gt;Certs4less.com is now offering Thawte&lt;/a&gt; code-signing certificates for individual developers.  They are doing this at a price of $99 per year (less for multi-year).  &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;: As a part of this, like before with SL4, &lt;strong&gt;Certs4Less&lt;/strong&gt; graciously offered a promotional cert for me to validate the end-to-end process so that I could speak accurately about it.  I do not use any of these certs provided by these companies for testing purpose toward any production application and they are for testing purposes only.  Besides, I’ve not found the time to write production code for apps lately ;-).  I am not getting paid for this post, nor am I getting another promo code for personal use myself.  I am simply providing what I think is valuable information and get no compensation from Thawte or Certs4Less.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I went through the process of obtaining this cert from Certs4Less.com and it produced exactly what you’d expect, a valid Authenticode code-signing certificate I can use for my Silverlight and Windows 8 application packages!  I shared a few points of feedback with the contact there and will enumerate them here for you as well (as well as some tips)&lt;/p&gt;  &lt;h2&gt;Your ‘Common Name’&lt;/h2&gt;  &lt;p&gt;Think about this one pretty good when you buy a cert.  This has a two-fold purpose why I mention this.  First, it is what your customers will see.  Do you want them to see an app signed by a name that isn’t recognizable or doesn’t make sense…of course not.  Additionally this is the name that will be verified.  So if you claim you work for Fizbin Enterprises, but that doesn’t actually exist…you’ll have issues during verification.&lt;/p&gt;  &lt;h2&gt;One year, 2 or more&lt;/h2&gt;  &lt;p&gt;One thing you should know about code-signing certificates is that once they expire, the keys change during renewal.  In some cases this can cause issues for your app (ClickOnce).  For this reason I personally recommend getting the longest you can afford.  Most likely this will be a wise investment and you’ll have piece of mind.&lt;/p&gt;  &lt;h2&gt;Apply on the computer you will receive it&lt;/h2&gt;  &lt;p&gt;One thing we as developers don’t do well is read directions.  One of the instructions you’ll see is to be sure that you do the cert request process &lt;strong&gt;from the same machine you plan on picking up the cert from&lt;/strong&gt;!  Seriously, this is critical if you use the browser process because of the private key.  If you don’t…you’ll be screwed and out some cash.  Plan ahead and don’t do this while on vacation on your laptop that you repave weekly.&lt;/p&gt;  &lt;h2&gt;Verification Process&lt;/h2&gt;  &lt;p&gt;This is an area where I think I had the most negative feedback.  These verification steps are a bit old.  I understand they have their reasons, but in this digital age the fact that I had to find a notary was…well, just inconvenient.  This Certs4Less/Thawte process required me to do this.  The ‘form’ they emailed me really wasn’t a form…just an email with text broken out with ‘==========================’ before each section.  So when I brought in my printed out GMail ‘form’ to the Notary he looked at me like I was an idiot.  The verification form was nothing formal looking at all and I had to have 3 different people look at it before they finally just said ‘okay’ and signed it.&lt;/p&gt;  &lt;p&gt;The thing that was most troublesome in this process was it was a distractor.  I had to actually print stuff out, find a passport, go to a bank, wait in line…you know, real people stuff.  But still, it felt annoying in this modern age.&lt;/p&gt;  &lt;p&gt;Some of my other process with other vendors have been a lot more streamlined and I think this can/should improve.&lt;/p&gt;  &lt;h2&gt;Acquiring the certificate&lt;/h2&gt;  &lt;p&gt;Most of the time this is a quick process.  Remember when I mentioned that developers don’t read instructions?  Yeah, I’m no different.  The final email I got indicating my cert had instructions that I didn’t read that talked about making sure I had intermediate certificates installed first.  Without this I got ambiguous errors when trying to retrieve my certificate.  Be sure to read any verification instructions in detail to provide a good experience.&lt;/p&gt;  &lt;h2&gt;Back up/export your certificate&lt;/h2&gt;  &lt;p&gt;I don’t know about you but I’d probably use my cert in automated build processes, keep it on a share (perhaps a dropbox/Live/git location) so that I don’t have to only use my one machine to sign an app.  One thing I highly recommend is after the key is installed is to use the certmgr.msc tool and export the certificate.  When doing this be sure to export the all the key data as well as cert chain so that your resulting PFX file is portable.  Then you can use it in your build process for Silverlight as described &lt;a href="http://timheuer.com/blog/archive/2010/03/15/whats-new-in-silverlight-4-rc-mix10.aspx#xap-signing"&gt;here in my previous blog post about that feature&lt;/a&gt;.&lt;/p&gt;  &lt;h2&gt;Summary&lt;/h2&gt;  &lt;p&gt;I want to thank Certs4Less for reaching out to the independent developer and providing a valuable product at an ‘independent developer’ price level.  I appreciate them also reaching out to allow me to test the process to verify it is fairly painless and the result is what I expected.&lt;/p&gt;  &lt;p&gt;Code-signing certificates are very valuable in many ways and I believe every developer should have one for their personal projects as well as their large ones.&lt;/p&gt;  &lt;p&gt;Hope this helps!   &lt;/p&gt;&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:1e04df7a-754b-4a12-b885-235347abf8d8" class="wlWriterEditableSmartContent"&gt;&lt;span class="tags"&gt;tags: &lt;a href="http://timheuer.com/blog/Tags/xaml/default.aspx" rel="tag"&gt;xaml&lt;/a&gt;, &lt;a href="http://timheuer.com/blog/Tags/silverlight/default.aspx" rel="tag"&gt;silverlight&lt;/a&gt;, &lt;a href="http://timheuer.com/blog/Tags/xap/default.aspx" rel="tag"&gt;xap&lt;/a&gt;, &lt;a href="http://timheuer.com/blog/Tags/ssl/default.aspx" rel="tag"&gt;ssl&lt;/a&gt;, &lt;a href="http://timheuer.com/blog/Tags/thawte/default.aspx" rel="tag"&gt;thawte&lt;/a&gt;, &lt;a href="http://timheuer.com/blog/Tags/certs4less/default.aspx" rel="tag"&gt;certs4less&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="wlWriterHeaderFooter" style="margin:0px; padding:0px 0px 0px 0px;"&gt;&lt;hr /&gt;&lt;div class="cc-license"&gt;This work is licensed under a &lt;a href="http://creativecommons.org/licenses/by/3.0/"&gt;Creative Commons Attribution By license.&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://timheuer.com/blog/aggbug/14819.aspx" width="1" height="1" /&gt;&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/oksf-qJgcTsI5VN9aCQaHFag6ck/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oksf-qJgcTsI5VN9aCQaHFag6ck/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/oksf-qJgcTsI5VN9aCQaHFag6ck/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oksf-qJgcTsI5VN9aCQaHFag6ck/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/timheuer/~4/9BQGE8RSqrU" height="1" width="1"/&gt;</description>      <creator xmlns="http://purl.org/dc/elements/1.1/">Tim Heuer</creator>      <guid isPermaLink="false">http://timheuer.com/blog/archive/2011/12/12/code-signing-for-independent-developer.aspx</guid>      <pubDate>Tue, 13 Dec 2011 01:01:10 GMT</pubDate>      <comments>http://timheuer.com/blog/archive/2011/12/12/code-signing-for-independent-developer.aspx#feedback</comments>      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">6</comments>      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://timheuer.com/blog/comments/commentRss/14819.aspx</commentRss>      <ping xmlns="http://madskills.com/public/xml/rss/module/trackback/">http://timheuer.com/blog/services/trackbacks/14819.aspx</ping>      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://timheuer.com/blog/archive/2011/12/12/code-signing-for-independent-developer.aspx</origLink>    </item>    <item>      <title>Silverlight 5 Released with awesome samples in the Silverlight Toolkit</title>      <category>developer</category>      <category>expression</category>      <category>ria</category>      <category>riaservices</category>      <category>silverlight</category>      <category>mix</category>      <category>tech stuff</category>      <category>ux</category>      <category>web</category>      <category>visual studio</category>      <category>xaml</category>      <category>wpf</category>      <category>wp7dev</category>      <link>http://feeds.timheuer.com/~r/timheuer/~3/NrYm0sJbdC0/silverlight-5-released-3d-extension-toolkit.aspx</link>      <description>&lt;p&gt;&lt;a href="http://silverlight.net"&gt;&lt;img style="margin: 0px 10px 5px 0px; display: inline; float: left" align="left" src="http://storage2.timheuer.com/sl5bloglogo.png" width="95" height="94" /&gt;Silverlight&lt;/a&gt; 5 is finally released!  Congratulations to the team for getting through some of the toughest parts of finishing a product and validating with customers.  It’s been a pretty crazy year for the Silverlight team and this is a really good release for the product bringing some solid features to the platform for folks to leverage in building their apps.&lt;/p&gt;  &lt;p&gt;In addition to the platform having a release, I was really pleased to see an update to the Silverlight Toolkit, which has been one of the most popular things almost every Silverlight developer/application uses.  If you didn’t know where to get things, here’s some &lt;a href="http://www.silverlight.net/downloads"&gt;links&lt;/a&gt; for you:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=229318"&gt;Silverlight 5 Tools for VS&lt;/a&gt; (requires SP1)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://silverlight.codeplex.com/"&gt;Silverlight 5 Toolkit&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Developer runtime for Windows (&lt;a href="http://go.microsoft.com/fwlink/?LinkId=229323"&gt;32 bit&lt;/a&gt;, &lt;a href="http://go.microsoft.com/fwlink/?LinkId=229324"&gt;64 bit&lt;/a&gt;) and &lt;a href="http://go.microsoft.com/fwlink/?LinkId=229325"&gt;Mac OSX&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Rather than enumerate all the &lt;a href="http://timheuer.com/blog/archive/2011/04/13/whats-new-in-silverlight-5-a-guide.aspx"&gt;good features&lt;/a&gt; that were finished from the RC/Beta, you should head on over to listen/watch &lt;a href="http://10rem.net"&gt;Pete Brown&lt;/a&gt;’s presentation on the &lt;a href="http://www.silverlight.net/learn/overview/what's-new-in-silverlight-5/silverlight-5-release-overview"&gt;Silverlight 5 release overview&lt;/a&gt;.  He also has a &lt;a href="http://10rem.net/blog/2011/12/09/announcing-the-release-of-silverlight-5"&gt;post about the release&lt;/a&gt; enumerating in short form (with links to tutorials for some of the key features) on his blog.&lt;/p&gt;  &lt;p&gt;What I think is really cool is also the amount of effort put into the Silverlight Toolkit for this release.  The one large thing of note is the extensions to enhance your 3D development experience in Silverlight 5.  &lt;a href="http://blogs.msdn.com/b/eternalcoding/archive/2011/10/04/silverlight-toolkit-september-2011-for-silverlight-5-what-s-new.aspx"&gt;David Catuhe has a post&lt;/a&gt; outlining in great detail some of the 3D extensions included in the toolkit.  You should really go check out his post.  Scrolling to the bottom I was really surprised/impressed to see a set of 3D samples included to help you understand how to use this feature:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Bloom – uses the Content Pipeline and post-processing effects&lt;/li&gt;    &lt;li&gt;CustomModelEffect&lt;/li&gt;    &lt;li&gt;Generated geometry – how 3D models generated by code&lt;/li&gt;    &lt;li&gt;Particles – c’mon, who doesn’t like a particle generator!&lt;/li&gt;    &lt;li&gt;Platformer - while not 3D it appears, it is a complete game with levels&lt;/li&gt;    &lt;li&gt;3D Animation&lt;/li&gt;    &lt;li&gt;Skinning – shows skinning a character using the content pipeline&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I mean, wow, great stuff David!  &lt;/p&gt;  &lt;p&gt;I hope you all enjoy the release of Silverlight 5 and kudos to the team for getting it out the door.  Go download the bits and start building awesome stuff.   &lt;/p&gt;&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:9476f806-27d3-4b64-bddb-93ada0f5ee36" class="wlWriterEditableSmartContent"&gt;&lt;span class="tags"&gt;tags: &lt;a href="http://timheuer.com/blog/Tags/xaml/default.aspx" rel="tag"&gt;xaml&lt;/a&gt;, &lt;a href="http://timheuer.com/blog/Tags/silverlight+5/default.aspx" rel="tag"&gt;silverlight 5&lt;/a&gt;, &lt;a href="http://timheuer.com/blog/Tags/silverlight/default.aspx" rel="tag"&gt;silverlight&lt;/a&gt;, &lt;a href="http://timheuer.com/blog/Tags/xna/default.aspx" rel="tag"&gt;xna&lt;/a&gt;, &lt;a href="http://timheuer.com/blog/Tags/3d/default.aspx" rel="tag"&gt;3d&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="wlWriterHeaderFooter" style="margin:0px; padding:0px 0px 0px 0px;"&gt;&lt;hr /&gt;&lt;div class="cc-license"&gt;This work is licensed under a &lt;a href="http://creativecommons.org/licenses/by/3.0/"&gt;Creative Commons Attribution By license.&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://timheuer.com/blog/aggbug/14818.aspx" width="1" height="1" /&gt;&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/L0e8dgw42jHoT5JxMZxtKnJTAjE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/L0e8dgw42jHoT5JxMZxtKnJTAjE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/L0e8dgw42jHoT5JxMZxtKnJTAjE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/L0e8dgw42jHoT5JxMZxtKnJTAjE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/timheuer/~4/NrYm0sJbdC0" height="1" width="1"/&gt;</description>      <creator xmlns="http://purl.org/dc/elements/1.1/">Tim Heuer</creator>      <guid isPermaLink="false">http://timheuer.com/blog/archive/2011/12/12/silverlight-5-released-3d-extension-toolkit.aspx</guid>      <pubDate>Mon, 12 Dec 2011 23:27:00 GMT</pubDate>      <comments>http://timheuer.com/blog/archive/2011/12/12/silverlight-5-released-3d-extension-toolkit.aspx#feedback</comments>      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">9</comments>      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://timheuer.com/blog/comments/commentRss/14818.aspx</commentRss>      <ping xmlns="http://madskills.com/public/xml/rss/module/trackback/">http://timheuer.com/blog/services/trackbacks/14818.aspx</ping>      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://timheuer.com/blog/archive/2011/12/12/silverlight-5-released-3d-extension-toolkit.aspx</origLink>    </item>    <item>      <title>10 Laps around Silverlight 5 (Part 10 of 10)</title>      <description>&lt;div style="border:1px solid #dddddd;padding-bottom: 5px; background-color: #f3f3f3; margin-top: 5px; padding-left: 10px; padding-top: 5px;"&gt;This article is sponsored by &lt;a href="http://ads.silverlightshow.net/a.aspx?ZoneID=53&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=95076" target="_blank"&gt;&lt;img alt="" width="0" height="0" style="border:0px solid;" src="http://ads.silverlightshow.net/a.aspx?ZoneID=53&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=95076" /&gt;Telerik RadControls for Silverlight&lt;/a&gt;. Related content from the sponsor:&lt;p&gt;&lt;strong&gt;Check out what's new!&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;    &lt;li&gt;&lt;span style="font-size: 14px;"&gt;&lt;a href="http://ads.silverlightshow.net/a.aspx?ZoneID=52&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=80309" target="_blank"&gt;    &lt;img alt="" src="http://ads.silverlightshow.net/a.aspx?ZoneID=52&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=80309" width="0" height="0" style="border-width: 0px;border-style: solid;" /&gt;The latest Q3 2011 release is out! Introducing ChartView &amp;amp; next-generation CRM demo with full source code.&lt;/a&gt;&lt;/span&gt; &lt;/li&gt;    &lt;li&gt;&lt;span style="font-size: 14px;"&gt;&lt;a href="http://ads.silverlightshow.net/a.aspx?ZoneID=51&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=78027" target="_blank"&gt;    &lt;img alt="" src="http://ads.silverlightshow.net/a.aspx?ZoneID=51&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=78027" width="0" height="0" style="border-width: 0px;border-style: solid;" /&gt;Introducing Telerik Patterns &amp;amp; Practices for Silverlight and WPF.&lt;/a&gt;&lt;/span&gt; &lt;/li&gt;    &lt;li&gt;&lt;span style="font-size: 14px;"&gt;&lt;a href="http://ads.silverlightshow.net/a.aspx?ZoneID=54&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=39336" target="_blank"&gt;    &lt;img alt="" src="http://ads.silverlightshow.net/a.aspx?ZoneID=54&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=39336" width="0" height="0" style="border-width: 0px;border-style: solid;" /&gt;The RadControls for Silverlight has been redesigned.  Explore it!&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;table width="20"&gt;    &lt;tbody&gt;        &lt;tr&gt;            &lt;td&gt;            &lt;div class="fb-like" data-show-faces="true" data-send="false" data-href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-10-of-10.aspx" data-font="segoe ui" data-layout="button_count"&gt;&lt;/div&gt;            &lt;/td&gt;            &lt;td&gt;&lt;a href="https://twitter.com/share" class="twitter-share-button" data-via="silverlightshow" data-counturl="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-10-of-10.aspx" data-count="horizontal" data-text="Reading SilverlightShow article '10 Laps around Silverlight 5 (Part 10 of 10)' by @mbcrump #sl5" data-url="http://slshow.net/vtToOa"&gt;Tweet&lt;/a&gt;&lt;/td&gt;            &lt;td&gt;&lt;g:plusone size="medium" href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-10-of-10.aspx"&gt;&lt;/g:plusone&gt;            &lt;/td&gt;            &lt;td&gt;            &lt;/td&gt;        &lt;/tr&gt;    &lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;   &lt;br /&gt;To contact me directly please visit my blog at &lt;a href="http://michaelcrump.net/"&gt;http://michaelcrump.net/&lt;/a&gt; or through twitter at &lt;a href="http://twitter.com/mbcrump"&gt;http://twitter.com/mbcrump&lt;/a&gt;.&lt;/p&gt;&lt;div style="border:1px solid #dddddd;padding-bottom: 5px; background-color: #f3f3f3; margin-top: 5px; padding-left: 10px; width: 200px; float: right; margin-left: 10px; padding-top: 5px;"&gt;&lt;h3&gt;More resources...&lt;/h3&gt;&lt;ul style="list-style-type: circle; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-left: 20px; font-size: 12px;"&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/news/Free-Silverlight-Show-Webinar-Introduction-to-XAML-Development-on-Windows-8.aspx"&gt;Recording of Webinar: XAML Development on Windows 8&lt;/a&gt; &lt;/li&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/GetStarted.aspx"&gt;Get Started with Silverlight 4&lt;/a&gt; &lt;/li&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/ebooks/silverlight_exam.aspx"&gt;'Getting Ready for Microsoft Silverlight Exam 70-506' Ebook &lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style="padding-bottom: 5px; text-align: center;"&gt;&lt;a href="http://www.silverlightshow.net/ebooks/silverlight_exam.aspx"&gt;&lt;img style="border:0px solid;" alt="Getting Ready for Microsoft Silverlight Exam 70-506: Ebook" src="http://www.silverlightshow.net/Storage/sl_exam_thumb_small.png" usemap="#rade_img_map_1291385581316" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="font-size: 12px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.silverlightshow.net/ebooks.aspx"&gt;All SilverlightShow Ebooks&lt;/a&gt;&amp;nbsp;&lt;img alt="" src="http://www.silverlightshow.net/Storage/arrow-content.jpg" /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;This article is Part 10 of the series &amp;ldquo;10 Laps around Silverlight 5.&amp;rdquo; If you have missed any other section then please see the Roadmap below. &lt;/p&gt;To refresh your memory on what Silverlight is:&lt;p&gt;Microsoft Silverlight is an application framework for writing Rich Internet Applications. &lt;/p&gt;The run-time environment is available as a plug-in for most web browsers and works on a variety of operating systems including Windows, Mac and Linux.&lt;p&gt;To recap what we learned in the previous section:&lt;/p&gt;&lt;ul&gt;    &lt;li&gt;We took a look at several new controls in Silverlight 5 including: Double and Triple click support and ComboBox Type-Ahead. &lt;/li&gt;    &lt;li&gt;We then took a deeper dive into the PivotViewer control as it is more complex than the others and provided additional links. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;In this article, I am going to discuss several new features that did not fit in any of the above categories.&amp;nbsp; We will discuss In-Browser HTML, PostScript and Tasks for TPL. Please review the Roadmap for the series before going any further.&lt;/p&gt;&lt;h3&gt;The Roadmap for this Series&lt;/h3&gt;&lt;p&gt;I&amp;rsquo;ve included the Roadmap for the series below as you may want to visit other sections as you learn Silverlight 5. I picked the following features as I thought that you may find them useful in your day-to-day work. If you want a specific topic covered then please leave it in the comments below.&lt;/p&gt;&lt;p&gt;1) &lt;strong&gt;&lt;a href="http://www.silverlightshow.net/items/Silverlight-5-Part-1-of-10.aspx"&gt;Introduction to SL5 &amp;ndash; This post which provides a brief history of Silverlight and relevant links.&lt;/a&gt;&lt;/strong&gt; &lt;/p&gt;&lt;p&gt;2) &lt;strong&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-2-of-10.aspx"&gt;Binding- Ancestor Relative Source Binding and Implicit Data Templates.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;3) &lt;strong&gt;&lt;/strong&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-3.aspx" target="_self"&gt;&lt;strong&gt;Graphics&lt;/strong&gt; &lt;strong&gt;&amp;ndash;XNA 3D API and Improved Graphics Stack&lt;/strong&gt;.&lt;/a&gt;&lt;/p&gt;&lt;p&gt;4) &lt;strong&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-4-of-10.aspx"&gt;Media - Low-Latency Sound using XNA and Remote Control and Media Command (Keys) Support.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;5) &lt;strong&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-5-of-10.aspx"&gt;Text - Text Tracking and Leading, Linked and Multi-column Text, OpenType Support, Pixel Snapped Text and TextOptions.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;6) &lt;strong&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-6-of-10.aspx"&gt;Operating System Integration - Part 1 - P/Invoke, Multiple Windows and Unrestricted File System Access in Full Trust.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;7) &lt;strong&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-7-of-10.aspx"&gt;Operating System Integration - Part 2 - Default Filename for SaveFileDialog, 64-bit browser support and Power Awareness.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;8) &lt;strong&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-8-of-10.aspx"&gt;Productivity and Performance - XAML Binding Debugging, Parser Performance Improvements and Multi-core JIT for improved start-up time.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;9) &lt;strong&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-9-of-10.aspx"&gt;Controls - Double and Triple click support, PivotViewer and ComboBox Type-Ahead.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;10) &lt;strong&gt;Other items &lt;strong&gt;[This post] &lt;/strong&gt;&lt;/strong&gt;- In-Browser HTML, PostScript and Tasks for TPL.&lt;/p&gt;&lt;h3&gt;&lt;/h3&gt;&lt;h3&gt;In-Browser HTML&lt;/h3&gt;&lt;p&gt;In Silverlight 4, we could use the WebBrowser control only in an &amp;ldquo;Out-of-Browser&amp;rdquo; application. This has changed in Silverlight 5 as we can now use the WebBrowser control in the browser (IE). It will however require that you make a few changes to your system. Let&amp;rsquo;s get started: &lt;/p&gt;&lt;p&gt;1)&lt;strong&gt; Update the registry&lt;/strong&gt; &amp;ndash; Locate the following keys:&lt;/p&gt;&lt;p&gt;If you running on a 32 bit machine, &lt;/p&gt;&lt;p&gt;&lt;strong&gt;HKEY_LOCAL_MACHINE\Software\Microsoft\Silverlight\&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;and if you are running on a 64-bit machine, &lt;/p&gt;&lt;p&gt;&lt;strong&gt;HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Silverlight\&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;change the &lt;strong&gt;UpdateConsentMode&lt;/strong&gt; from a 0 to 1. &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/mbcrump/________1_2.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="1" alt="1" src="http://www.silverlightshow.net/Storage/Users/mbcrump/________1_thumb.png" width="627" height="282" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;2) &lt;strong&gt;Sign the XAP File&lt;/strong&gt; - Right click on the Silverlight application and go to properties. Choose &lt;strong&gt;Signing&lt;/strong&gt; and check the checkbox&lt;strong&gt; Sign the .XAP file&lt;/strong&gt;. Now click on the button &lt;strong&gt;Create Test Certificate&lt;/strong&gt;. Enter any password that you want and hit the OK button. Now click on the &lt;strong&gt;More Details&lt;/strong&gt; button.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/mbcrump/__________2_2.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="2" alt="2" src="http://www.silverlightshow.net/Storage/Users/mbcrump/__________2_thumb.png" width="544" height="350" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Click on the &lt;strong&gt;Install Certificate&lt;/strong&gt; button. Clicking on the button brings up the &lt;strong&gt;Certificate Import wizard&lt;/strong&gt;. Click on the &lt;strong&gt;Next&lt;/strong&gt; button and choose Place all certificates in the following store. Click on the Browse button. This will show you a Certificate Store. Choose &lt;strong&gt;Trusted Publisher&lt;/strong&gt; and finish the wizard. Now repeat the same step to install this certificate in &lt;strong&gt;Trusted Root Certification Authorities&lt;/strong&gt;.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/mbcrump/3_4.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="3" alt="3" src="http://www.silverlightshow.net/Storage/Users/mbcrump/3_thumb_1.png" width="486" height="442" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;3) &lt;strong&gt;Enable Out-of-Browser and Require elevated trust when running in-browser.&lt;/strong&gt; Right click on the Silverlight application and go to properties. Place a checkmark in &lt;strong&gt;Enable Out-of-Browser&lt;/strong&gt; and &lt;strong&gt;Require elevated trust when running in-browser.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/mbcrump/________4_2.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="4" alt="4" src="http://www.silverlightshow.net/Storage/Users/mbcrump/________4_thumb.png" width="573" height="464" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Now let&amp;rsquo;s switch over to the MainPage.xaml and replace the Grid with the following code:&lt;/p&gt;&lt;div style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Grid&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;x:Name&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="LayoutRoot"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Background&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="White"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt;        &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;WebBrowser&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;x:Name&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="webBrowser"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Source&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="http://michaelcrump.net/"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;Grid&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;If we run our application now (using Internet Explorer), then we will see the WebBrowser control working inside of the browser.&lt;/p&gt;&lt;p&gt;&lt;em&gt;Note: This will not work in Chrome, Safari, others (Only Internet Explorer).&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/mbcrump/______5_2.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="5" alt="5" src="http://www.silverlightshow.net/Storage/Users/mbcrump/______5_thumb.png" width="566" height="360" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;You can also add html pages to your project and point the source to that file as well. &lt;/p&gt;&lt;h3&gt;PostScript Vector Printing&lt;/h3&gt;&lt;p&gt;In Silverlight 4, we had bitmap-based printing. This meant that every time a page was going to print that Silverlight 4 sent the bitmap representing the entire page to the printer. We quickly found out that this resulted in horrible performance for larger print jobs. Now in Silverlight 5 we have PostScript Vector printing. This provides us with a much faster solution. Let&amp;rsquo;s get started building a sample application that uses this features. &lt;/p&gt;&lt;p&gt;Let&amp;rsquo;s switch over to the MainPage.xaml and replace the Grid with the following code:&lt;/p&gt;&lt;div style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;StackPanel&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;x:Name&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="LayoutRoot"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Background&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="White"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;HorizontalAlignment&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="Center"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;VerticalAlignment&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="Center"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Button&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;x:Name&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="basicVector"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Click&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="basicVector_Click"&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Button&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;x:Name&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="forceVector"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Click&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="forceVector_Click"&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;StackPanel&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;We can navigate over to our MainPage.xaml.cs file and add in the following code snippet for our button event handlers:&lt;/p&gt;&lt;div style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; basicVector_Click(&lt;span style="color: #0000ff;"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;     PrintDocument document = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; PrintDocument();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;     document.PrintPage += (s, ea) =&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;         StackPanel stPanel = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; StackPanel();                &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;for&lt;/span&gt; (&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; i = 0; i &amp;lt; 10; i++)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt;         {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt;  11:&lt;/span&gt;             TextBlock tb = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; TextBlock();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt;  12:&lt;/span&gt;             tb.Text = &lt;span style="color: #006080;"&gt;"Basic Vector mode."&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt;  13:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum14" style="color: #606060;"&gt;  14:&lt;/span&gt;             stPanel.Children.Add(tb);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum15" style="color: #606060;"&gt;  15:&lt;/span&gt;         }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum16" style="color: #606060;"&gt;  16:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum17" style="color: #606060;"&gt;  17:&lt;/span&gt;         ea.PageVisual = stPanel;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum18" style="color: #606060;"&gt;  18:&lt;/span&gt;         ea.HasMorePages = &lt;span style="color: #0000ff;"&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum19" style="color: #606060;"&gt;  19:&lt;/span&gt;     };&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum20" style="color: #606060;"&gt;  20:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum21" style="color: #606060;"&gt;  21:&lt;/span&gt;     document.Print(&lt;span style="color: #006080;"&gt;"Basic Vector Demo"&lt;/span&gt;);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum22" style="color: #606060;"&gt;  22:&lt;/span&gt;     &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum23" style="color: #606060;"&gt;  23:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum24" style="color: #606060;"&gt;  24:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum25" style="color: #606060;"&gt;  25:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; forceVector_Click(&lt;span style="color: #0000ff;"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum26" style="color: #606060;"&gt;  26:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum27" style="color: #606060;"&gt;  27:&lt;/span&gt;     PrintDocument document = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; PrintDocument();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum28" style="color: #606060;"&gt;  28:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum29" style="color: #606060;"&gt;  29:&lt;/span&gt;     document.PrintPage += (s, ea) =&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum30" style="color: #606060;"&gt;  30:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum31" style="color: #606060;"&gt;  31:&lt;/span&gt;         StackPanel stPanel = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; StackPanel();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum32" style="color: #606060;"&gt;  32:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum33" style="color: #606060;"&gt;  33:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;for&lt;/span&gt; (&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; i = 0; i &amp;lt; 10; i++)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum34" style="color: #606060;"&gt;  34:&lt;/span&gt;         {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum35" style="color: #606060;"&gt;  35:&lt;/span&gt;             TextBlock tb = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; TextBlock();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum36" style="color: #606060;"&gt;  36:&lt;/span&gt;             tb.Text = &lt;span style="color: #006080;"&gt;"Forced Vector mode."&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum37" style="color: #606060;"&gt;  37:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum38" style="color: #606060;"&gt;  38:&lt;/span&gt;             stPanel.Children.Add(tb);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum39" style="color: #606060;"&gt;  39:&lt;/span&gt;         }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum40" style="color: #606060;"&gt;  40:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum41" style="color: #606060;"&gt;  41:&lt;/span&gt;         ea.PageVisual = stPanel;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum42" style="color: #606060;"&gt;  42:&lt;/span&gt;         ea.HasMorePages = &lt;span style="color: #0000ff;"&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum43" style="color: #606060;"&gt;  43:&lt;/span&gt;     };&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum44" style="color: #606060;"&gt;  44:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum45" style="color: #606060;"&gt;  45:&lt;/span&gt;     PrinterFallbackSettings settings = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; PrinterFallbackSettings();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum46" style="color: #606060;"&gt;  46:&lt;/span&gt;     settings.ForceVector = &lt;span style="color: #0000ff;"&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum47" style="color: #606060;"&gt;  47:&lt;/span&gt;     settings.OpacityThreshold = 0.7;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum48" style="color: #606060;"&gt;  48:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum49" style="color: #606060;"&gt;  49:&lt;/span&gt;     document.Print(&lt;span style="color: #006080;"&gt;"Forced Vector Print"&lt;/span&gt;, settings);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum50" style="color: #606060;"&gt;  50:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;In our first button, we have a basic PostScript Vector Printing job. We create a &lt;strong&gt;PrintDocument&lt;/strong&gt; (which was also in SL4), then add a &lt;strong&gt;PrintPage&lt;/strong&gt; with some basic text to it. We finally print the document using Vector printing with &lt;strong&gt;document.Print&lt;/strong&gt;.&lt;/p&gt;&lt;p&gt;In our second button, we do the same thing but we call &lt;strong&gt;PrinterFallbackSettings&lt;/strong&gt; and force the print job to print in Vector mode. We can also set the Opacity value by calling &lt;strong&gt;OpacityThreshold&lt;/strong&gt;. &lt;/p&gt;&lt;h3&gt;Tasks Parallel Library (TPL)&lt;/h3&gt;&lt;p&gt;In short, TPL is to simply asynchronous methods. Silverlight 5 does not include the full TPL but it does provide Tasks and it&amp;rsquo;s related factories. Which is exactly what you want! Let&amp;rsquo;s get started. &lt;/p&gt;&lt;p&gt;We are going to use a sample XML file provided by Microsoft found &lt;a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms762271(v=vs.85).aspx"&gt;here&lt;/a&gt;. Go ahead and download it and add it to your Web Project with the name of books.xml. &lt;/p&gt;&lt;p&gt;Next, Let&amp;rsquo;s go ahead and navigate over to our MainPage.xaml.cs file and add in the proper namespaces to use TPL. Next, we will add in the second code snippet:&lt;/p&gt;&lt;div style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; System;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; System.Linq;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; System.Net;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; System.Threading.Tasks;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; System.Windows;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; System.Windows.Controls;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; System.Diagnostics;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; MainPage()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;     InitializeComponent();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;     Loaded += &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; RoutedEventHandler(MainPage_Loaded);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; MainPage_Loaded(&lt;span style="color: #0000ff;"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; uri = &lt;span style="color: #006080;"&gt;"http://localhost:15863/books.xml"&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt;  11:&lt;/span&gt;     var request = HttpWebRequest.Create(uri);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt;  12:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt;  13:&lt;/span&gt;     Task.Factory.FromAsync&amp;lt;WebResponse&amp;gt;(&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum14" style="color: #606060;"&gt;  14:&lt;/span&gt;       request.BeginGetResponse, request.EndGetResponse, &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum15" style="color: #606060;"&gt;  15:&lt;/span&gt;       .ContinueWith(&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum16" style="color: #606060;"&gt;  16:&lt;/span&gt;         task =&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum17" style="color: #606060;"&gt;  17:&lt;/span&gt;         {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum18" style="color: #606060;"&gt;  18:&lt;/span&gt;             var response = (HttpWebResponse)task.Result;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum19" style="color: #606060;"&gt;  19:&lt;/span&gt;             Debug.WriteLine(&lt;span style="color: #006080;"&gt;"Content Type: "&lt;/span&gt; + response.ContentType);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum20" style="color: #606060;"&gt;  20:&lt;/span&gt;             Debug.WriteLine(&lt;span style="color: #006080;"&gt;"Content Length: "&lt;/span&gt; + response.ContentLength);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum21" style="color: #606060;"&gt;  21:&lt;/span&gt;             Debug.WriteLine(&lt;span style="color: #006080;"&gt;"Method: "&lt;/span&gt; + response.Method);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum22" style="color: #606060;"&gt;  22:&lt;/span&gt;             Debug.WriteLine(&lt;span style="color: #006080;"&gt;"Status Code: "&lt;/span&gt; + response.StatusCode);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum23" style="color: #606060;"&gt;  23:&lt;/span&gt;             Debug.WriteLine(&lt;span style="color: #006080;"&gt;"Status Description: "&lt;/span&gt; + response.StatusDescription);  &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum24" style="color: #606060;"&gt;  24:&lt;/span&gt;         });&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum25" style="color: #606060;"&gt;  25:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;Note: You will need to change the localhost port in the above code sample before proceeding. &lt;/em&gt;&lt;/p&gt;&lt;p&gt;Go ahead and run the application and then look at your Output window in VS2010. You should see the following information. &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/mbcrump/______6_2.png"&gt;&lt;img style="border:0px;  background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="6" alt="6" src="http://www.silverlightshow.net/Storage/Users/mbcrump/______6_thumb.png" width="479" height="311" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The thing to note here is Task.Factory.FromAsync. This creates a Tasks that represents a pair of begin and end methods that conform to the Asynchronous Programming Model Pattern. &lt;/p&gt;&lt;h3&gt;Conclusion&lt;/h3&gt;&lt;p&gt;At this point, we have taken a dive into all of the new features of Silverlight 5. Now that you are equipped with a solid understanding of what Silverlight 5 has to offer, you can begin to use this in your own applications. I want to thank you for reading this series and if you ever have any questions feel free to contact me on the various sources listed below. I also wanted to thank &lt;a href="http://www.silverlightshow.net/"&gt;SilverlightShow.Net&lt;/a&gt; and &lt;a href="http://www.telerik.com/"&gt;Telerik&lt;/a&gt; for giving me the opportunity to share this information&amp;nbsp; with everyone. I hope that you enjoyed this series and if you To contact me directly please visit my blog at &lt;a href="http://michaelcrump.net/"&gt;http://michaelcrump.net/&lt;/a&gt; or through twitter at &lt;a href="http://twitter.com/mbcrump"&gt;http://twitter.com/mbcrump&lt;/a&gt;.&lt;/p&gt;</description>      <link>http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-10-of-10.aspx</link>      <author>editorial@silverlightshow.net (Michael Crump )</author>      <comments>http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-10-of-10.aspx#comments</comments>      <guid isPermaLink="true">http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-10-of-10.aspx</guid>      <pubDate>Mon, 12 Dec 2011 21:50:15 GMT</pubDate>    </item>    <item>      <title>Silverlight Show: 10 Laps around Silverlight 5 (Part 9 of 10)</title>      <link>http://feedproxy.google.com/~r/TheSilverlightBlog/~3/4WGiCZpe00Y/silverlight-show-10-laps-around-silverlight-5-part-9-of-10.aspx</link>      <pubDate>Mon, 12 Dec 2011 16:47:00 GMT</pubDate>      <guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10246805</guid>      <creator xmlns="http://purl.org/dc/elements/1.1/">Silverlight Team</creator>      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">0</comments>      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/silverlight/rsscomments.aspx?WeblogPostID=10246805</commentRss>      <comments>http://blogs.msdn.com/b/silverlight/archive/2011/12/12/silverlight-show-10-laps-around-silverlight-5-part-9-of-10.aspx#comments</comments>      <description>&lt;p&gt;In this article, a discussion of several new features/controls such as Double and Triple click support, PivotViewer and ComboBox Type-Ahead. Please review the Roadmap for the series before going any further.&lt;/p&gt;  &lt;h2&gt;The Roadmap for this Series&lt;/h2&gt;  &lt;p&gt;Included, the Roadmap for the series below as you may want to visit other sections as you learn Silverlight 5. I picked the following features as I thought that you may find them useful in your day-to-day work. If you want a specific topic covered then please leave it in the comments below.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://www.silverlightshow.net/items/Silverlight-5-Part-1-of-10.aspx"&gt;Introduction to SL5 – provides a brief history of Silverlight and relevant links.&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-2-of-10.aspx"&gt;Binding - Ancestor Relative Source Binding and Implicit Data Templates.&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-4-of-10.aspx"&gt;Graphics - XNA 3D API and Improved Graphics Stack.&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-4-of-10.aspx"&gt;Media - Low-Latency Sound using XNA and Remote Control and Media Command (Keys) Support.&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/silverlight/archive/2011/11/18/silverlight-show-10-laps-around-silverlight-5-part-5-of-10.aspx"&gt;Text - Text Tracking and Leading, Linked and Multi-column Text, OpenType Support, Pixel Snapped Text and TextOptions.&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-6-of-10.aspx"&gt;Operating System Integration Part 1 - P/Invoke, Multiple Windows and Unrestricted File System Access in Full Trust.&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-7-of-10.aspx"&gt;Operating System Integration Part 2 - Default Filename for SaveFileDialog, 64-bit browser support and Power Awareness.&lt;/a&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/silverlight/archive/2011/12/02/silverlight-show-10-laps-around-silverlight-5-part-8-of-10.aspx"&gt;Productivity and Performance - XAML Binding Debugging, Parser Performance Improvements and Multi-core JIT for improved start-up time.&lt;/a&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Controls - [This Post] - Double and Triple click support, PivotViewer and ComboBox Type-Ahead.&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;Other items - In-Browser HTML, PostScript and Tasks for TPL &lt;/li&gt; &lt;/ol&gt;  &lt;h2&gt;Double and Triple Click Support&lt;/h2&gt;  &lt;p&gt;One of the new features in Silverlight 5 is the ability to use Double and Triple Click Support. This functionality will tell you how many times the user has clicked the mouse button. The property is called &lt;strong&gt;ClickCount&lt;/strong&gt; and resides in the &lt;strong&gt;MouseButtonEventArgs&lt;/strong&gt; class. Let’s take a look at how to use this new feature.&lt;/p&gt;  &lt;p&gt;Fire up a new Silverlight 5 project and give it any name that you want. &lt;/p&gt;  &lt;p&gt;Switch over to the MainPage.xaml.cs and add the following code:&lt;em&gt; (Note: You may not need the MainPage() Method section)&lt;/em&gt;&lt;/p&gt;  &lt;pre&gt;   1: public MainPage()&lt;/pre&gt;&lt;pre&gt;   2: {&lt;/pre&gt;&lt;pre&gt;   3:     InitializeComponent();&lt;/pre&gt;&lt;pre&gt;   4: }&lt;/pre&gt;&lt;pre&gt;   5:  &lt;/pre&gt;&lt;pre&gt;   6: private void textBlock1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)&lt;/pre&gt;&lt;pre&gt;   7: {&lt;/pre&gt;&lt;pre&gt;   8:     textBlock1.Text = e.ClickCount.ToString();&lt;/pre&gt;&lt;pre&gt;   9: }&lt;/pre&gt;&lt;p&gt;Switch back over to the MainPage.xaml and add in the following code replacing the current Grid:&lt;/p&gt;&lt;pre&gt;   1: &amp;lt;Grid x:Name=&amp;quot;LayoutRoot&amp;quot; Background=&amp;quot;White&amp;quot;&amp;gt;&lt;/pre&gt;&lt;pre&gt;   2:       &amp;lt;Border BorderBrush=&amp;quot;Black&amp;quot; BorderThickness=&amp;quot;1&amp;quot; Margin=&amp;quot;52,49,68,74&amp;quot; CornerRadius=&amp;quot;10&amp;quot;&amp;gt;&lt;/pre&gt;&lt;pre&gt;   3:           &amp;lt;TextBlock Height=&amp;quot;152&amp;quot; HorizontalAlignment=&amp;quot;Center&amp;quot; x:Name=&amp;quot;textBlock1&amp;quot; Text=&amp;quot;0&amp;quot; VerticalAlignment=&amp;quot;Center&amp;quot; Width=&amp;quot;244&amp;quot; MouseLeftButtonDown=&amp;quot;textBlock1_MouseLeftButtonDown&amp;quot; Foreground=&amp;quot;#FFFF2E2E&amp;quot; FontSize=&amp;quot;96&amp;quot; TextAlignment=&amp;quot;Center&amp;quot; /&amp;gt;&lt;/pre&gt;&lt;pre&gt;   4:       &amp;lt;/Border&amp;gt;&lt;/pre&gt;&lt;pre&gt;   5: &amp;lt;/Grid&amp;gt;&lt;/pre&gt;&lt;p&gt;If we go ahead and run the application then we will see the following application. &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/mbcrump/SNAGHTMLf7d6db1.png"&gt;&lt;img title="SNAGHTMLf7d6db1" alt="SNAGHTMLf7d6db1" src="http://www.silverlightshow.net/Storage/Users/mbcrump/SNAGHTMLf7d6db1_thumb.png" width="304" height="268" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Go ahead and begin clicking inside of the border and you will see the number increase. If you wait a few seconds and click again then you will notice that it reset itself. You could easily add If..Then… statements to determine what click count number they are on. This may be helpful for a 35 click Easter egg. :) &lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-9-of-10.aspx"&gt;Read the full post&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10246805" width="1" height="1"&gt;&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/UbdVyQ1mLfkYBNUNu4YhFOO8mUg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/UbdVyQ1mLfkYBNUNu4YhFOO8mUg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/UbdVyQ1mLfkYBNUNu4YhFOO8mUg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/UbdVyQ1mLfkYBNUNu4YhFOO8mUg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;&lt;a href="http://feeds.feedburner.com/~ff/TheSilverlightBlog?a=4WGiCZpe00Y:VYQnWSXdW30:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheSilverlightBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheSilverlightBlog?a=4WGiCZpe00Y:VYQnWSXdW30:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheSilverlightBlog?i=4WGiCZpe00Y:VYQnWSXdW30:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheSilverlightBlog?a=4WGiCZpe00Y:VYQnWSXdW30:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheSilverlightBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheSilverlightBlog/~4/4WGiCZpe00Y" height="1" width="1"/&gt;</description>      <category domain="http://blogs.msdn.com/b/silverlight/archive/tags/Tips+and+Training/">Tips and Training</category>      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://blogs.msdn.com/b/silverlight/archive/2011/12/12/silverlight-show-10-laps-around-silverlight-5-part-9-of-10.aspx</origLink>    </item>    <item>      <title>MVVM Light for Silverlight 5 is on Codeplex #mvvmlight</title>      <link>http://geekswithblogs.net/lbugnion/archive/2011/12/10/mvvm-light-for-silverlight-5-on-codeplex-mvvmlight.aspx</link>      <description>		&lt;p&gt;Here we go! After the Microsoft team released version 5 of Silverlight yesterday, MVVM Light is available for this version of the framework too. I did not create the installer yet (that will take a few more days), but you can download the source code and build it yourself easily.&lt;/p&gt;		&lt;ul&gt;				&lt;li&gt;						&lt;a href="http://mvvmlight.codeplex.com/SourceControl/changeset/changes/17256019ad97"&gt;Source code on Codeplex&lt;/a&gt;. &lt;/li&gt;				&lt;li&gt;						&lt;a href="http://www.galasoft.ch/mvvm/building"&gt;Instructions to build the code&lt;/a&gt;. &lt;/li&gt;		&lt;/ul&gt;		&lt;p&gt;With this latest release, this puts the number of supported frameworks to 8: .NET 3.5 SP1, .NET 4, Silverlight 3, Silverlight 4, Silverlight 5, Windows Phone 7.0, Windows Phone 7.1 and Windows 8 (preview).&lt;/p&gt;		&lt;a title="The MVVM Light family" href="http://www.flickr.com/photos/36917929@N06/6487320279/"&gt;				&lt;img alt="The MVVM Light family" src="http://farm8.staticflickr.com/7015/6487320279_236a02e210_o.png" width="351" height="680" /&gt;		&lt;/a&gt;		&lt;h2&gt;Dropping Silverlight 3 and WP7.0?&lt;/h2&gt;		&lt;p&gt;That said, I am considering dropping old frameworks now for new development. So here is a chance to make yourself heard, tell me if you think that it is OK to drop Silverlight 3 and/or Windows Phone 7.0 and to concentrate on the 6 other supported frameworks:&lt;/p&gt;		&lt;ul&gt;				&lt;li&gt;						&lt;a href="http://twtpoll.com/inl98t"&gt;Poll for Silverlight 3&lt;/a&gt;				&lt;/li&gt;				&lt;li&gt;						&lt;a href="http://twtpoll.com/8xf53m"&gt;Poll for Windows Phone 7.0&lt;/a&gt;				&lt;/li&gt;		&lt;/ul&gt;		&lt;p&gt;Thanks and happy coding!    &lt;br /&gt;Laurent&lt;/p&gt;		&lt;p&gt; &lt;/p&gt;		&lt;div style="margin-bottom: -1em"&gt;				&lt;div style="vertical-align: middle"&gt;						&lt;a href="http://www.galasoft.ch/"&gt;								&lt;img title="GalaSoft Laurent Bugnion" alt="GalaSoft Laurent Bugnion" src="http://www.galasoft.ch/logo/Current/logo_120x30.png" /&gt;						&lt;/a&gt;				&lt;/div&gt;				&lt;div style="position: relative; top: -36px; left: 130px"&gt;						&lt;strong&gt;								&lt;a href="http://www.galasoft.ch/contact_en.html"&gt;Laurent Bugnion (GalaSoft)&lt;/a&gt;						&lt;/strong&gt;						&lt;br /&gt;						&lt;a href="http://feeds.feedburner.com/galasoft"&gt;Subscribe&lt;/a&gt; | &lt;a href="http://twitter.com/lbugnion"&gt;Twitter&lt;/a&gt; | &lt;a href="http://www.facebook.com/lbugnion"&gt;Facebook&lt;/a&gt; | &lt;a href="http://www.flickr.com/photos/lbugnion"&gt;Flickr&lt;/a&gt; | &lt;a href="http://www.linkedin.com/in/lbugnion"&gt;LinkedIn&lt;/a&gt;&lt;br /&gt;&lt;iframe style="border-bottom-style: none; margin-top: 7px; border-left-style: none; width: 450px; border-top-style: none; margin-bottom: -20px; height: 23px; border-right-style: none; overflow: hidden" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.galasoft.ch&amp;amp;layout=standard&amp;amp;show_faces=true&amp;amp;width=450&amp;amp;action=like&amp;amp;colorscheme=light" frameborder="0" allowtransparency="allowtransparency" scrolling="no"&gt;&lt;/iframe&gt;&lt;/div&gt;		&lt;/div&gt; &lt;img src="http://geekswithblogs.net/lbugnion/aggbug/147998.aspx" width="1" height="1" /&gt;</description>      <creator xmlns="http://purl.org/dc/elements/1.1/">Laurent Bugnion</creator>      <guid>http://geekswithblogs.net/lbugnion/archive/2011/12/10/mvvm-light-for-silverlight-5-on-codeplex-mvvmlight.aspx</guid>      <pubDate>Sat, 10 Dec 2011 19:29:43 GMT</pubDate>      <comment xmlns="http://wellformedweb.org/CommentAPI/">http://geekswithblogs.net/lbugnion/comments/147998.aspx</comment>      <comments>http://geekswithblogs.net/lbugnion/archive/2011/12/10/mvvm-light-for-silverlight-5-on-codeplex-mvvmlight.aspx#feedback</comments>      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">4</comments>      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://geekswithblogs.net/lbugnion/comments/commentRss/147998.aspx</commentRss>      <ping xmlns="http://madskills.com/public/xml/rss/module/trackback/">http://geekswithblogs.net/lbugnion/services/trackbacks/147998.aspx</ping>    </item>    <item>      <title>Silverlight 5 Released to Web</title>      <link>http://feeds.johnpapa.net/~r/JohnPapa/~3/UTINc9UHVk4/silverlight5rtw</link>      <description>&lt;p&gt;&lt;a href="http://www.silverlight.net/downloads"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://johnpapa.net/Media/Default/Windows-Live-Writer/Silverlight-5-Released-to-Web_7A1E/image_3.png" width="184" height="62"&gt;&lt;/a&gt;Silverlight 5 was released to the web yesterday, finalizing the feature list that many of us have been tinkering with in 2011. I’m excited that a product I had a very small part in shaping is now out. The team members are amazing and did a fantastic job amidst unusual circumstances over the past year, and I applaud them all. Fantastic job Silverlight crew!&lt;/p&gt; &lt;p&gt;The question many have already asked me is if they should install this release. If you are a Silverlight dev, then absolutely you should install this! There are a ton of great features in here and the backwards compat is solid., as usual&lt;/p&gt; &lt;h2&gt;Download Silverlight&lt;/h2&gt; &lt;p&gt;You can &lt;a href="http://www.silverlight.net/downloads"&gt;download Silverlight 5&amp;nbsp; from this page&lt;/a&gt;. Instructions are a bit unclear, but most developers should certainly should install the Silverlight5 Tools download which includes the Silverlight SDK, Silverlight tooling for Visual Studio 2010, and Silverlight Developer Runtime itself. &lt;/p&gt; &lt;h2&gt;&lt;strong&gt;Other downloads I recommend&lt;/strong&gt;&lt;/h2&gt; &lt;p&gt;You most certainly will want to install the Expressions Blend 5 Preview, too, if you do any Blend work … which I highly recommend for Silverlight dev’s. You may also want to install the latest versions of RIA Services, the toolkit, and/or Mac runtime for Silverlight.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;Summary of the features&lt;/h2&gt; &lt;p&gt;(from the Silverlight 5 download package)&lt;/p&gt; &lt;h3&gt;&lt;b&gt;Improved media support &lt;a name="business"&gt;&lt;/a&gt;&lt;/b&gt;&lt;/h3&gt; &lt;ul&gt; &lt;li&gt; Low Latency Audio Playback &lt;/li&gt; &lt;li&gt;Variable Speed Playback&lt;/li&gt; &lt;li&gt;H/W Decode of H.264 media&lt;/li&gt; &lt;li&gt;DRM Key Rotation/LiveTV Playback&lt;/li&gt; &lt;li&gt;Application-Restricted Media&lt;/li&gt;&lt;/ul&gt; &lt;h3&gt;Improved Text support&lt;/h3&gt; &lt;ul&gt; &lt;li&gt;Text Tracking &amp;amp; Leading&lt;/li&gt; &lt;li&gt;Linked Text Containers&lt;/li&gt; &lt;li&gt;OpenType and Pixel Snapped Text &lt;/li&gt; &lt;li&gt;Postscript vector printing&lt;/li&gt; &lt;li&gt;Performance improvements for Block Layout Engine&lt;strong&gt;.&lt;br&gt;&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt; &lt;h3&gt;&lt;b&gt;Building next-generation business applications&lt;/b&gt;&lt;/h3&gt; &lt;ul&gt; &lt;li&gt;PivotViewer&lt;/li&gt; &lt;li&gt;ClickCount&lt;/li&gt; &lt;li&gt;Listbox/ComboBox type-ahead text searching&lt;/li&gt; &lt;li&gt;Ancestor RelativeSource Binding&lt;/li&gt; &lt;li&gt;Implicit DataTemplates&lt;/li&gt; &lt;li&gt;DataContextChanged event&lt;/li&gt; &lt;li&gt;Added PropertyChanged to the UpdateSourceTrigger enum&lt;/li&gt; &lt;li&gt;Save File and Open File Dialog&lt;/li&gt; &lt;li&gt;Databinding Debugging&lt;/li&gt; &lt;li&gt;Custom Markup Extensions&lt;/li&gt; &lt;li&gt;Binding on Style Setters&lt;/li&gt;&lt;/ul&gt; &lt;h3&gt;Silverlight 5 performance improvements&lt;/h3&gt; &lt;ul&gt; &lt;li&gt;&lt;a name="graphics"&gt;&lt;/a&gt;Parser Performance Improvements&lt;/li&gt; &lt;li&gt;Network Latency Improvements&lt;/li&gt; &lt;li&gt;H/W accelerated rendering in IE9 windowless mode&lt;/li&gt; &lt;li&gt;Multicore JIT&lt;/li&gt; &lt;li&gt;&lt;i&gt;64-&lt;/i&gt;bit browser support&lt;/li&gt;&lt;/ul&gt; &lt;h3&gt;Graphics improvements&lt;/h3&gt; &lt;ul&gt; &lt;li&gt;Improved Graphics stack&lt;/li&gt; &lt;li&gt;3D&lt;/li&gt;&lt;/ul&gt; &lt;h3&gt;"Trusted Application" model&lt;/h3&gt; &lt;ul&gt; &lt;li&gt;Multiple window support&lt;/li&gt; &lt;li&gt;Full-Trust in-browser&lt;/li&gt; &lt;li&gt;In-browser HTML support&lt;/li&gt; &lt;li&gt;Unrestricted File System Access&lt;/li&gt; &lt;li&gt;P/Invoke support&lt;/li&gt;&lt;/ul&gt; &lt;h3&gt;Tools improvements&lt;/h3&gt; &lt;ul&gt; &lt;li&gt;Visual Studio Team Test support&lt;/li&gt;&lt;/ul&gt;&lt;div class="feedflare"&gt;&lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=UTINc9UHVk4:wtBTXDNXHts:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?i=UTINc9UHVk4:wtBTXDNXHts:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=UTINc9UHVk4:wtBTXDNXHts:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?i=UTINc9UHVk4:wtBTXDNXHts:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=UTINc9UHVk4:wtBTXDNXHts:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=UTINc9UHVk4:wtBTXDNXHts:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JohnPapa/~4/UTINc9UHVk4" height="1" width="1"/&gt;</description>      <pubDate>Sat, 10 Dec 2011 13:58:26 GMT</pubDate>      <guid isPermaLink="false">http://johnpapa.net:80/silverlight5rtw</guid>      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://johnpapa.net:80/silverlight5rtw</origLink>    </item>    <item>      <title>Silverlight 5 Released</title>      <link>http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2011/12/10/silverlight-5-released.aspx</link>      <pubDate>Sat, 10 Dec 2011 00:13:30 GMT</pubDate>      <guid isPermaLink="false">c62f47b3-9054-4265-9c0c-549d811810c2:14211</guid>      <creator xmlns="http://purl.org/dc/elements/1.1/">mtaulty</creator>      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">4</comments>      <wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/rsscomments.aspx?PostID=14211</wfw:commentRss>      <wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/commentapi.aspx?PostID=14211</wfw:comment>      <comments>http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2011/12/10/silverlight-5-released.aspx#comments</comments>      <description>Silverlight 5 has been released today – you can find the official announcement over on the Silverlight site along with a link to the download and a list of the improvements in Silverlight 5 up on MSDN including features like; platform invocation integration...(&lt;a href="http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2011/12/10/silverlight-5-released.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://mtaulty.com/CommunityServer/aggbug.aspx?PostID=14211" width="1" height="1"&gt;</description>      <category domain="http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/tags/.NET/default.aspx">.NET</category>      <category domain="http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/tags/C_2300_/default.aspx">C#</category>      <category domain="http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/tags/Silverlight/default.aspx">Silverlight</category>      <category domain="http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/tags/VisualStudio/default.aspx">VisualStudio</category>      <category domain="http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/tags/Blend/default.aspx">Blend</category>    </item>    <item>      <title>Silverlight 5 has released! The docs are up and a .chm is available</title>      <link>http://blogs.msdn.com/b/silverlight_sdk/archive/2011/12/09/silverlight-5-has-released-the-docs-are-up-and-a-chm-is-available.aspx</link>      <pubDate>Fri, 09 Dec 2011 20:51:00 GMT</pubDate>      <guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10246206</guid>      <creator xmlns="http://purl.org/dc/elements/1.1/">Cheryl Simmons - MSFT</creator>      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">1</comments>      <wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/silverlight_sdk/rsscomments.aspx?WeblogPostID=10246206</wfw:commentRss>      <comments>http://blogs.msdn.com/b/silverlight_sdk/archive/2011/12/09/silverlight-5-has-released-the-docs-are-up-and-a-chm-is-available.aspx#comments</comments>      <description>&lt;p&gt;Silverlight 5 has released! Here's the link to&amp;nbsp;download the &lt;a title="http://go.microsoft.com/fwlink/?LinkId=229318" href="http://go.microsoft.com/fwlink/?LinkId=229318"&gt;Silverlight 5 tools&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Silverlight 5 offers many new features including:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a title="http://msdn.microsoft.com/en-us/library/system.windows.controls.pivot.pivotviewer(VS.95).aspx" href="http://msdn.microsoft.com/en-us/library/system.windows.controls.pivot.pivotviewer(VS.95).aspx"&gt;PivotViewer&lt;/a&gt; control&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ee721083(VS.95).aspx"&gt;Trusted applications&lt;/a&gt; in-browser&lt;/li&gt;&lt;li&gt;&lt;a title="http://msdn.microsoft.com/en-us/library/gg197424(XNAGameStudio.35).aspx" href="http://msdn.microsoft.com/en-us/library/gg197424(XNAGameStudio.35).aspx"&gt;3D graphics&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a title="http://msdn.microsoft.com/en-us/library/ee671023(VS.95).aspx" href="http://msdn.microsoft.com/en-us/library/ee671023(VS.95).aspx"&gt;Vector printing&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Improved text rendering including the &lt;a title="http://msdn.microsoft.com/en-us/library/system.windows.controls.richtextblock(VS.95).aspx" href="http://msdn.microsoft.com/en-us/library/system.windows.controls.richtextblock(VS.95).aspx"&gt;RichTextBlock&lt;/a&gt; control.&lt;/li&gt;&lt;li&gt;&lt;a title="http://msdn.microsoft.com/en-us/library/cc189080(VS.95).aspx" href="http://msdn.microsoft.com/en-us/library/cc189080(VS.95).aspx"&gt;Hardware decode of H.264&lt;/a&gt; media&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;For a detailed list of the new features see the Silverlight content on MSDN, specifically, the &lt;a title="http://msdn.microsoft.com/en-us/library/gg986857(VS.95).aspx" href="http://msdn.microsoft.com/en-us/library/gg986857(VS.95).aspx"&gt;What's New for Silverlight 5&lt;/a&gt; topic.&lt;/p&gt;&lt;p&gt;If you prefer your docs offline, here's the link to download the &lt;a href="http://go.microsoft.com/fwlink/?LinkId=214685"&gt;.chm containing Silverlight 5 docs&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Enjoy!&lt;/p&gt;&lt;p&gt;Cheryl&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10246206" width="1" height="1"&gt;</description>      <category domain="http://blogs.msdn.com/b/silverlight_sdk/archive/tags/silverlight+5/">silverlight 5</category>      <category domain="http://blogs.msdn.com/b/silverlight_sdk/archive/tags/silverlight+5+-chm/">silverlight 5 .chm</category>    </item>    <item>      <title>RIA Services SP2 RTW released</title>      <link>http://blogs.msdn.com/b/silverlightws/archive/2011/12/09/ria-services-sp2-rtw-released.aspx</link>      <pubDate>Fri, 09 Dec 2011 20:16:58 GMT</pubDate>      <guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10246184</guid>      <creator xmlns="http://purl.org/dc/elements/1.1/">Yavor Georgiev - MSFT</creator>      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">0</comments>      <wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/silverlightws/rsscomments.aspx?WeblogPostID=10246184</wfw:commentRss>      <wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/silverlightws/commentapi.aspx?WeblogPostID=10246184</wfw:comment>      <comments>http://blogs.msdn.com/b/silverlightws/archive/2011/12/09/ria-services-sp2-rtw-released.aspx#comments</comments>      <description>&lt;p&gt;Please check out &lt;a href="http://hashtagfail.com/post/13978432034/ria-services-sp2"&gt;my blog post&lt;/a&gt; with release details.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10246184" width="1" height="1"&gt;</description>      <category domain="http://blogs.msdn.com/b/silverlightws/archive/tags/ria+services/">ria services</category>    </item>    <item>      <title>Silverlight 5 is released!</title>      <link>http://geekswithblogs.net/lbugnion/archive/2011/12/09/silverlight-5-is-released.aspx</link>      <description>&lt;p&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?id=28358"&gt;Microsoft just released the version 5 of Silverlight&lt;/a&gt;! It’s a great news and I really want to congratulate the whole team on this impressive collective effort. &lt;a href="http://blogs.msdn.com/b/silverlight/archive/2011/12/09/silverlight-5-available-for-download-today.aspx"&gt;The official announcement is on the Silverlight team blog!&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The purpose of this article is not to be exhaustive about the list of features (there have been, and will be, many more very detailed articles such as &lt;a href="http://blogs.msdn.com/b/silverlight/"&gt;this series on the Silverlight blog&lt;/a&gt;) but rather to explain why this version in particular makes me happy to be a Silverlight developer (features listed in no particular order!).&lt;/p&gt;  &lt;h2&gt;3D!&lt;/h2&gt;  &lt;p&gt;One thing is making me really happy and excited: the 3D integration. It is now possible to include and manipulate 3D models within a Silverlight application. This model is very similar to what XNA offers, which means that existing XNA developers will feel at home very fast with this new platform. It also means that existing 3D models can quite easily be run in Silverlight 3D. I am sure we all have in mind &lt;a href="http://channel9.msdn.com/Series/Silverlight-Firestarter/Silverlight-Firestarter-2010-Keynote-with-Scott-Guthrie"&gt;the pretty amazing demo with Scott Gu’s avatar&lt;/a&gt; during the Silverlight 5 firestarter (jump to 51:11).&lt;/p&gt; &lt;iframe style="width: 512px; height: 288px" src="http://channel9.msdn.com/Series/Silverlight-Firestarter/Silverlight-Firestarter-2010-Keynote-with-Scott-Guthrie/player?w=512&amp;amp;h=288" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;  &lt;p&gt;I am really happy to have 3D integration in Silverlight now, because I have been working for the past few weeks on a new application for Kinect for Windows involving a 3D human avatar integrated in a Windows Presentation Foundation. The integration is completely seamless, and it looks like the avatar is completely part of the rest of the application. However, the rest of the application is WPF, with all the XAML, binding and MVVM goodness that it brings. This kind of seamless integration is now also possible in Silverlight, and that opens the door to a lot of pretty cool applications and a new kind of user experience.&lt;/p&gt;  &lt;h2&gt;In-browser trusted applications&lt;/h2&gt;  &lt;p&gt;We all know (or heard of) the Out-Of-Browser (OOB) application model which allows Silverlight to run outside of a web browser, just like a Windows application in its own windows, with its own shortcut, etc. There is also an elevated trust model for OOB, declared at build time, which allows such applications to perform tasks that are usually not allowed (such as saving or reading files from certain locations on the computer, run in full-screen with full keyboard support (ideal for kiosk applications!), host HTML pages within the Silverlight application, etc.&lt;/p&gt;  &lt;p&gt;These features were already available in Silverlight 4, however in Silverlight 5 they are also possible inside the web browser. This makes the delivery of such applications a little easier, since the user does not have to “install” them and deal with a shorcut. &lt;/p&gt;  &lt;h2&gt;Trickplay&lt;/h2&gt;  &lt;p&gt;This feature allows to play video at various speeds, and even includes pitch correction to avoid that the speaker sounds like a chipmunk! This is especially useful when watching conference sessions: watch a whole 60 minute session in 30 minutes, and use the rest of the hour to be with your family instead &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://geekswithblogs.net/images/geekswithblogs_net/lbugnion/Windows-Live-Writer/Silverlight-5-is-released_1041F/wlEmoticon-smile_2.png" /&gt;&lt;/p&gt;  &lt;h2&gt;Breakpoints in bindings&lt;/h2&gt;  &lt;p&gt;This one is pretty cool: Who has never had to debug a binding, because the binding expression had a typo, or the value was not what you expected? it was pretty cumbersome before! Well with Silverlight 5, you can set a breakpoint right in the XAML binding expression, and the debugger will break and allow you to inspect the expression!.&lt;/p&gt;  &lt;h2&gt;Performance, profiling&lt;/h2&gt;  &lt;p&gt;A lot of work has been put into performance too, and a new set of tools helps to profile the application and identify critical areas that need perf tuning. &lt;/p&gt;  &lt;h2&gt;Pinvoke&lt;/h2&gt;  &lt;p&gt;This is like COM on steroid: This allows your Silverlight application to access pretty much any of the Win32 APIs directly from within your app. There are even ways to listen to Win32 messages, for example to be notified when a new USB drive is inserted (this is only an example!). There is a good &lt;a href="http://blogs.msdn.com/b/silverlight_sdk/archive/2011/09/27/pinvoke-in-silverlight5-and-net-framework.aspx"&gt;article on pinvoke by Alexandra Rusina&lt;/a&gt; (one of Silverlight’s PMs) here.&lt;/p&gt;  &lt;p&gt;Note that pinvoke only works with elevated permissions, which really makes sense (I wouldn’t want any script kiddy to be able to format my hard drives without saying “OK” first)!!.&lt;/p&gt;  &lt;h2&gt;And more…&lt;/h2&gt;  &lt;p&gt;There are a lot of other improvements, notably useful when you use the MVVM pattern in Silverlight. For example, the ability to search for an Ancestor in a RelativeSource binding (something we had since the beginning in WPF, and because it was missing here led to some cruel workarounds in some applications in Silverlight…) is a good example of these apparently small changes, but that will mean a lot when you do need them.&lt;/p&gt;  &lt;p&gt;With version 5, we have a super mature version of the framework!&lt;/p&gt;  &lt;h2&gt;What about Mac? What about other browsers? What about delays? What about Maryjo?&lt;/h2&gt;  &lt;p&gt;As usual it is interesting to witness the drama around the (perceived) delay in the delivery of this massive new version. It is important however to remember that there had not been any official announcement about a delivery date (the only thing we had heard was Scott Guthrie – who is not in charge of this product anymore by the way - talk about “end of November”). With a delivery in the first half of December, and considering that much time has been spent on last minute bugs, making this version as stable as can be, and (again) considering the massive additions to this new version, I say kudos to the team!&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Edit: &lt;/strong&gt;Maryjo felt insulted and I am a nice guy, so let me rework that paragraph a bit. Yeah I went too far and personal, so hopefully this is better.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.zdnet.com/blog/microsoft"&gt;Maryjo Foley&lt;/a&gt;, who seems to be reporting and speculating on a lot of bad news these days, reported that Mac OS would not be supported for Silverlight 5, and even worse that only Internet Explorer would be supported on Windows.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Side note: She actually reported that “One of my contacts said he believed that the final version of Silverlight 5 may only work with Internet Explorer on Windows and won’t work on Mac OS platforms or with other browsers at all. (Silverlight 4 supports Windows and Mac OS X and the IE, Chrome and Safari browsers.)”. Notice the lack of named reference, the “he believed” and the “may work”. &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;It’s a good example of why we should take this kind of “journalism” with a grain of salt. We are very rational people, fond of science and technology, and yet we seem sometimes to act like schoolgirls when someone writes something on the web. At this point, I think it is good to remember that Maryjo often reports hearsay and rumors. I don’t mean that she is always wrong, not at all, and in fact I do read her column with interest. But I always take it with a (large) grain of salt, and I remember that until a product is released, we don’t know what it will support. Everything else, really, is conjectures. A good thing to remember while Windows 8 is in preparation!&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Side note again: It is very painful to insiders to read this kind of articles (if you can call it that) while we knew very well that it was completely wrong. Unfortunately, the non-disclosure agreement that binds us to Microsoft prevents us from correcting assertions like this, and we had to sit down and watch. This is very unfortunate and painful. I really hope that people learn, some day, to be reasonable when it comes to technology (but I am not holding my breath).&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;To be clear: the list of supported web browsers and operating systems did not change. It is available at &lt;a href="http://www.microsoft.com/silverlight/what-is-silverlight/"&gt;http://www.microsoft.com/silverlight/what-is-silverlight/&lt;/a&gt;.&lt;/p&gt;  &lt;h3&gt;Some restrictions&lt;/h3&gt;  &lt;p&gt;There are a few restrictions around the 3D rendering, for security reasons. The best summary I found so far is &lt;a href="http://blogs.msdn.com/b/eternalcoding/archive/2011/12/10/silverlight-5-is-out.aspx"&gt;on David Catuhe’s blog&lt;/a&gt;. Security restrictions are always annoying but the alternative is letting unsafe code run on the user’s computer, and we all know how Microsoft handled that in the past (ActiveX anyone?) so I guess that we need to accept that they err on the side of security this time. (&lt;strong&gt;Edit:&lt;/strong&gt; updated on 12/10/2011&lt;strong&gt;).&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Also, like previously, COM access does not work on Mac OSX and as I mentioned above, p/invoke is also only available on Windows. Both these features require elevated permissions by the way.&lt;/p&gt;  &lt;h2&gt;What about MVVM Light?&lt;/h2&gt;  &lt;p&gt;&lt;a href="http://www.galasoft.ch/mvvm"&gt;MVVM Light&lt;/a&gt; will of course support Silverlight 5, and I will release a version soon. I just need a little more time running my tests and making sure that everything is working as expected. Stay tuned to this blog for an announcement about the release of MVVM Light for Silverlight 5!&lt;/p&gt;  &lt;h2&gt;A few additional updates&lt;/h2&gt;  &lt;p&gt;Well there was a nice storm on Twitter, and within the noise I managed to grab a few useful facts.&lt;/p&gt;  &lt;p&gt;First, the &lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=9503"&gt;Blend preview for Silverlight 5&lt;/a&gt; is available here. I did not verify that it works with Silverlight 5 RTM, but I think it should.&lt;/p&gt;  &lt;p&gt;Then, &lt;a href="http://support.microsoft.com/gp/lifean45#sl5"&gt;Silverlight 5 will be supported until December 2021&lt;/a&gt;. That’s 10 years of support.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?id=19131"&gt;The offline documentation&lt;/a&gt; can also be downloaded.&lt;/p&gt;  &lt;p&gt;Finally there was a lot of passionate &lt;a href="https://twitter.com/#!/search/lbugnion"&gt;discussions on Twitter tonight&lt;/a&gt;. I think it was especially interesting to confront the view of tech journalists versus MVPs vs developers. Bottom line is that there is a lot of passion around tech these days. I personally think it is too much passion, but some disagree and I think we will have to live with that for years to come…&lt;/p&gt;  &lt;p&gt;Cheers,    &lt;br /&gt;Laurent&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div style="margin-bottom: -1em"&gt;   &lt;div style="vertical-align: middle"&gt;&lt;a href="http://www.galasoft.ch/"&gt;&lt;img title="GalaSoft Laurent Bugnion" alt="GalaSoft Laurent Bugnion" src="http://www.galasoft.ch/logo/Current/logo_120x30.png" /&gt;&lt;/a&gt; &lt;/div&gt;    &lt;div style="position: relative; top: -36px; left: 130px"&gt;&lt;strong&gt;&lt;a href="http://www.galasoft.ch/contact_en.html"&gt;Laurent Bugnion (GalaSoft)&lt;/a&gt;&lt;/strong&gt;       &lt;br /&gt;&lt;a href="http://feeds.feedburner.com/galasoft"&gt;Subscribe&lt;/a&gt; | &lt;a href="http://twitter.com/lbugnion"&gt;Twitter&lt;/a&gt; | &lt;a href="http://www.facebook.com/lbugnion"&gt;Facebook&lt;/a&gt; | &lt;a href="http://www.flickr.com/photos/lbugnion"&gt;Flickr&lt;/a&gt; | &lt;a href="http://www.linkedin.com/in/lbugnion"&gt;LinkedIn&lt;/a&gt;       &lt;br /&gt;&lt;iframe style="border-bottom-style: none; margin-top: 7px; border-left-style: none; width: 450px; border-top-style: none; margin-bottom: -20px; height: 23px; border-right-style: none; overflow: hidden" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.galasoft.ch/archive/2011/12/09/silverlight-5-is-released.aspx&amp;amp;layout=standard&amp;amp;show_faces=true&amp;amp;width=450&amp;amp;action=like&amp;amp;colorscheme=light" frameborder="0" allowtransparency="allowtransparency" scrolling="no"&gt;&lt;/iframe&gt;&lt;/div&gt; &lt;/div&gt; &lt;img src="http://geekswithblogs.net/lbugnion/aggbug/147993.aspx" width="1" height="1" /&gt;</description>      <creator xmlns="http://purl.org/dc/elements/1.1/">Laurent Bugnion</creator>      <guid>http://geekswithblogs.net/lbugnion/archive/2011/12/09/silverlight-5-is-released.aspx</guid>      <pubDate>Fri, 09 Dec 2011 19:59:03 GMT</pubDate>      <comment xmlns="http://wellformedweb.org/CommentAPI/">http://geekswithblogs.net/lbugnion/comments/147993.aspx</comment>      <comments>http://geekswithblogs.net/lbugnion/archive/2011/12/09/silverlight-5-is-released.aspx#feedback</comments>      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">14</comments>      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://geekswithblogs.net/lbugnion/comments/commentRss/147993.aspx</commentRss>      <ping xmlns="http://madskills.com/public/xml/rss/module/trackback/">http://geekswithblogs.net/lbugnion/services/trackbacks/147993.aspx</ping>    </item>    <item>      <title>Silverlight 5 Available for Download Today</title>      <link>http://feedproxy.google.com/~r/TheSilverlightBlog/~3/QJo9_5N2sog/silverlight-5-available-for-download-today.aspx</link>      <pubDate>Fri, 09 Dec 2011 19:54:28 GMT</pubDate>      <guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10246176</guid>      <creator xmlns="http://purl.org/dc/elements/1.1/">Silverlight Team</creator>      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">4</comments>      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/silverlight/rsscomments.aspx?WeblogPostID=10246176</commentRss>      <comments>http://blogs.msdn.com/b/silverlight/archive/2011/12/09/silverlight-5-available-for-download-today.aspx#comments</comments>      <description>&lt;p&gt;Today, we’re happy to announce the release of Silverlight 5. Silverlight is part of a rich offering of technologies from Microsoft helping developers deliver applications for the web, desktop and mobile devices. &lt;a href="http://go.microsoft.com/fwlink/?LinkId=149156"&gt;Download Silverlight 5&lt;/a&gt;, a free plug-in less than 7 MB in size that can be installed in less than 10 seconds.&lt;/p&gt;  &lt;p&gt;New features in Silverlight 5 include Hardware Decode of H.264 media, which provides a significant performance improvement with decoding of unprotected content using the GPU; Postscript Vector Printing to improve output quality and file size; and an improved graphics stack with 3D support that uses the XNA API on the Windows platform to gain low-level access to the GPU for drawing vertex shaders and low-level 3D primitives. &lt;/p&gt;  &lt;p&gt;In addition, Silverlight 5 extends the ‘Trusted Application’ model to the browser for the first time. These features, when enabled via a group policy registry key and an application certificate, mean users won’t need to leave the browser to perform complex tasks such as multiple window support, full trust support in browser including COM and file system access, in browser HTML hosting within Silverlight, and P/Invoke support for existing native code to be run directly from Silverlight.&lt;/p&gt;  &lt;p&gt;For more information, visit the &lt;a href="http://www.microsoft.com/silverlight/"&gt;Microsoft Silverlight site&lt;/a&gt;. For additional information on support policy, visit &lt;a href="http://support.microsoft.com/gp/lifean45"&gt;Microsoft Silverlight Support Lifecycle Policy&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;The Silverlight Team&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10246176" width="1" height="1"&gt;&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/nZUqzZyoUCtW9nDn_I0gb1Zpirs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nZUqzZyoUCtW9nDn_I0gb1Zpirs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/nZUqzZyoUCtW9nDn_I0gb1Zpirs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nZUqzZyoUCtW9nDn_I0gb1Zpirs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;&lt;a href="http://feeds.feedburner.com/~ff/TheSilverlightBlog?a=QJo9_5N2sog:V4L8lxQ-wSA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheSilverlightBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheSilverlightBlog?a=QJo9_5N2sog:V4L8lxQ-wSA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheSilverlightBlog?i=QJo9_5N2sog:V4L8lxQ-wSA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheSilverlightBlog?a=QJo9_5N2sog:V4L8lxQ-wSA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheSilverlightBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheSilverlightBlog/~4/QJo9_5N2sog" height="1" width="1"/&gt;</description>      <category domain="http://blogs.msdn.com/b/silverlight/archive/tags/Announcement/">Announcement</category>      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://blogs.msdn.com/b/silverlight/archive/2011/12/09/silverlight-5-available-for-download-today.aspx</origLink>    </item>    <item>      <title>Announcing the Release of Silverlight 5!</title>      <author>Pete Brown	</author>      <link>http://10rem.net/blog/2011/12/09/announcing-the-release-of-silverlight-5</link>      <pubDate>Fri, 09 Dec 2011 19:30:14 GMT</pubDate>      <guid>http://10rem.net/blog/2011/12/09/announcing-the-release-of-silverlight-5</guid>      <description>&lt;p&gt;&lt;a href="http://silverlight.net/downloads" target="_blank"&gt;&lt;img src="http://10rem.net/media/81398/Windows-Live-Writer_Announcing-the-Release-of-Silverlight-5_DE99_image_9.png" width="320" height="420" alt="Stocking by Squirrel Cottage http://www.flickr.com/photos/squirrel_cottage/3041480598/" border="0" style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Look what just came out, and well in time to beat the Christmasrush :) Yes, it's Silverlight 5. We had originally announced thatSilverlight 5 would be out by the end of this year, and I'm glad toreport that it has made it in in time to give everyone somethinginteresting to play with over the holidays. My congratulations tothe engineering, marketing, support, and documentation teams forpulling off yet another amazing release.&lt;/p&gt;&lt;h3&gt;Get the Bits&lt;/h3&gt;&lt;p&gt;The best place to go to get the bits is &lt;ahref="http://silverlight.net/downloads"&gt;http://silverlight.net/downloads&lt;/a&gt;. Make sure you have Visual Studio 2010 SP1 (or Visual WebDeveloper) and then install the Silverlight 5 Tools. While there,be sure to install the latest version of the Silverlight 5 Toolkit- most of the XNA goodness is in the toolkit and SDK.&lt;/p&gt;&lt;p&gt;&lt;a href="http://silverlight.net/downloads" target="_blank"&gt;&lt;img src="http://10rem.net/media/81403/Windows-Live-Writer_Announcing-the-Release-of-Silverlight-5_DE99_image_6.png" width="520" height="233" alt="image" border="0" style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The version number for this release of Silverlight 5 is5.0.61118. You can in-place upgrade from the RC. While notrequired, you can also uninstall the old bits first if youwant.&lt;/p&gt;&lt;h3&gt;Where to Get Help&lt;/h3&gt;&lt;p&gt;The &lt;a href="http://www.silverlight.net/learn"&gt;Learn section onSilverlight.net&lt;/a&gt; is the primary location for Silverlight 5videos and tutorials. The beta and RC content still applies, andI've started creating more Release content for you as well.&lt;/p&gt;&lt;p&gt;We have a dedicated &lt;ahref="http://forums.silverlight.net/"&gt;Silverlight 5 forum&lt;/a&gt; onSilverlight.net. Post any Silverlight 5-related technical questionsthere for peer support.&lt;/p&gt;&lt;p&gt;Of course, I can't help but throw out a plug for my book &lt;ahref="http://manning.com/pbrown2"&gt;Silverlight 5 in Action&lt;/a&gt;. Ifyou order it right now, you get the early access bits, which is1200 pages of raw unedited writing from me. I think you'll likeit.&lt;/p&gt;&lt;h3&gt;Silverlight 5 RTM/RTW Features&lt;/h3&gt;&lt;p&gt;Silverlight 5 adds a ton of new features over what we had withSilverlight 4. These are non-trivial features like a full 3d stack,parsing performance improvements, tons of enhancements to bindingand much more. My favorite features have to be Implicit Templatesand the XNA-Compatible 3d Stack. The &lt;ahref="http://go.microsoft.com/fwlink/?LinkId=229308"target="_blank"&gt;official list of features is here&lt;/a&gt;, but I'vealso detailed some below with direct links to learning content(this is adapted from my RC post).&lt;/p&gt;&lt;h4&gt;Binding and Related&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;ICustomTypeProvider (see &lt;ahref="http://blogs.msdn.com/b/silverlight_sdk/archive/2011/04/26/binding-to-dynamic-properties-with-icustomtypeprovider-silverlight-5-beta.aspx"&gt;Alexandra Rusina's post&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Custom Markup Extensions&lt;/li&gt;&lt;li&gt;Ancestor RelativeSource Binding&lt;/li&gt;&lt;li&gt;&lt;ahref="http://10rem.net/blog/2011/04/13/silverlight-5-working-with-implicit-templates"&gt;Implicit Data Templates&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Binding in Style Setters&lt;/li&gt;&lt;li&gt;DataContextChanged Event&lt;/li&gt;&lt;li&gt;PropertyChanged now an UpdateSourceTrigger option&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;Graphics&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;XNA 3D API&lt;/li&gt;&lt;li&gt;Improved Graphics Stack&lt;/li&gt;&lt;li&gt;XNA 3D built-in effects&lt;/li&gt;&lt;li&gt;XNA 3D Project Templates with full XNA Content Pipeline&lt;/li&gt;&lt;li&gt;3D surface composition settings&lt;/li&gt;&lt;li&gt;3D multi-sample anti-aliasing&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;Media&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;&lt;ahref="http://10rem.net/blog/2011/04/13/silverlight-5-using-the-soundeffect-class-for-low-latency-sound-and-play-wav-files-in-silverlight"&gt;Low-Latency Sound using XNA SoundEffect andSoundEffectInstance&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Hardware decoding of unprotected H.264 media&lt;/li&gt;&lt;li&gt;Variable Speed Playback and Trick-play (new since beta)&lt;/li&gt;&lt;li&gt;&lt;ahref="http://10rem.net/blog/2011/08/31/silverlight-5-remote-control-and-mediacommand-support"&gt;Remote Control and Media Command (Keys) Support&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;Text&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;&lt;ahref="http://10rem.net/blog/2011/04/13/silverlight-5-advancements-in-text"&gt;Text Tracking and Leading&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;ahref="http://10rem.net/blog/2011/04/13/silverlight-5-advancements-in-text"&gt;Linked and Multi-column Text&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;ahref="http://10rem.net/blog/2011/09/02/silverlight-5-and-wpf-4-opentype-support"&gt;OpenType Support&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;ahref="http://10rem.net/blog/2011/09/02/silverlight-5-text-clarity-and-pixel-snapping"&gt;Pixel Snapped Text and TextOptions&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;Operating System Integration&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;&lt;ahref="http://10rem.net/blog/2011/09/20/enumerating-midi-interfaces-using-silverlight-5-pinvoke"&gt;P/Invoke&lt;/a&gt;&amp;nbsp; (also: &lt;ahref="http://10rem.net/blog/2011/09/27/enumerating-printers-using-pinvoke-in-silverlight-5"&gt;My Printer Enum Example&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;ahref="http://10rem.net/blog/2011/04/13/silverlight-5-working-with-operating-system-windows"&gt;Multiple Windows&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Unrestricted File System Access in Full Trust&lt;/li&gt;&lt;li&gt;Full Trust in-browser for enterprise scenarios&lt;/li&gt;&lt;li&gt;Default Filename in SaveFileDialog and OpenFileDialog&lt;/li&gt;&lt;li&gt;64 bit browser support for Windows&lt;/li&gt;&lt;li&gt;Power awareness for media apps (keep the PC alive while a movieis playing, for example)&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;Productivity and Performance&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;Network Latency Improvements&lt;/li&gt;&lt;li&gt;&lt;ahref="http://10rem.net/blog/2011/04/13/silverlight-5-debugging-bindings-with-xaml-breakpoints"&gt;Databinding Debugging&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Parser Performance Improvements&lt;/li&gt;&lt;li&gt;Multi-core JIT for improved start-up time&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;Controls&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;&lt;ahref="http://10rem.net/blog/2011/04/13/silverlight-5-supporting-double-and-even-triple-click-for-the-mouse"&gt;Double and n-click support&lt;/a&gt;&lt;/li&gt;&lt;li&gt;PivotViewer (with improved customization and more)&lt;/li&gt;&lt;li&gt;ComboBox type-ahead/incremental search&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;Other&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;In-browser HTML for trusted in-browser applications&lt;/li&gt;&lt;li&gt;&lt;ahref="http://10rem.net/blog/2011/06/11/silverlight-5-vector-and-bitmap-printing-for-reports-and-more"&gt;PostScript Vector Printing&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;ahref="http://10rem.net/blog/2011/09/04/simplifying-async-networking-with-tasks-in-silverlight-5"&gt;Tasks from TPL&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;ahref="http://blogs.msdn.com/b/csharpfaq/archive/2010/02/16/covariance-and-contravariance-faq.aspx"&gt;C# Covariance and Contravariance&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;and more…&lt;/p&gt;&lt;h3&gt;My Silverlight CodePlex Projects&lt;/h3&gt;&lt;p&gt;For a number of reasons, I've let my CodePlex projects sit for abit. The time has come for me to finally update them. I'll have newSilverlight 5 versions of the &lt;ahref="http://silverlightc64.codeplex.com/"target="_blank"&gt;Commodore 64 Emulator&lt;/a&gt; with a new UI and soundsupport, and the &lt;ahref="http://silverlightreporting.codeplex.com/"target="_blank"&gt;Silverlight Printing/Reporting example&lt;/a&gt; both upshortly after I return from vacation with the family. Look for moreinfo soon.&lt;/p&gt;&lt;h3&gt;Go Get it&lt;/h3&gt;&lt;p&gt;So go and &lt;a href="http://silverlight.net/downloads"target="_blank"&gt;check out the release&lt;/a&gt;. It is backwardscompatible with your Silverlight 4 applications (it runs in quirksmode until you recompile the project for Silverlight 4), so feelfree to target SL3, 4 or 5 using the Silverlight 5 bits.&lt;/p&gt;&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/R0fTJudefVEQHxks0R1nBO_Kcnc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/R0fTJudefVEQHxks0R1nBO_Kcnc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/R0fTJudefVEQHxks0R1nBO_Kcnc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/R0fTJudefVEQHxks0R1nBO_Kcnc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/PeteBrown-Silverlight/~4/IVmqMCgBuH8" height="1" width="1"/&gt;</description>    </item>    <item>      <guid isPermaLink="false">tag:blogger.com,1999:blog-8492016573075353132.post-2259106445981611688</guid>      <pubDate>Fri, 09 Dec 2011 18:15:00 +0000</pubDate>      <updated xmlns="http://www.w3.org/2005/Atom">2011-12-09T23:45:29.687+05:30</updated>      <title>I am speaking at 13th Edition of Microsoft Virtual Tech Days from 14 to 16 December 2011</title>      <description>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;First of all very sorry for not posting anything from last month or more than that. I am actually totally occupied with some interesting Windows Phone 7 Project and also some amazing .NET &amp;amp; SQL BI assignments including SSIS and SSRS.This kept me extremely busy for last two months.But I kept on exploring the things and I will very soon resume blogging and very soon going to post some good stuff.&lt;/p&gt;  &lt;p&gt;Out of all this,&lt;strong&gt; I am glad to announce that I will be speaking at 13th Edition of Microsoft Virtual Tech Days which will be hosted by Microsoft India.&lt;/strong&gt; This is a complete online event with tons of good sessions for all 3 Days starting from &lt;strong&gt;14th December to 16th December 2011.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.virtualtechdays.com/" target="_blank"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="VTD" border="0" alt="VTD" src="http://lh4.ggpht.com/-ZQsDcty6hZ8/TuJQM4wOQvI/AAAAAAAADJc/zeQgEjtsxrU/VTD%25255B8%25255D.jpg?imgmax=800" width="464" height="191" /&gt;&lt;/a&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I will be speaking on &lt;strong&gt;Day 3 inside “Windows Phone”&lt;/strong&gt; Track on a very interesting topic titled as &lt;a href="http://www.virtualtechdays.com/agendaDay3.aspx#"&gt;Best practices of designing apps for Windows Phone&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I will be taking various design related topics in this discussion followed by Questions and Answers, Its scheduled at 01:45 PM IST, So Mark your calendars right away ! &lt;/p&gt;  &lt;p&gt;For more information about Microsoft Virtual Tech Days, Registration and Agenda for all 3 days,Visit &lt;a title="http://www.virtualtechdays.com/" href="http://www.virtualtechdays.com/"&gt;http://www.virtualtechdays.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Do participate in Quiz and Questions and Answers sessions actively since there are lot of goodies to win for you :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-DcKA8G1GMx4/TuJQNyW6eVI/AAAAAAAADJk/QdrWvSRXV5A/s1600-h/VTDPrizes%25255B4%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="VTDPrizes" border="0" alt="VTDPrizes" src="http://lh6.ggpht.com/-c2c5d_VtNlk/TuJQP-DwOpI/AAAAAAAADJs/wUoA4lxMFiM/VTDPrizes_thumb%25255B2%25255D.jpg?imgmax=800" width="366" height="227" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So block your calendar right away ! I wish to meet you all there at my session. Also after that week, I assure not to take any logical or physical breaks and will resume postings here. So do make a visit here in coming weeks, some really exciting stuff is on your way.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Vikram.&lt;/strong&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8492016573075353132-2259106445981611688?l=pendsevikram.blogspot.com' alt='' /&gt;&lt;/div&gt;</description>      <link>http://pendsevikram.blogspot.com/2011/12/i-am-speaking-at-13th-edition-of.html</link>      <author>noreply@blogger.com (Vikram Pendse)</author>      <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-ZQsDcty6hZ8/TuJQM4wOQvI/AAAAAAAADJc/zeQgEjtsxrU/s72-c/VTD%25255B8%25255D.jpg?imgmax=800" height="72" width="72" />      <total xmlns="http://purl.org/syndication/thread/1.0">0</total>    </item>    <item>      <title>The joy of running daily builds</title>      <category>developer</category>      <category>silverlight</category>      <category>tech stuff</category>      <category>windows</category>      <category>visual studio</category>      <link>http://feeds.timheuer.com/~r/timheuer/~3/LYljYXSdhQM/running-daily-builds-tracking-changes-source-control.aspx</link>      <description>&lt;p&gt;It seems like a daily question I’ve been answering lately when working on internal email discussion groups and folks report an issue, my initial response is: &lt;em&gt;what build combination are you working on?&lt;/em&gt;  &lt;/p&gt;  &lt;p&gt;As a part of my job, I like to ensure the fastest resolution (or awareness depending on how you look at it) to issues that affect our product.  This involves staying on top of ‘latest bits’ as we call them.  Every morning I come in and install the latest Windows build as well as the latest Visual Studio build.  We have an automated Hyper-V environment that makes it easy to get the initial Windows builds up and going and then I selectively apply VS on top of that.&lt;/p&gt;  &lt;p&gt;So if it sounds so simple, why do I ask that question to people that ask?  Allow me to show you a few diagrams.&lt;/p&gt;  &lt;p&gt;&lt;img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://storage2.timheuer.com/mainbranch.png" /&gt;&lt;/p&gt;  &lt;p&gt;The above is a *snapshot* of just a few of the branches that affect the tools area that I work on.  This is not representative of the entire branching structure, which is huge.  &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;NOTE: This diagram is automatically created for you from Team Foundation Server…you select the branches of interest and it visualizes for you.  There is also an awesome feature to track changes which I’ll note below.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The red box items make up the different teams working to bring together the holistic view of some of the core developer experiences.  Since they aren’t *just* working on my stuff, nobody can live in a single branch together in harmony.  You can see that the spread of varying levels of branches required to get something working is pretty broad.  And merge (we call them RI/FI) processes are on different schedules and managed to reduce conflicts as much as possible.  The above is just one piece of the puzzle – the developer tools.  Windows has a similar ancestry view we have to deal with:&lt;/p&gt;  &lt;p&gt;&lt;img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://storage2.timheuer.com/winmainbranch.png" /&gt;&lt;/p&gt;  &lt;p&gt;The red boxes here are basically other Windows teams that we need stuff from to get our product working as well.  These RI/FI process go through many, many checks and if any regressions, they don’t allow merging, which can cause issues if you are waiting on a fix to come to your branch!&lt;/p&gt;  &lt;p&gt;So the answer to whether something should work at any given time &lt;strong&gt;during development milestones&lt;/strong&gt; has different answers depending on where you got your bits from.  I’ve personally resorted to hosting a page on our team wiki with the title &lt;em&gt;Tim’s Guide to Finding a Build Combination™&lt;/em&gt;.  I’ve also added a few helpful scripts to get any missing pieces aligned for builds.  So now I’ve got my daily build routine down to a science.&lt;/p&gt;  &lt;p&gt;Occasionally there are times where a fix is completed and I look back at my &lt;a href="http://timheuer.com/blog/archive/2011/10/12/anatomy-of-a-good-bug-report.aspx"&gt;tracking bugs&lt;/a&gt;.  Sometimes you’ll get a team that just fixes things and you aren’t given a chance to test out private bits, or whatever…so you have to go hunt down where the fix is at and when it will come to you.  In most source control systems there is a good mechanism for viewing/following a changeset.  In TFS I think they’ve nailed the feature to do this in two ways of visualization.  You can “track changeset” and choose a timeline view or branch view…it is awesome for pinpointing just where a fix is working the way through the source depots.  Here is a view of a bug using the branching view.  Green shows which branches has the fix (changeset):&lt;/p&gt;  &lt;p&gt;&lt;img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://storage2.timheuer.com/trackbranch.png" /&gt;&lt;/p&gt;  &lt;p&gt;Here is another bug using the timeline view showing me &lt;em&gt;when&lt;/em&gt; the fix made it to certain branches:&lt;/p&gt;  &lt;p&gt;&lt;img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://storage2.timheuer.com/tracktimeline.png" /&gt;&lt;/p&gt;  &lt;p&gt;For me, this has been invaluable to really identify when/where things are and determine a predictable path for resolution on issues as they converge.&lt;/p&gt;  &lt;p&gt;Managing a process to get a &lt;strong&gt;Good Daily Build™&lt;/strong&gt; is not always easy when you need pieces coming from two different organizations which are very large and working in many, many branched source depots.  But staying on top of things so you can quickly help your customers/partners move forward progress is a very rewarding experience.  My daily routine has helped me stay on top of the core issues at hand and determine a daily quality on the mainstream scenarios as our customers see them, which isn’t always caught with test automation or unit tests all the time (but yes, we have those too).&lt;/p&gt;  &lt;p&gt;Well, a new build just came out…time to update my wiki! &lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:04a7c1f6-911a-4629-94ad-d0066be6d4ba" class="wlWriterEditableSmartContent"&gt;&lt;span class="tags"&gt;tags: &lt;a href="http://timheuer.com/blog/Tags/xaml/default.aspx" rel="tag"&gt;xaml&lt;/a&gt;, &lt;a href="http://timheuer.com/blog/Tags/tfs/default.aspx" rel="tag"&gt;tfs&lt;/a&gt;, &lt;a href="http://timheuer.com/blog/Tags/team+system/default.aspx" rel="tag"&gt;team system&lt;/a&gt;, &lt;a href="http://timheuer.com/blog/Tags/svn/default.aspx" rel="tag"&gt;svn&lt;/a&gt;, &lt;a href="http://timheuer.com/blog/Tags/git/default.aspx" rel="tag"&gt;git&lt;/a&gt;, &lt;a href="http://timheuer.com/blog/Tags/source+control/default.aspx" rel="tag"&gt;source control&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="wlWriterHeaderFooter" style="margin:0px; padding:0px 0px 0px 0px;"&gt;&lt;hr /&gt;&lt;div class="cc-license"&gt;This work is licensed under a &lt;a href="http://creativecommons.org/licenses/by/3.0/"&gt;Creative Commons Attribution By license.&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://timheuer.com/blog/aggbug/14817.aspx" width="1" height="1" /&gt;&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/uRAxhJJsag8r2T-9cO9_Ku0m9EU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uRAxhJJsag8r2T-9cO9_Ku0m9EU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/uRAxhJJsag8r2T-9cO9_Ku0m9EU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uRAxhJJsag8r2T-9cO9_Ku0m9EU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/timheuer/~4/LYljYXSdhQM" height="1" width="1"/&gt;</description>      <creator xmlns="http://purl.org/dc/elements/1.1/">Tim Heuer</creator>      <guid isPermaLink="false">http://timheuer.com/blog/archive/2011/12/08/running-daily-builds-tracking-changes-source-control.aspx</guid>      <pubDate>Thu, 08 Dec 2011 22:01:31 GMT</pubDate>      <comments>http://timheuer.com/blog/archive/2011/12/08/running-daily-builds-tracking-changes-source-control.aspx#feedback</comments>      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://timheuer.com/blog/comments/commentRss/14817.aspx</commentRss>      <ping xmlns="http://madskills.com/public/xml/rss/module/trackback/">http://timheuer.com/blog/services/trackbacks/14817.aspx</ping>      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://timheuer.com/blog/archive/2011/12/08/running-daily-builds-tracking-changes-source-control.aspx</origLink>    </item>    <item>      <title>Windows 8 XAML Metro Apps with OData - Part 2</title>      <description>&lt;table width="20"&gt;    &lt;tbody&gt;        &lt;tr&gt;            &lt;td&gt;            &lt;div class="fb-like" data-show-faces="true" data-send="false" data-href="http://www.silverlightshow.net/items/Windows-8-XAML-Metro-Apps-with-OData-Part-2.aspx" data-font="segoe ui" data-layout="button_count"&gt;&lt;/div&gt;            &lt;/td&gt;            &lt;td&gt;&lt;a href="https://twitter.com/share" class="twitter-share-button" data-via="silverlightshow" data-counturl="http://www.silverlightshow.net/items/Windows-8-XAML-Metro-Apps-with-OData-Part-2.aspx" data-count="horizontal" data-text="Reading the article 'Win8 XAML Metro Apps with OData - Part 2' by @samidip" data-url="http://slshow.net/vbeH7T"&gt;Tweet&lt;/a&gt;&lt;/td&gt;            &lt;td&gt;&lt;g:plusone size="medium" href="http://www.silverlightshow.net/items/Windows-8-XAML-Metro-Apps-with-OData-Part-2.aspx"&gt;&lt;/g:plusone&gt;            &lt;/td&gt;            &lt;td&gt;            &lt;/td&gt;        &lt;/tr&gt;    &lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;So, you have heard the buzz about the brave new world of &lt;em&gt;Windows 8&lt;/em&gt; from MSFT&amp;rsquo;s &lt;em&gt;BUILD&lt;/em&gt; Conference! &lt;/p&gt;&lt;div style="border:1px solid #dddddd;padding-bottom: 5px; background-color: #f3f3f3; margin-top: 5px; padding-left: 10px; width: 200px; float: right; margin-left: 10px; margin-right: 5px; padding-top: 5px;"&gt;&lt;h3&gt;Don't miss...&lt;/h3&gt;&lt;ul style="list-style-type: circle; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-left: 20px; font-size: 12px;"&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/video/Recording-of-Webinar-Introduction-to-XAML-Development-on-Windows-8-by-Gill-Cleeren.aspx"&gt;Webinar recording: Introduction to XAML Development on Windows 8&lt;/a&gt; &lt;/li&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/items/Producing-and-Consuming-OData-in-a-Silverlight-and-Windows-Phone-7-application.aspx"&gt;Article series: Producing and Consuming OData in a Silverlight and WP7 application&lt;/a&gt; &lt;/li&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/ebooks/odata_cloud.aspx"&gt;Samisip's Ebook 'OData &amp;amp; Cloud Augmentation of Windows Phone Apps':&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;p style="padding-bottom: 5px; text-align: center;"&gt;&lt;a href="http://www.silverlightshow.net/ebooks/odata_cloud.aspx"&gt;&lt;img style="width: 107px; height: 150px;" alt="Producing and Consuming OData in a Silverlight and WP7 App Ebook" src="http://www.silverlightshow.net/Storage/Ebooks/odata_cloud.png" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="font-size: 12px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.silverlightshow.net/ebooks.aspx"&gt;All SilverlightShow Ebooks&lt;/a&gt;&amp;nbsp;&lt;img alt="" src="http://www.silverlightshow.net/Storage/arrow-content.jpg" /&gt;&lt;/p&gt;&lt;/div&gt;May be you even attended the wonderful SilverlightShow webinar about &amp;ldquo;&lt;a href="http://www.silverlightshow.net/video/Recording-of-Webinar-Introduction-to-XAML-Development-on-Windows-8-by-Gill-Cleeren.aspx" target="_blank"&gt;Getting Started with XAML Development in Windows 8&lt;/a&gt;&amp;rdquo; by &lt;a href="https://twitter.com/#!/gillcleeren" target="_blank"&gt;Gill Cleeren&lt;/a&gt;. Ready to get your hands muddy? In this short 2-part article series, we talk about how to get started towards writing data-driven (specifically OData) Windows 8 Metro apps with XAML &amp;amp; C#. Here&amp;rsquo;s what we&amp;rsquo;ll cover:&lt;ul&gt;    &lt;li&gt;&lt;strong&gt;&lt;/strong&gt;&lt;a href="http://www.silverlightshow.net/items/Windows-8-XAML-Metro-Apps-with-OData.aspx" target="_self"&gt;&lt;strong&gt;Part 1&lt;/strong&gt; &amp;ndash; Handling of OData from our XAML Metro App [Consumption &amp;amp; Updates to OData source]&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Part 2 &amp;ndash; How to make your XAML App a well-behaved Windows 8 citizen [Artwork, Snapped Views, Contracts, Application Bar etc]&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;As always, the demo solution, along with all code samples is available for download through the link below:&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&lt;h4&gt;&lt;a href="http://www.silverlightshow.net/Storage/Sources/TeamMetro.zip" target="_self"&gt;Download Source Code&lt;/a&gt;&lt;/h4&gt;&lt;h2&gt;&amp;nbsp;&lt;/h2&gt;&lt;h2&gt;Introduction&lt;/h2&gt;&lt;p&gt;At the BUILD Conference in August 2011, Microsoft launched Windows 8 .. the next iteration of Windows. It isn&amp;rsquo;t a forked world between desktop &amp;amp; mobile/tablet Operating Systems; rather &amp;ldquo;One OS to rule them all..&amp;rdquo; which runs on variety of form factors with touch-based interaction being a first-class citizen. We could obviously talk a lot about Windows 8; but for the sake of the length of this post, let me refer you to 2 valuable resources:&lt;/p&gt;&lt;ol&gt;    &lt;li&gt;&lt;em&gt;BUILD&lt;/em&gt; Website @ &lt;a title="http://www.buildwindows.com/" href="http://www.buildwindows.com/"&gt;http://www.buildwindows.com/&lt;/a&gt;. Great place to start would be the 5 Keynotes, followed by tons of recorded Session content. &lt;/li&gt;    &lt;li&gt;&lt;em&gt;Windows 8 Developer Home&lt;/em&gt; @ &lt;a title="http://msdn.microsoft.com/en-us/windows/home" href="http://msdn.microsoft.com/en-us/windows/home"&gt;http://msdn.microsoft.com/en-us/windows/home&lt;/a&gt;. On this site is a link to download the Windows 8 Developer Preview &amp;ndash; the latest Windows 8 bits along with Development tools. Also, as you get into serious Windows 8 Metro development, the &lt;a href="http://code.msdn.microsoft.com/windowsapps/" target="_blank"&gt;samples&lt;/a&gt; from Microsoft &amp;amp; contributions from our fabulous community should be very valuable. &lt;/li&gt;&lt;/ol&gt;&lt;p&gt;In &lt;a href="http://www.silverlightshow.net/items/Windows-8-XAML-Metro-Apps-with-OData.aspx"&gt;Part 1 of this article series&lt;/a&gt;, we talked about how to get started with building a Windows 8 Metro App with XAML/C# and how to consume OData in our application. While we might have a functional data-driven application, we developers should strive to make our native applications feel at home in the target operating system. Windows 8 is Windows re-imagined with Metro UI, and as such, introduces some new paradigms that most Metro applications should adhere by. In this post, we talk about how to ensure our application does not produce a jarring UX for the Windows 8 user; in essence, how to make our application a well-behaved citizen in Window 8.&lt;/p&gt;&lt;h2&gt;Prerequisites&lt;/h2&gt;&lt;p&gt;To follow along or to try the Demo or build something similar yourself, you need the following:&lt;/p&gt;&lt;ol&gt;    &lt;li&gt;Windows 8 Developer Preview running &amp;ldquo;on the metal&amp;rdquo; on some laptop/tablet. &lt;/li&gt;    &lt;li&gt;Alternatively, you could also run Windows 8 in a VM (VirtualBox being the best fit at this time) or off a VHD. &lt;/li&gt;    &lt;li&gt;Visual Studio 11 included as a part of Windows 8 Developer Preview. At this point, the templates to build Metro Apps aren&amp;rsquo;t available outside the Windows 8 bits. &lt;/li&gt;    &lt;li&gt;Curiosity &lt;/li&gt;&lt;/ol&gt;&lt;h2&gt;&lt;/h2&gt;&lt;h2&gt;&amp;nbsp;&lt;/h2&gt;&lt;h2&gt;The Application Bar&lt;/h2&gt;&lt;p&gt;Remember our UI to show/manipulate our list of Team members? Here it is again:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/samidip/_TeamList%20%20with%20App%20Bar_2.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="TeamList  with App Bar" alt="TeamList  with App Bar" src="http://www.silverlightshow.net/Storage/Users/samidip/_TeamList%20%20with%20App%20Bar_thumb.png" width="644" height="364" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;You&amp;rsquo;ll notice that the main UI has been kept clean with minimal controls. You can obviously add much much more to utilize the real estate; but the point is, commonly used actions should be tucked away in what&amp;rsquo;s called the &lt;em&gt;Application Bar&lt;/em&gt; at the bottom &amp;amp; also at the top. If you have a touch-enabled tablet or PC, you could get to the Application Bars in any Metro App by swiping a little from the top or bottom of the screen. If using Windows 8 in a traditional mouse/keyboard computer, we need to right-click in the App to bring up the Application Bars. &lt;/p&gt;&lt;p&gt;Please note that these Application Bars are optional &amp;ndash; you can add an Application Bar at the bottom, top, both or none, as per your App&amp;rsquo;s needs. Commonly used App functionality tucked away in Application Bars like this just makes your App sit well with the rest of the Windows 8 OS &amp;amp; utilizes the UX the end-users are already used to.&lt;/p&gt;&lt;p&gt;Quick Trivia &amp;ndash; Why do you think the Application Bar buttons are at either end &amp;amp; not at the center ?? The answer lies is some detailed research Microsoft conducted to figure out what portion of the tablet form-factor&amp;rsquo;s screen is most accessible with thumbs when holding the tablet in both hands. See the point now? &lt;img style="border-style: none;" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://www.silverlightshow.net/Storage/Users/samidip/__wlEmoticon-smile_2.png" /&gt;&lt;/p&gt;&lt;p&gt;So, let&amp;rsquo;s take a look at what we had to do to build our Application Bar. The round Metro-looking icons are nothing but regular buttons with click-handlers behind them. Here&amp;rsquo;s how we add the Application Bars to our &lt;em&gt;MainPage.xaml&lt;/em&gt; UI:&lt;/p&gt;&lt;div style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &amp;lt;UserControl x:Class=&lt;span style="color: #006080;"&gt;"TeamMetro.MainPage"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt; xmlns=&lt;span style="color: #006080;"&gt;"http://schemas.microsoft.com/winfx/2006/xaml/presentation"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt; xmlns:x=&lt;span style="color: #006080;"&gt;"http://schemas.microsoft.com/winfx/2006/xaml"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt; xmlns:d=&lt;span style="color: #006080;"&gt;"http://schemas.microsoft.com/expression/blend/2008"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt; xmlns:mc=&lt;span style="color: #006080;"&gt;"http://schemas.openxmlformats.org/markup-compatibility/2006"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt; mc:Ignorable=&lt;span style="color: #006080;"&gt;"d"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt; d:DesignHeight=&lt;span style="color: #006080;"&gt;"768"&lt;/span&gt; d:DesignWidth=&lt;span style="color: #006080;"&gt;"1366"&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt; &amp;lt;!--Content--&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt; &amp;lt;Grid x:Name=&lt;span style="color: #006080;"&gt;"LayoutRoot"&lt;/span&gt; Background=&lt;span style="color: #006080;"&gt;"Chocolate"&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt;  11:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt;  12:&lt;/span&gt;     &lt;span style="color: #008000;"&gt;// All the other content stuff ..&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt;  13:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum14" style="color: #606060;"&gt;  14:&lt;/span&gt;     &amp;lt;!--Application Bar--&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum15" style="color: #606060;"&gt;  15:&lt;/span&gt;     &amp;lt;ApplicationBar x:Name=&lt;span style="color: #006080;"&gt;"BottomAppBar"&lt;/span&gt; VerticalAlignment=&lt;span style="color: #006080;"&gt;"Bottom"&lt;/span&gt; Height=&lt;span style="color: #006080;"&gt;"100"&lt;/span&gt; Opacity=&lt;span style="color: #006080;"&gt;".8"&lt;/span&gt; IsPersistent=&lt;span style="color: #006080;"&gt;"False"&lt;/span&gt; DismissMode=&lt;span style="color: #006080;"&gt;"LightDismiss"&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum16" style="color: #606060;"&gt;  16:&lt;/span&gt;         &amp;lt;Grid&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum17" style="color: #606060;"&gt;  17:&lt;/span&gt;             &amp;lt;Grid.ColumnDefinitions&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum18" style="color: #606060;"&gt;  18:&lt;/span&gt;                 &amp;lt;ColumnDefinition Width=&lt;span style="color: #006080;"&gt;"*"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum19" style="color: #606060;"&gt;  19:&lt;/span&gt;                 &amp;lt;ColumnDefinition Width=&lt;span style="color: #006080;"&gt;"Auto"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum20" style="color: #606060;"&gt;  20:&lt;/span&gt;             &amp;lt;/Grid.ColumnDefinitions&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum21" style="color: #606060;"&gt;  21:&lt;/span&gt;             &amp;lt;StackPanel Grid.Column=&lt;span style="color: #006080;"&gt;"0"&lt;/span&gt; Orientation=&lt;span style="color: #006080;"&gt;"Horizontal"&lt;/span&gt; HorizontalAlignment=&lt;span style="color: #006080;"&gt;"Left"&lt;/span&gt; VerticalAlignment=&lt;span style="color: #006080;"&gt;"Center"&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum22" style="color: #606060;"&gt;  22:&lt;/span&gt;                 &amp;lt;Button Content=&lt;span style="color: #006080;"&gt;"Edit"&lt;/span&gt; Style=&lt;span style="color: #006080;"&gt;"{StaticResource EditButtonStyle}"&lt;/span&gt; Click=&lt;span style="color: #006080;"&gt;"EditButton_Click"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum23" style="color: #606060;"&gt;  23:&lt;/span&gt;                 &amp;lt;Button Content=&lt;span style="color: #006080;"&gt;"Delete"&lt;/span&gt; Style=&lt;span style="color: #006080;"&gt;"{StaticResource DeleteButtonStyle}"&lt;/span&gt; Click=&lt;span style="color: #006080;"&gt;"DeleteButton_Click"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum24" style="color: #606060;"&gt;  24:&lt;/span&gt;             &amp;lt;/StackPanel&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum25" style="color: #606060;"&gt;  25:&lt;/span&gt;             &amp;lt;StackPanel Grid.Column=&lt;span style="color: #006080;"&gt;"1"&lt;/span&gt; Orientation=&lt;span style="color: #006080;"&gt;"Horizontal"&lt;/span&gt; HorizontalAlignment=&lt;span style="color: #006080;"&gt;"Right"&lt;/span&gt; VerticalAlignment=&lt;span style="color: #006080;"&gt;"Center"&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum26" style="color: #606060;"&gt;  26:&lt;/span&gt;                 &amp;lt;Button Content=&lt;span style="color: #006080;"&gt;"Add"&lt;/span&gt; Style=&lt;span style="color: #006080;"&gt;"{StaticResource AddButtonStyle}"&lt;/span&gt; Click=&lt;span style="color: #006080;"&gt;"AddButton_Click"&lt;/span&gt; /&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum27" style="color: #606060;"&gt;  27:&lt;/span&gt;                 &amp;lt;Button Content=&lt;span style="color: #006080;"&gt;"Refresh"&lt;/span&gt; Style=&lt;span style="color: #006080;"&gt;"{StaticResource RefreshButtonStyle}"&lt;/span&gt; /&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum28" style="color: #606060;"&gt;  28:&lt;/span&gt;             &amp;lt;/StackPanel&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum29" style="color: #606060;"&gt;  29:&lt;/span&gt;         &amp;lt;/Grid&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum30" style="color: #606060;"&gt;  30:&lt;/span&gt;     &amp;lt;/ApplicationBar&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum31" style="color: #606060;"&gt;  31:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum32" style="color: #606060;"&gt;  32:&lt;/span&gt;     &amp;lt;ApplicationBar x:Name=&lt;span style="color: #006080;"&gt;"TopAppBar"&lt;/span&gt; VerticalAlignment=&lt;span style="color: #006080;"&gt;"Top"&lt;/span&gt; Height=&lt;span style="color: #006080;"&gt;"100"&lt;/span&gt; Opacity=&lt;span style="color: #006080;"&gt;".8"&lt;/span&gt; IsPersistent=&lt;span style="color: #006080;"&gt;"False"&lt;/span&gt; DismissMode=&lt;span style="color: #006080;"&gt;"LightDismiss"&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum33" style="color: #606060;"&gt;  33:&lt;/span&gt;         &amp;lt;StackPanel Margin=&lt;span style="color: #006080;"&gt;"20,0,0,0"&lt;/span&gt; VerticalAlignment=&lt;span style="color: #006080;"&gt;"Center"&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum34" style="color: #606060;"&gt;  34:&lt;/span&gt;             &amp;lt;TextBlock x:Name=&lt;span style="color: #006080;"&gt;"topBarText"&lt;/span&gt; Text=&lt;span style="color: #006080;"&gt;"You can add stuff here as well .."&lt;/span&gt; FontSize=&lt;span style="color: #006080;"&gt;"26"&lt;/span&gt; /&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum35" style="color: #606060;"&gt;  35:&lt;/span&gt;         &amp;lt;/StackPanel&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum36" style="color: #606060;"&gt;  36:&lt;/span&gt;     &amp;lt;/ApplicationBar&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum37" style="color: #606060;"&gt;  37:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum38" style="color: #606060;"&gt;  38:&lt;/span&gt; &amp;lt;/Grid&amp;gt;   &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum39" style="color: #606060;"&gt;  39:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum40" style="color: #606060;"&gt;  40:&lt;/span&gt; &amp;lt;/UserControl&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;And here&amp;rsquo;s the button template defined in our &lt;em&gt;App.xaml&lt;/em&gt; as a global resource. You could obviously have one template for all buttons and include any other styles you want re-used. If you overlook the story-board, each Application Bar is essentially an image icon inside an ellipse. Makes sense?&lt;/p&gt;&lt;div style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &amp;lt;Application xmlns=&lt;span style="color: #006080;"&gt;"http://schemas.microsoft.com/winfx/2006/xaml/presentation"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt;              xmlns:x=&lt;span style="color: #006080;"&gt;"http://schemas.microsoft.com/winfx/2006/xaml"&lt;/span&gt; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;              x:Class=&lt;span style="color: #006080;"&gt;"TeamMetro.App"&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;     &amp;lt;Application.Resources&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;         &amp;lt;ResourceDictionary&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt;             &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt;             &amp;lt;Style x:Key=&lt;span style="color: #006080;"&gt;"EditButtonStyle"&lt;/span&gt; TargetType=&lt;span style="color: #006080;"&gt;"Button"&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt;                 &amp;lt;Setter Property=&lt;span style="color: #006080;"&gt;"Background"&lt;/span&gt; Value=&lt;span style="color: #006080;"&gt;"Transparent"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt;  11:&lt;/span&gt;                 &amp;lt;Setter Property=&lt;span style="color: #006080;"&gt;"Foreground"&lt;/span&gt; Value=&lt;span style="color: #006080;"&gt;"White"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt;  12:&lt;/span&gt;                 &amp;lt;Setter Property=&lt;span style="color: #006080;"&gt;"BorderBrush"&lt;/span&gt; Value=&lt;span style="color: #006080;"&gt;"Transparent"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt;  13:&lt;/span&gt;                 &amp;lt;Setter Property=&lt;span style="color: #006080;"&gt;"FontFamily"&lt;/span&gt; Value=&lt;span style="color: #006080;"&gt;"Segoe UI"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum14" style="color: #606060;"&gt;  14:&lt;/span&gt;                 &amp;lt;Setter Property=&lt;span style="color: #006080;"&gt;"FontSize"&lt;/span&gt; Value=&lt;span style="color: #006080;"&gt;"9"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum15" style="color: #606060;"&gt;  15:&lt;/span&gt;                 &amp;lt;Setter Property=&lt;span style="color: #006080;"&gt;"Template"&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum16" style="color: #606060;"&gt;  16:&lt;/span&gt;                     &amp;lt;Setter.Value&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum17" style="color: #606060;"&gt;  17:&lt;/span&gt;                         &amp;lt;ControlTemplate TargetType=&lt;span style="color: #006080;"&gt;"Button"&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum18" style="color: #606060;"&gt;  18:&lt;/span&gt;                             &amp;lt;Grid&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum19" style="color: #606060;"&gt;  19:&lt;/span&gt;                                 &amp;lt;VisualStateManager.VisualStateGroups&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum20" style="color: #606060;"&gt;  20:&lt;/span&gt;                                     &amp;lt;VisualStateGroup x:Name=&lt;span style="color: #006080;"&gt;"CommonStates"&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum21" style="color: #606060;"&gt;  21:&lt;/span&gt;                                         &amp;lt;VisualState x:Name=&lt;span style="color: #006080;"&gt;"Normal"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum22" style="color: #606060;"&gt;  22:&lt;/span&gt;                                         &amp;lt;VisualState x:Name=&lt;span style="color: #006080;"&gt;"MouseOver"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum23" style="color: #606060;"&gt;  23:&lt;/span&gt;                                         &amp;lt;VisualState x:Name=&lt;span style="color: #006080;"&gt;"Pressed"&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum24" style="color: #606060;"&gt;  24:&lt;/span&gt;                                             &amp;lt;Storyboard&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum25" style="color: #606060;"&gt;  25:&lt;/span&gt;                                                 &amp;lt;ColorAnimation Duration=&lt;span style="color: #006080;"&gt;"0"&lt;/span&gt; To=&lt;span style="color: #006080;"&gt;"White"&lt;/span&gt; Storyboard.TargetProperty=&lt;span style="color: #006080;"&gt;"(Ellipse.Fill).(SolidColorBrush.Color)"&lt;/span&gt; Storyboard.TargetName=&lt;span style="color: #006080;"&gt;"ButtonEllipse"&lt;/span&gt; /&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum26" style="color: #606060;"&gt;  26:&lt;/span&gt;                                                 &amp;lt;ColorAnimation Duration=&lt;span style="color: #006080;"&gt;"0"&lt;/span&gt; To=&lt;span style="color: #006080;"&gt;"Black"&lt;/span&gt; Storyboard.TargetProperty=&lt;span style="color: #006080;"&gt;"(TextBlock.Foreground).(SolidColorBrush.Color)"&lt;/span&gt; Storyboard.TargetName=&lt;span style="color: #006080;"&gt;"Glyph"&lt;/span&gt; /&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum27" style="color: #606060;"&gt;  27:&lt;/span&gt;                                             &amp;lt;/Storyboard&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum28" style="color: #606060;"&gt;  28:&lt;/span&gt;                                         &amp;lt;/VisualState&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum29" style="color: #606060;"&gt;  29:&lt;/span&gt;                                     &amp;lt;/VisualStateGroup&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum30" style="color: #606060;"&gt;  30:&lt;/span&gt;                                 &amp;lt;/VisualStateManager.VisualStateGroups&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum31" style="color: #606060;"&gt;  31:&lt;/span&gt;                                 &amp;lt;StackPanel Orientation=&lt;span style="color: #006080;"&gt;"Vertical"&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum32" style="color: #606060;"&gt;  32:&lt;/span&gt;                                     &amp;lt;Grid  Margin=&lt;span style="color: #006080;"&gt;"0,14,0,5"&lt;/span&gt; &amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum33" style="color: #606060;"&gt;  33:&lt;/span&gt;                                         &amp;lt;Ellipse x:Name=&lt;span style="color: #006080;"&gt;"ButtonEllipse"&lt;/span&gt; Height=&lt;span style="color: #006080;"&gt;"40"&lt;/span&gt; Width=&lt;span style="color: #006080;"&gt;"40"&lt;/span&gt; Fill=&lt;span style="color: #006080;"&gt;"Transparent"&lt;/span&gt; HorizontalAlignment=&lt;span style="color: #006080;"&gt;"Center"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum34" style="color: #606060;"&gt;  34:&lt;/span&gt;                                              Stroke=&lt;span style="color: #006080;"&gt;"White"&lt;/span&gt; StrokeThickness=&lt;span style="color: #006080;"&gt;"2"&lt;/span&gt; VerticalAlignment=&lt;span style="color: #006080;"&gt;"Center"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum35" style="color: #606060;"&gt;  35:&lt;/span&gt;                                         &amp;lt;Image Source=&lt;span style="color: #006080;"&gt;"/Images/appbar.edit.png"&lt;/span&gt; HorizontalAlignment=&lt;span style="color: #006080;"&gt;"Center"&lt;/span&gt; VerticalAlignment=&lt;span style="color: #006080;"&gt;"Center"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum36" style="color: #606060;"&gt;  36:&lt;/span&gt;                                     &amp;lt;/Grid&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum37" style="color: #606060;"&gt;  37:&lt;/span&gt;                                     &amp;lt;TextBlock Text=&lt;span style="color: #006080;"&gt;"{TemplateBinding Content}"&lt;/span&gt; HorizontalAlignment=&lt;span style="color: #006080;"&gt;"Center"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum38" style="color: #606060;"&gt;  38:&lt;/span&gt;                                            FontFamily=&lt;span style="color: #006080;"&gt;"Segoe UI"&lt;/span&gt; FontSize=&lt;span style="color: #006080;"&gt;"12"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum39" style="color: #606060;"&gt;  39:&lt;/span&gt;                                 &amp;lt;/StackPanel&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum40" style="color: #606060;"&gt;  40:&lt;/span&gt;                             &amp;lt;/Grid&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum41" style="color: #606060;"&gt;  41:&lt;/span&gt;                         &amp;lt;/ControlTemplate&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum42" style="color: #606060;"&gt;  42:&lt;/span&gt;                     &amp;lt;/Setter.Value&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum43" style="color: #606060;"&gt;  43:&lt;/span&gt;                 &amp;lt;/Setter&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum44" style="color: #606060;"&gt;  44:&lt;/span&gt;             &amp;lt;/Style&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum45" style="color: #606060;"&gt;  45:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum46" style="color: #606060;"&gt;  46:&lt;/span&gt;         &amp;lt;/ResourceDictionary&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum47" style="color: #606060;"&gt;  47:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum48" style="color: #606060;"&gt;  48:&lt;/span&gt;     &amp;lt;/Application.Resources&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum49" style="color: #606060;"&gt;  49:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum50" style="color: #606060;"&gt;  50:&lt;/span&gt; &amp;lt;/Application&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;h2&gt;&amp;nbsp;&lt;/h2&gt;&lt;h2&gt;UI Modes&lt;/h2&gt;&lt;p&gt;Windows 8, being a hybrid OS supporting multiple form factors, will have enough hardware horsepower to support true multi-tasking even in Metro UI mode.. And the additional real estate offered by tablets form factors means that people should be allowed to run multiple applications side by side. Yes, you can do that, unlike the competition &lt;img style="border-style: none;" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://www.silverlightshow.net/Storage/Users/samidip/__wlEmoticon-smile_2.png" /&gt;&lt;/p&gt;&lt;p&gt;So, if are running Windows 8, try a few Metro Apps one after another .. and then swipe from left or hover mouse-cursor on left edge. What you should see pop-out is the last running application, which you can drag out onto the viewable area &amp;amp; also dock it. Accordingly, all Windows 8 Metro applications support three UI modes:&lt;/p&gt;&lt;ul&gt;    &lt;li&gt;&lt;strong&gt;FullScreen&lt;/strong&gt; &amp;ndash; This is when the App has the full center-stage &amp;amp; nothing else is in the foreground. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Filled&lt;/strong&gt; &amp;ndash; This happens when a Metro App consumes about 75% of the screen real-estate and another App has been snapped to one side. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Snapped&lt;/strong&gt; &amp;ndash; This is the mode where the App in question is actually the one that has been snapped and has about 25% of screen real estate. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;It is important to note that supporting these modes is very highly recommended for Metro Apps, lest you do not care about the UX when users snap your App. So, we have seen how our Demo application looks in full-screen mode; here&amp;rsquo;s how it would be if another application was snapped to the side:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/samidip/Filled_2.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="Filled" alt="Filled" src="http://www.silverlightshow.net/Storage/Users/samidip/Filled_thumb.png" width="644" height="364" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;And here&amp;rsquo;s how our App would look if snapped:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/samidip/Snapped_2.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="Snapped" alt="Snapped" src="http://www.silverlightshow.net/Storage/Users/samidip/Snapped_thumb.png" width="644" height="364" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;So, let&amp;rsquo;s see what one has to do to support this snapping behavior. First up, in our application, we need to notified as when these layout changes happen so we can take appropriate action. So, let&amp;rsquo;s subscribe, as below:&lt;/p&gt;&lt;div style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #cc6633;"&gt;#region&lt;/span&gt; &lt;span style="color: #006080;"&gt;"Constructor"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; MainPage()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;     InitializeComponent();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;     &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;     &lt;span style="color: #008000;"&gt;// Subscribe to Layout changes.&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt;     ApplicationLayout.GetForCurrentView().LayoutChanged += &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; TypedEventHandler&amp;lt;ApplicationLayout,ApplicationLayoutChangedEventArgs&amp;gt;(MainPage_LayoutChanged);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt;     &lt;span style="color: #008000;"&gt;// Other stuff.&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt;  11:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt;  12:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt;  13:&lt;/span&gt; &lt;span style="color: #cc6633;"&gt;#endregion&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Did you notice the &lt;em&gt;ApplicationLayout&lt;/em&gt; object? Yeah, we subtly tap into a WinRT namespace called using &lt;em&gt;Windows.UI.ViewManagement&lt;/em&gt; and trust the OS to inform us about layout changes in current view.&lt;/p&gt;&lt;p&gt;And here&amp;rsquo;s how we respond to the change in Layout:&lt;/p&gt;&lt;div style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; MainPage_LayoutChanged(ApplicationLayout sender, ApplicationLayoutChangedEventArgs args)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (args.Layout == ApplicationLayoutState.Filled || args.Layout == ApplicationLayoutState.FullScreen)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.fullMode.Visibility = Windows.UI.Xaml.Visibility.Visible;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.snappedMode.Visibility = Windows.UI.Xaml.Visibility.Collapsed;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.BottomAppBar.Visibility = Windows.UI.Xaml.Visibility.Visible;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.topBarText.Text = &lt;span style="color: #006080;"&gt;"You can add stuff here as well .."&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt;  11:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;else&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (args.Layout == ApplicationLayoutState.Snapped)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt;  12:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt;  13:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.fullMode.Visibility = Windows.UI.Xaml.Visibility.Collapsed;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum14" style="color: #606060;"&gt;  14:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.snappedMode.Visibility = Windows.UI.Xaml.Visibility.Visible;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum15" style="color: #606060;"&gt;  15:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum16" style="color: #606060;"&gt;  16:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.BottomAppBar.Visibility = Windows.UI.Xaml.Visibility.Collapsed;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum17" style="color: #606060;"&gt;  17:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.topBarText.Text = &lt;span style="color: #006080;"&gt;"Snapped Mode:"&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum18" style="color: #606060;"&gt;  18:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum19" style="color: #606060;"&gt;  19:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;A few things happened .. so let&amp;rsquo;s dig in. For my demo application, I am not really limited in real estate in Filled mode .. so I treat that the same as in FullScreen mode. If however the App is snapped, we swap out controls for a more streamlined look. I chose to bind my results to 2 different ListBoxes in the UI that I toggle based on layout .. if you can have one Listbox &amp;amp; adjust through DataTemplates, that is totally desirable. So, here are my UI elements:&lt;/p&gt;&lt;div style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &amp;lt;StackPanel Background=&lt;span style="color: #006080;"&gt;"Transparent"&lt;/span&gt; VerticalAlignment=&lt;span style="color: #006080;"&gt;"Center"&lt;/span&gt; x:Name=&lt;span style="color: #006080;"&gt;"fullMode"&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt; &amp;lt;ListBox Name=&lt;span style="color: #006080;"&gt;"fullTeamList"&lt;/span&gt; Margin=&lt;span style="color: #006080;"&gt;"40"&lt;/span&gt; ItemsSource=&lt;span style="color: #006080;"&gt;"{Binding WCFTeam}"&lt;/span&gt; Foreground=&lt;span style="color: #006080;"&gt;"Blue"&lt;/span&gt; Background=&lt;span style="color: #006080;"&gt;"Transparent"&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;     &amp;lt;ListBox.ItemTemplate&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;         &amp;lt;DataTemplate&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;             &amp;lt;StackPanel Margin=&lt;span style="color: #006080;"&gt;"400,0,0,40"&lt;/span&gt; VerticalAlignment=&lt;span style="color: #006080;"&gt;"Center"&lt;/span&gt; Orientation=&lt;span style="color: #006080;"&gt;"Horizontal"&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;                 &amp;lt;Image Source=&lt;span style="color: #006080;"&gt;"ninja.png"&lt;/span&gt; Height=&lt;span style="color: #006080;"&gt;"75"&lt;/span&gt; Width=&lt;span style="color: #006080;"&gt;"75"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;                 &amp;lt;TextBlock Text=&lt;span style="color: #006080;"&gt;"{Binding Name}"&lt;/span&gt; Margin=&lt;span style="color: #006080;"&gt;"10,0,0,0"&lt;/span&gt; FontSize=&lt;span style="color: #006080;"&gt;"26"&lt;/span&gt; VerticalAlignment=&lt;span style="color: #006080;"&gt;"Center"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt;                 &amp;lt;TextBlock Text=&lt;span style="color: #006080;"&gt;" -- aka "&lt;/span&gt; FontSize=&lt;span style="color: #006080;"&gt;"22"&lt;/span&gt; VerticalAlignment=&lt;span style="color: #006080;"&gt;"Center"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt;                 &amp;lt;TextBlock Text=&lt;span style="color: #006080;"&gt;"{Binding TwitterHandle}"&lt;/span&gt; Margin=&lt;span style="color: #006080;"&gt;"10,0,0,0"&lt;/span&gt; FontSize=&lt;span style="color: #006080;"&gt;"22"&lt;/span&gt; VerticalAlignment=&lt;span style="color: #006080;"&gt;"Center"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt;             &amp;lt;/StackPanel&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt;  11:&lt;/span&gt;         &amp;lt;/DataTemplate&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt;  12:&lt;/span&gt;     &amp;lt;/ListBox.ItemTemplate&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt;  13:&lt;/span&gt; &amp;lt;/ListBox&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum14" style="color: #606060;"&gt;  14:&lt;/span&gt; &amp;lt;/StackPanel&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum15" style="color: #606060;"&gt;  15:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum16" style="color: #606060;"&gt;  16:&lt;/span&gt; &amp;lt;StackPanel Background=&lt;span style="color: #006080;"&gt;"Transparent"&lt;/span&gt; VerticalAlignment=&lt;span style="color: #006080;"&gt;"Center"&lt;/span&gt; Width=&lt;span style="color: #006080;"&gt;"320"&lt;/span&gt; x:Name=&lt;span style="color: #006080;"&gt;"snappedMode"&lt;/span&gt; Visibility=&lt;span style="color: #006080;"&gt;"Collapsed"&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum17" style="color: #606060;"&gt;  17:&lt;/span&gt;     &amp;lt;ListBox Name=&lt;span style="color: #006080;"&gt;"snappedTeamList"&lt;/span&gt; Margin=&lt;span style="color: #006080;"&gt;"5"&lt;/span&gt; ItemsSource=&lt;span style="color: #006080;"&gt;"{Binding WCFTeam}"&lt;/span&gt; Foreground=&lt;span style="color: #006080;"&gt;"Blue"&lt;/span&gt; Background=&lt;span style="color: #006080;"&gt;"Chocolate"&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum18" style="color: #606060;"&gt;  18:&lt;/span&gt;         &amp;lt;ListBox.ItemTemplate&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum19" style="color: #606060;"&gt;  19:&lt;/span&gt;             &amp;lt;DataTemplate&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum20" style="color: #606060;"&gt;  20:&lt;/span&gt;                 &amp;lt;StackPanel Margin=&lt;span style="color: #006080;"&gt;"10,0,0,40"&lt;/span&gt; VerticalAlignment=&lt;span style="color: #006080;"&gt;"Center"&lt;/span&gt; Orientation=&lt;span style="color: #006080;"&gt;"Horizontal"&lt;/span&gt;&amp;gt;                            &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum21" style="color: #606060;"&gt;  21:&lt;/span&gt;                     &amp;lt;TextBlock Text=&lt;span style="color: #006080;"&gt;"{Binding Name}"&lt;/span&gt; Margin=&lt;span style="color: #006080;"&gt;"10,0,0,0"&lt;/span&gt; FontSize=&lt;span style="color: #006080;"&gt;"26"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum22" style="color: #606060;"&gt;  22:&lt;/span&gt;                 &amp;lt;/StackPanel&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum23" style="color: #606060;"&gt;  23:&lt;/span&gt;             &amp;lt;/DataTemplate&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum24" style="color: #606060;"&gt;  24:&lt;/span&gt;         &amp;lt;/ListBox.ItemTemplate&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum25" style="color: #606060;"&gt;  25:&lt;/span&gt;     &amp;lt;/ListBox&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum26" style="color: #606060;"&gt;  26:&lt;/span&gt; &amp;lt;/StackPanel&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;So, I chose to only display Team member names in Snapped mode and adjust the Application Bars accordingly. It is totally up to you &amp;amp; your application to decide on what information you want to display in Snapped mode .. I would guess people would go for either minimalistic views for social media type applications or dense views conveying a lot of information for sustained Snapped view usage. The point is this is totally customizable through the XAML UI .. so let&amp;rsquo;s make the most of it.&lt;h2&gt;&amp;nbsp;&lt;/h2&gt;&lt;h2&gt;Contracts&lt;/h2&gt;&lt;p&gt;Windows 8 introduces this concept of &lt;strong&gt;Contracts&lt;/strong&gt;, which can be thought of as System Interfaces. You may also think of them as Let-Us-Not-Reinvent-The-Wheel mechanisms. If your App needs to let the user share something through Social media, why would you write interface code to post to Twitter/Facebook when another application in the system already knows how to do that? This also results in a consistent UX and less clutter in Apps. This concept of Contracts, when expanded to most common tasks, and the powerful WinRT APIs does give the developer a lot of flexibility. While there are lots of Contracts (details found on doing MSDN searches), let&amp;rsquo;s look at a couple of contracts which should highly recommended for most Metro Apps.&lt;/p&gt;&lt;h4&gt;Sharing&lt;/h4&gt;&lt;p&gt;The Share contracts enforces a requester-listener pattern .. one application says &amp;ldquo;I need to share this&amp;rdquo;, while another says &amp;ldquo;I know how to do that&amp;rdquo;. The application which actually implements the Share contract need to know how to receive data from other applications through the OS and share it through whatever medium the application is built to use.&lt;/p&gt;&lt;p&gt;For our demo application, we will not be actually implementing the Share contract; but do the much easier, frequently needed utilization of the Share pattern. What if we need to share some information about our Team members on social media .. can we get away with simply providing the data to share? Yes .. let&amp;rsquo;s see how.&lt;/p&gt;&lt;p&gt;First, if you need your application to share some information, please please please (3 times&amp;rsquo; the charm &lt;img style="border-style: none;" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://www.silverlightshow.net/Storage/Users/samidip/__wlEmoticon-smile_2.png" /&gt;) do not add anything inside your App or the Application Bar to enable this. The key is consistency. You see, there are these shortcuts called &lt;strong&gt;Charms&lt;/strong&gt; accessible to Windows 8 users. Set of quick access tasks accessible when touch-enabled user swipes from the right edge of screen or the mouse user hovers at the left lower corner. Here&amp;rsquo;s what the user sees:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/samidip/Charms_2.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="Charms" alt="Charms" src="http://www.silverlightshow.net/Storage/Users/samidip/Charms_thumb.png" width="644" height="364" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;So, what happens when we have a selected Team member selected &amp;amp; which we wish to share, and then we hit the Share Charm. Well, something like this:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/samidip/Share_2.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="Share" alt="Share" src="http://www.silverlightshow.net/Storage/Users/samidip/Share_thumb.png" width="644" height="364" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;What you see is the list of applications that have implemented the Share contracts .. in other words, declared to the OS that they can handle sharing of information from other Apps. Exactly, what we need! Now, let&amp;rsquo;s try &lt;strong&gt;TwitterRama&lt;/strong&gt; which is a simple Twitter client for Windows 8 built by some very smart MSFT interns. This App clearly knows how to talk/post to Twitter .. so we may not need to integrate with Twitter API directly. Here&amp;rsquo;s what we get when we try to share through TwitterRama:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/samidip/Sharing_2.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="Sharing" alt="Sharing" src="http://www.silverlightshow.net/Storage/Users/samidip/Sharing_thumb.png" width="644" height="364" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Did you notice that our App passed data to TwitterRama? Let&amp;rsquo;s see how we do that .. first, let us sign up for sharing by allowing the OS interfaces to request data from our application:&lt;/p&gt;&lt;div style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; Windows.ApplicationModel.DataTransfer;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt; &lt;span style="color: #cc6633;"&gt;#region&lt;/span&gt; &lt;span style="color: #006080;"&gt;"Constructor"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; MainPage()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;     InitializeComponent();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt;     &lt;span style="color: #008000;"&gt;// Sign up to Share.&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt;     var dataTransferManager = Windows.ApplicationModel.DataTransfer.DataTransferManager.GetForCurrentView();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt;  11:&lt;/span&gt;     dataTransferManager.DataRequested += &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; TypedEventHandler&amp;lt;DataTransferManager,DataRequestedEventArgs&amp;gt;(dataTransferManager_DataRequested);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt;  12:&lt;/span&gt; }        &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt;  13:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum14" style="color: #606060;"&gt;  14:&lt;/span&gt; endregion&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Next, when data is actually requested (this happens when the user hits the Share Charm), we get to respond to the event in our application and make up what data element to share. Here&amp;rsquo;s how:&lt;/p&gt;&lt;div style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; dataTransferManager_DataRequested(DataTransferManager sender, DataRequestedEventArgs args)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.fullTeamList.SelectedItem != &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;// Set what to share.&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;         Team selectedMember = (Team)&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.fullTeamList.SelectedItem;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; textToShare = &lt;span style="color: #006080;"&gt;"Selected Team Member: "&lt;/span&gt; + selectedMember.TwitterHandle;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt;         args.Request.Data.Properties.Title = &lt;span style="color: #006080;"&gt;"Team Member Selection"&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt;         args.Request.Data.SetText(textToShare);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt;  11:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;That&amp;rsquo;s it .. easy to share, right? You may learn more about the Share contract from this BUILD sessions &lt;a href="http://channel9.msdn.com/events/BUILD/BUILD2011/APP-405T" target="_blank"&gt;HERE&lt;/a&gt;.&lt;/p&gt;&lt;h4&gt;Implementing Contracts&lt;/h4&gt;&lt;p&gt;Now, how would we go about actually implementing a Contract? Simple, most common ones are available in the &amp;ldquo;Add New Item&amp;rdquo; project wizard, as shown here:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/samidip/Contracts_2.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="Contracts" alt="Contracts" src="http://www.silverlightshow.net/Storage/Users/samidip/Contracts_thumb.png" width="644" height="444" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Now, let us say our application has some interesting data/files to search on. So, if we implement the &lt;strong&gt;Search&lt;/strong&gt; contract, the end user may search for our application&amp;rsquo;s data directly from Windows Search, even if our application is not running. The user gets to see our App in the list for Search &amp;amp; search query parameters get passed directly into our application. Here&amp;rsquo;s how:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/samidip/Search_2.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="Search" alt="Search" src="http://www.silverlightshow.net/Storage/Users/samidip/Search_thumb.png" width="644" height="364" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;If our application does implement the Search contract, the App Manifest file gets updated with &lt;strong&gt;Declarations&lt;/strong&gt; .. others can be added from the same screen below along with implementation:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/samidip/Declarations_2.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="Declarations" alt="Declarations" src="http://www.silverlightshow.net/Storage/Users/samidip/Declarations_thumb.png" width="644" height="364" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;So, now when the user searches contextually within your application from Windows Search, your application gets to respond showing a custom Search results view. The basics of this are added as a &lt;em&gt;SearchResultsPage.xaml &lt;/em&gt;when we add the Search contract, as displayed below:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/samidip/App%20Context%20Search_2.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="App Context Search" alt="App Context Search" src="http://www.silverlightshow.net/Storage/Users/samidip/App%20Context%20Search_thumb.png" width="644" height="364" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;And we get to respond to Search queries from the user within our view as follows:&lt;/p&gt;&lt;div style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;sealed&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;partial&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; SearchResultsPage&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; SearchResultsPage()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;         InitializeComponent();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; Activate(SearchActivatedEventArgs args)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt;         var queryText = args.QueryText;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt;  11:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt;  12:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;// Application-specific searching logic.&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt;  13:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;// Bind Search results to UI.&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum14" style="color: #606060;"&gt;  14:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum15" style="color: #606060;"&gt;  15:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;// Display the results&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum16" style="color: #606060;"&gt;  16:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.PreviousContent = Window.Current.Content;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum17" style="color: #606060;"&gt;  17:&lt;/span&gt;         Window.Current.Content = &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum18" style="color: #606060;"&gt;  18:&lt;/span&gt;         Window.Current.Activate();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum19" style="color: #606060;"&gt;  19:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum20" style="color: #606060;"&gt;  20:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Much more details about the Search contract can be found in this BUILD session recording &lt;a href="http://channel9.msdn.com/events/BUILD/BUILD2011/APP-406T" target="_blank"&gt;HERE&lt;/a&gt;.&lt;/p&gt;&lt;h2&gt;Artwork&lt;/h2&gt;&lt;p&gt;Last but possibly the most important &amp;ndash; let&amp;rsquo;s make nice looking Apps, shall we? Let&amp;rsquo;s take care of the user&amp;rsquo;s UX and they in turn, would take care of us developers, right? So, just like in Windows Phone, we developers need to put our Designer caps on, since graphics &amp;amp; artwork is of paramount importance.&amp;nbsp; Let us follow Metro design guidelines to make our application feel right at home in Windows 8. Here&amp;rsquo;s our demo application on start screen:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/samidip/Start_2.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="Start" alt="Start" src="http://www.silverlightshow.net/Storage/Users/samidip/Start_thumb.png" width="644" height="364" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Here are some things not to miss:&lt;/p&gt;&lt;ul&gt;    &lt;li&gt;Inviting App logo on Start screen &lt;/li&gt;    &lt;li&gt;Inviting &amp;amp; Contextual App logo in App Store, along with great screenshots &amp;amp; description &lt;/li&gt;    &lt;li&gt;Branded Splash screen if using one as your App launches &lt;/li&gt;    &lt;li&gt;Rich but minimal graphics &amp;amp; backgrounds in App &lt;/li&gt;    &lt;li&gt;Maintain consistency &lt;/li&gt;    &lt;li&gt;Enable Live Tiles with Push Notifications (topic for another post someday) &lt;/li&gt;    &lt;li&gt;Contract implementations through consistent UI to keep inviting your users back into the App &lt;/li&gt;    &lt;li&gt;Metro, Metro, Metro &lt;img style="border-style: none;" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://www.silverlightshow.net/Storage/Users/samidip/__wlEmoticon-smile_2.png" /&gt; &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Still waiting .. c&amp;rsquo;mon let&amp;rsquo;s get started! Let&amp;rsquo;s play a part in Windows re-imagined.&lt;/p&gt;&lt;h2&gt;Summary&lt;/h2&gt;&lt;p&gt;In this 2 part article, we talked about how to get started with Windows 8 Metro Apps with XAML/C# and we went on to consumption/updates of OData from a Windows 8 Metro application. In Part 1, we looked at a few techniques on how to do asynchronous programming in Windows 8 using the new C# 5.0 constructs of Async-Await. In Part 2, we talked about taking the first steps towards making your Metro Apps feel at home in the Windows 8 Operating System.&lt;/p&gt;&lt;p&gt;I would appreciate any comments or concerns or how things could be done better. Thanks for reading &amp;amp; happy coding.&lt;/p&gt;&lt;p&gt;Cheers &lt;em&gt;SilverlightShow&lt;/em&gt;!&lt;/p&gt;&lt;h2&gt;&lt;/h2&gt;&lt;h2&gt;&lt;/h2&gt;&lt;h2&gt;About the Author&lt;/h2&gt;&lt;p&gt;&lt;img style="background-image: none; margin-top: 0px; margin-right: 15px; margin-bottom: 0px; margin-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; float: left;        border-width: 0px;border-style: solid;" title="ActualPic_thumb1" alt="ActualPic_thumb1" src="http://www.silverlightshow.net/Storage/Users/samidip/ActualPic_thumb1_3.jpg" width="104" height="126" /&gt;Samidip Basu (&lt;a href="http://twitter.com/#!/samidip"&gt;@samidip&lt;/a&gt;) is a technologist &amp;amp; gadget-lover working as a Manager &amp;amp; Solutions Lead for Sogeti out of the Columbus Unit. Having worked on WP7 since CTP days, he now spends much of his time in spreading the word to discover the full potential of the Windows Phone platform &amp;amp; cloud-based mobile solutions in general. He passionately runs the Central Ohio Windows Phone User Group (&lt;a href="http://cowpug.org/"&gt;http://cowpug.org/&lt;/a&gt;), labors in M3 Conf (&lt;a href="http://m3conf.com/"&gt;http://m3conf.com/&lt;/a&gt;/) organization and can be found with at-least a couple of hobbyist projects at any time. His spare times call for travel and culinary adventures with the wife. Find out more at &lt;a href="http://samidipbasu.com/"&gt;http://samidipbasu.com/&lt;/a&gt;&lt;a href="http://samidipbasu.com/"&gt;.&lt;/a&gt;&lt;/p&gt;</description>      <link>http://www.silverlightshow.net/items/Windows-8-XAML-Metro-Apps-with-OData-Part-2.aspx</link>      <author>editorial@silverlightshow.net (Samidip Basu )</author>      <comments>http://www.silverlightshow.net/items/Windows-8-XAML-Metro-Apps-with-OData-Part-2.aspx#comments</comments>      <guid isPermaLink="true">http://www.silverlightshow.net/items/Windows-8-XAML-Metro-Apps-with-OData-Part-2.aspx</guid>      <pubDate>Thu, 08 Dec 2011 10:57:00 GMT</pubDate>    </item>    <item>      <title>MVVM Light template and WCF services (or any ASP.NET application for that matter)</title>      <link>http://geekswithblogs.net/lbugnion/archive/2011/12/07/mvvm-light-template-and-wcf-services-or-any-asp.net-application.aspx</link>      <description>&lt;p&gt;I was recently made aware of a couple of people having issues with WCF services (or ASP.NET applications) when using the MVVM Light project template for Silverlight. There is a blog post and a StackOverflow question, so what exactly is happening there?&lt;/p&gt;  &lt;p align="left"&gt;Well in fact it is pretty simple when you know how Silverlight connects to web services. Due to the security model of Silverlight, the application cannot connect to a web site if it is not originating of this very website. In laymen’s terms, it means that the application can only connect to a web server if it also comes from the same webserver. For example, if the Silverlight application is served by &lt;a href="http://www.galasoft.com"&gt;http://www.galasoft.com&lt;/a&gt;, it won’t be able to connect to, say, &lt;a href="http://www.cnn.com"&gt;http://www.cnn.com&lt;/a&gt; without getting an exception. We talk about cross-domain access restrictions.&lt;/p&gt;  &lt;p align="left"&gt;&lt;em&gt;Of course there are ways around that, for instance a website can specifically give access to Silverlight applications &lt;a href="http://msdn.microsoft.com/en-us/library/cc645032%28v=VS.95%29.aspx"&gt;through a configuration file&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;  &lt;p align="left"&gt;In the case that concerns us, it is exactly what is happening. You see, the MVVM Light Silverlight project template creates a Silverlight application without an ASP.NET host. I didn’t add one because I didn’t want to complicate the template too much. And also, to be honest, because adding a web project is super easy, but of course only if you know how to do, and this is exactly what we will do here!&lt;/p&gt;  &lt;h2&gt;Creating the application&lt;/h2&gt;  &lt;p&gt;The steps to create the application and the WCF service are as follows:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Create the MVVM Light application using the MVVM Light project template for Silverlight. &lt;/li&gt;    &lt;li&gt;Right click on the solution in the Solution Explorer and select "Add, New Project from the context menu. &lt;/li&gt;    &lt;li&gt;From the WCF category, select a WCF Service Application and create it. &lt;/li&gt;    &lt;li&gt;Build the application. &lt;/li&gt;    &lt;li&gt;Right click on the MVVM Light project and select Add Service Reference from the context menu. &lt;/li&gt;    &lt;li&gt;In the Add Service Reference dialog, click on Discover. &lt;/li&gt;    &lt;li&gt;Make sure that the found service is the one you want to connect to, and click on OK. &lt;/li&gt;    &lt;li&gt;In the MVVM Light application, open the file Model/DataService.cs and modify the code as follows: &lt;/li&gt; &lt;/ul&gt;  &lt;pre class="csharp" name="code"&gt;public class DataService : IDataService{    public void GetData(Action&amp;lt;DataItem, Exception&amp;gt; callback)    {        var client = new ServiceReference1.Service1Client();        client.GetDataCompleted += ClientGetDataCompleted;        client.GetDataAsync(1234, callback);    }    void ClientGetDataCompleted(        object sender,         ServiceReference1.GetDataCompletedEventArgs e)    {        var callback = e.UserState as Action&amp;lt;DataItem, Exception&amp;gt;;        if (callback == null)        {            return;        }        if (e.Error != null)        {            callback(null, e.Error);        }        callback(new DataItem(e.Result), null);    }}&lt;/pre&gt;&lt;p&gt;This code uses an asynchronous service call pattern where the callback (a reference to a method passed as Action by the caller) is saved in the service call. Then when the asychronous call returns (in the Completed event), the callback is retrieved from the UserState. If an error occurred, the callback can be used to pass this error to the caller. Otherwise, a new DataItem class is created and passed to the called.&lt;/p&gt;&lt;p&gt;&lt;em&gt;Details about this pattern can be found in my talks &lt;a href="http://www.galasoft.ch/mvvmvideo1"&gt;Understanding the MVVM pattern&lt;/a&gt; and &lt;a href="http://www.galasoft.ch/mvvmvideo2"&gt;Deep Dive MVVM&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;&lt;h2&gt;So why doesn’t it work?&lt;/h2&gt;&lt;p&gt;If you run the application now (making sure that the MVVM Light project is selected as Startup Project), you will first see a warning dialog and then an exception. What happened?&lt;/p&gt;&lt;p&gt;&lt;a title="Warning dialog" href="http://www.flickr.com/photos/36917929@N06/6473500843"&gt;&lt;img src="http://farm8.staticflickr.com/7154/6473500843_6dd5be59cf.jpg" width="478" height="185" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;&lt;a title="Exception" href="http://www.flickr.com/photos/36917929@N06/6473504667"&gt;&lt;img src="http://farm8.staticflickr.com/7166/6473504667_0302c65c53.jpg" width="408" height="443" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;What happened here is exactly the cross-domain issue I mentioned: The Silverlight application is not explicitly hosted into a web application, so Visual Studio is using an auto-generated HTML page instead, and running it from the embedded web server (“Cassini”). In fact, unless you explicitly specified otherwise, the test page is run in “file mode” instead of HTTP mode. The URI in the web browser window starts with C:\ for instance, instead of http://.&lt;/p&gt;&lt;p&gt;In those conditions, the access to the WCF service is (justly) denied, and you get a security exception.&lt;/p&gt;&lt;h2&gt;Correcting the error&lt;/h2&gt;&lt;p&gt;In order to correct the error, you can either &lt;a href="http://msdn.microsoft.com/en-us/library/cc645032%28v=VS.95%29.aspx"&gt;add a cross-domain policy file&lt;/a&gt; to your WCF application, or host the Silverlight application in the same web project as the WCF service. Let’s do that now:&lt;/p&gt;&lt;ul&gt;  &lt;li&gt;Right click on the WCF Service application in the Solution Explorer, and select Properties from the context menu. &lt;/li&gt;  &lt;li&gt;On the left, select the Silverlight Applications tab. &lt;/li&gt;  &lt;li&gt;Click on Add. &lt;/li&gt;  &lt;li&gt;Select Use an existing Silverlight project in the solution and make sure that your MVVM Light application is selected in the combo box. &lt;/li&gt;  &lt;li&gt;Make sure that Add a test page that references the control is checked, as well as Enable Silverlight debugging. &lt;/li&gt;  &lt;li&gt;Press Add. &lt;/li&gt;&lt;/ul&gt;&lt;a title="Configuring the Silverlight application" href="http://www.flickr.com/photos/36917929@N06/6473557623"&gt;&lt;img src="http://farm8.staticflickr.com/7146/6473557623_569d8c0630.jpg" width="500" height="461" /&gt;&lt;/a&gt; &lt;p&gt;This creates two new files in your WCF Service application: One is suffixed TestPage.html and the other is suffixed TestPage.aspx. We typically don’t need the ASPX one so you can safely delete it.&lt;/p&gt;&lt;ul&gt;  &lt;li&gt;Right click on the WCF Service application and select Set as StartUp Project from the context menu. &lt;/li&gt;  &lt;li&gt;Right click about the HTML test page and select Set as Start Page from the context menu. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;By doing this, we force Visual Studio to serve the HTML page and the Silverlight application from the same URL as the WCF Service, and to serve it as HTTP. This is possible because &lt;strong&gt;a WCF Service application is nothing else than an ASP.NET web server running WCF&lt;/strong&gt;. So the same web server can deliver HTML, Silverlight and of course WCF.&lt;/p&gt;&lt;p&gt;If you run the application now, you will see the following result:&lt;/p&gt;&lt;a title="Snagit Capture for Flickr" href="http://www.flickr.com/photos/36917929@N06/6473564443"&gt;&lt;img src="http://farm8.staticflickr.com/7007/6473564443_d68c4eb3fb.jpg" width="500" height="294" /&gt;&lt;/a&gt; &lt;p&gt;&lt;em&gt;Note that the warning shown earlier will still appear, but it is really just a warning, and you can safely turn it off. Just remember the cross-domain restriction when you publish your Silverlight application to another web server!&lt;/em&gt;&lt;/p&gt;&lt;p&gt;Success, we hit the WCF service and returned with a valid result! In fact, you can verify by placing breakpoints in the DataService.GetData method on the client, and in the Service1.GetData method on the server. Then press F5 to run the application in Debug mode and notice how you can easily debug both the client and the server at the same time.&lt;/p&gt;&lt;h2&gt;What about the opposite way?&lt;/h2&gt;&lt;p&gt;It is also possible to add a new MVVM Light application to an existing WCF Service application with the following steps (I am going a bit faster now, I am sure you will get it easily):&lt;/p&gt;&lt;ul&gt;  &lt;li&gt;Open the existing WCF Service application. &lt;/li&gt;  &lt;li&gt;Right click on the Solution and select Add New Project. &lt;/li&gt;  &lt;li&gt;Select the MVVM Light project template for Silverlight and add a new project. &lt;/li&gt;  &lt;li&gt;Build the application. &lt;/li&gt;  &lt;li&gt;Just like before, add a Service Reference to the Silverlight application. &lt;/li&gt;  &lt;li&gt;Again, just like before, add the Silverlight application to the WCF Service application (WCF Project Properties, Silverlight Applications, Add…). &lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Summary&lt;/h2&gt;&lt;p&gt;Hopefully the confusion around this is cleared now. In summary:&lt;/p&gt;&lt;ul&gt;  &lt;li&gt;Silverlight applications are restricted to access cross-domain web servers (unless explicitly authorized to do so). &lt;/li&gt;  &lt;li&gt;The default MVVM Light application does not have an explicit host, so it runs off the default test page. &lt;/li&gt;  &lt;li&gt;You can however easily add the MVVM Light application to the WCF Service application and then run it and debug it. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Note that the steps above can be used to add an MVVM Light application (or any Silverlight application) to any ASP.NET application, be it WCF Service application, ASP.NET MVC application or “classic” ASP.NET application.&lt;/p&gt;&lt;p&gt;Happy coding!   &lt;br /&gt;Laurent&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;div style="margin-bottom: -1em"&gt;  &lt;div style="vertical-align: middle"&gt;&lt;a href="http://www.galasoft.ch/"&gt;&lt;img title="GalaSoft Laurent Bugnion" alt="GalaSoft Laurent Bugnion" src="http://www.galasoft.ch/logo/Current/logo_120x30.png" /&gt;&lt;/a&gt; &lt;/div&gt;  &lt;div style="position: relative; top: -36px; left: 130px"&gt;&lt;strong&gt;&lt;a href="http://www.galasoft.ch/contact_en.html"&gt;Laurent Bugnion (GalaSoft)&lt;/a&gt;&lt;/strong&gt;     &lt;br /&gt;&lt;a href="http://feeds.feedburner.com/galasoft"&gt;Subscribe&lt;/a&gt; | &lt;a href="http://twitter.com/lbugnion"&gt;Twitter&lt;/a&gt; | &lt;a href="http://www.facebook.com/lbugnion"&gt;Facebook&lt;/a&gt; | &lt;a href="http://www.flickr.com/photos/lbugnion"&gt;Flickr&lt;/a&gt; | &lt;a href="http://www.linkedin.com/in/lbugnion"&gt;LinkedIn&lt;/a&gt;     &lt;br /&gt;&lt;iframe style="border-bottom-style: none; margin-top: 7px; border-left-style: none; width: 450px; border-top-style: none; margin-bottom: -20px; height: 23px; border-right-style: none; overflow: hidden" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.galasoft.ch/archive/2011/12/07/mvvm-light-template-and-wcf-services-or-any-asp.net-application.aspx&amp;amp;layout=standard&amp;amp;show_faces=true&amp;amp;width=450&amp;amp;action=like&amp;amp;colorscheme=light" frameborder="0" allowtransparency="allowtransparency" scrolling="no"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/div&gt; &lt;img src="http://geekswithblogs.net/lbugnion/aggbug/147973.aspx" width="1" height="1" /&gt;</description>      <creator xmlns="http://purl.org/dc/elements/1.1/">Laurent Bugnion</creator>      <guid>http://geekswithblogs.net/lbugnion/archive/2011/12/07/mvvm-light-template-and-wcf-services-or-any-asp.net-application.aspx</guid>      <pubDate>Wed, 07 Dec 2011 21:36:33 GMT</pubDate>      <comment xmlns="http://wellformedweb.org/CommentAPI/">http://geekswithblogs.net/lbugnion/comments/147973.aspx</comment>      <comments>http://geekswithblogs.net/lbugnion/archive/2011/12/07/mvvm-light-template-and-wcf-services-or-any-asp.net-application.aspx#feedback</comments>      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">1</comments>      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://geekswithblogs.net/lbugnion/comments/commentRss/147973.aspx</commentRss>      <ping xmlns="http://madskills.com/public/xml/rss/module/trackback/">http://geekswithblogs.net/lbugnion/services/trackbacks/147973.aspx</ping>    </item>    <item>      <link>http://feedproxy.google.com/~r/MarkMonster_Silverlight/~3/E7yjF5lPung/what-does-featuring-in-the-marketplace-do-with-your-app</link>      <author xmlns="http://www.w3.org/2005/Atom">        <name>Mark Monster</name>      </author>      <category>.NET</category>      <category>Technology</category>      <category>WP7</category>      <category>WPDev</category>      <title>What does featuring in the Marketplace do with your app?</title>      <description>&lt;p&gt;A lot of Windows Phone developers probably already know, but some might not. There is a very interesting tool in the market to monitor your application for Downloads, Ranking and Reviews: &lt;a href="http://monitor.distimo.com/" target="_blank"&gt;Distimo Monitor&lt;/a&gt;. You can for example &lt;a href="http://peshir.blogspot.com/2011/11/command-conquer-distimo-style.html" target="_blank"&gt;compare your application with your competition and conquer the world&lt;/a&gt;. Besides that Distimo also shows you when your application was featured in the Marketplace. A couple of the apps I created have been featured so far, but let’s look at &lt;a href="http://windowsphone.com/s?appid=5f171b43-6ea8-e011-a53c-78e7d1fa76f8" target="_blank"&gt;Fokke &amp;amp; Sukke app&lt;/a&gt; and the target market (The Netherlands).&lt;/p&gt;  &lt;h3&gt;Is my app featured?&lt;/h3&gt;  &lt;p&gt;You can watch closely how the marketplace looks either on the Phone or in Zune to see if your app is featured.&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://mark.mymonster.nl/Uploads/2011/12/image-3.png" width="640" height="295" /&gt;&lt;/p&gt;  &lt;p&gt;But in the end, this is not very doable. Don’t forget that your app can be featured in every market separately. So what else? We have the distimo monitor which shows events for your application. You can see when a new version was released and when your app was featured.&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://mark.mymonster.nl/Uploads/2011/12/image-8.png" width="640" height="192" /&gt;&lt;/p&gt;  &lt;p&gt;The featured periods are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;12/10 – 18/10&lt;/li&gt;    &lt;li&gt;02/11 – 08/11&lt;/li&gt;    &lt;li&gt;30/11 – 06/12&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;My app is featured, now what?&lt;/h3&gt;    &lt;p&gt;It’s cool to see that this app has been featured that often, but what does it mean? Let’s take a look at the Ranking in those periods.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://mark.mymonster.nl/Uploads/2011/12/image-7.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://mark.mymonster.nl/Uploads/2011/12/image-thumb-2.png" width="644" height="107" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You can easily see the areas when the app was featured by the green regions. But more important, you can see that in the first and third period being featured meant that the ranking went up immediately.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MarkMonster_Silverlight/~4/E7yjF5lPung" height="1" width="1"/&gt;</description>      <pubDate>Wed, 07 Dec 2011 19:00:00 +0100</pubDate>      <updated xmlns="http://www.w3.org/2005/Atom">2011-12-07T06:50:48+01:00</updated>      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://mark.mymonster.nl/2011/12/07/what-does-featuring-in-the-marketplace-do-with-your-app</origLink>    </item>    <item>      <title>Windows 8 XAML Metro Apps with OData - Part 1</title>      <description>&lt;table width="20"&gt;    &lt;tbody&gt;        &lt;tr&gt;            &lt;td&gt;            &lt;div class="fb-like" data-show-faces="true" data-send="false" data-href="http://www.silverlightshow.net/items/Windows-8-XAML-Metro-Apps-with-OData.aspx" data-font="segoe ui" data-layout="button_count"&gt;&lt;/div&gt;            &lt;/td&gt;            &lt;td&gt;&lt;a href="https://twitter.com/share" class="twitter-share-button" data-via="silverlightshow" data-counturl="http://www.silverlightshow.net/items/Windows-8-XAML-Metro-Apps-with-OData.aspx" data-count="horizontal" data-text="Reading the article 'Win8 XAML Metro Apps with OData - Part 1' by @samidip" data-url="http://slshow.net/tJIMTd"&gt;Tweet&lt;/a&gt;&lt;/td&gt;            &lt;td&gt;&lt;g:plusone size="medium" href="http://www.silverlightshow.net/items/Windows-8-XAML-Metro-Apps-with-OData.aspx"&gt;&lt;/g:plusone&gt;            &lt;/td&gt;            &lt;td&gt;            &lt;/td&gt;        &lt;/tr&gt;    &lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;So, you have heard the buzz about the brave new world of &lt;em&gt;Windows 8&lt;/em&gt; from MSFT&amp;rsquo;s &lt;em&gt;BUILD&lt;/em&gt; Conference! May be you even attended the wonderful SilverlightShow webinar about &amp;ldquo;&lt;a href="http://www.silverlightshow.net/video/Recording-of-Webinar-Introduction-to-XAML-Development-on-Windows-8-by-Gill-Cleeren.aspx" target="_blank"&gt;Getting Started with XAML Development in Windows 8&lt;/a&gt;&amp;rdquo; by &lt;a href="https://twitter.com/#!/gillcleeren" target="_blank"&gt;Gill Cleeren&lt;/a&gt;. &lt;/p&gt;&lt;div style="border:1px solid #dddddd;padding-bottom: 5px; background-color: #f3f3f3; margin-top: 5px; padding-left: 10px; width: 200px; float: right; margin-left: 10px; margin-right: 5px; padding-top: 5px;"&gt;&lt;h3&gt;Don't miss...&lt;/h3&gt;&lt;ul style="list-style-type: circle; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-left: 20px; font-size: 12px;"&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/video/Recording-of-Webinar-Introduction-to-XAML-Development-on-Windows-8-by-Gill-Cleeren.aspx"&gt;Webinar recording: Introduction to XAML Development on Windows 8&lt;/a&gt; &lt;/li&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/items/Producing-and-Consuming-OData-in-a-Silverlight-and-Windows-Phone-7-application.aspx"&gt;Article series: Producing and Consuming OData in a Silverlight and WP7 application&lt;/a&gt; &lt;/li&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/ebooks/odata_cloud.aspx"&gt;Samisip's Ebook 'OData &amp;amp; Cloud Augmentation of Windows Phone Apps':&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;p style="padding-bottom: 5px; text-align: center;"&gt;&lt;a href="http://www.silverlightshow.net/ebooks/odata_cloud.aspx"&gt;&lt;img style="width: 107px; height: 150px;" alt="Producing and Consuming OData in a Silverlight and WP7 App Ebook" src="http://www.silverlightshow.net/Storage/Ebooks/odata_cloud.png" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="font-size: 12px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.silverlightshow.net/ebooks.aspx"&gt;All SilverlightShow Ebooks&lt;/a&gt;&amp;nbsp;&lt;img alt="" src="http://www.silverlightshow.net/Storage/arrow-content.jpg" /&gt;&lt;/p&gt;&lt;/div&gt;Ready to get your hands muddy? In this short 2-part article series, we talk about how to get started towards writing data-driven (specifically OData) Windows 8 Metro apps with XAML &amp;amp; C#. Here&amp;rsquo;s what we&amp;rsquo;ll cover:&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;ul&gt;    &lt;li&gt;&lt;strong&gt;Part 1 &amp;ndash; Handling of OData from our XAML Metro App [Consumption &amp;amp; Updates to OData source]&lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;&lt;/strong&gt;&lt;a href="http://www.silverlightshow.net/items/Windows-8-XAML-Metro-Apps-with-OData-Part-2.aspx" target="_self"&gt;&lt;strong&gt;Part 2&lt;/strong&gt; &amp;ndash; How to make your XAML App a well-behaved Windows 8 citizen [Artwork, Snapped Views, Contracts, Application Bar etc]&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;As always, the demo solution, along with all code samples is available for download through the link below:&lt;/p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Sources/TeamMetro.zip"&gt;&lt;h4&gt;Download Source Code&lt;/h4&gt;&lt;/a&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;h2&gt;Introduction&lt;/h2&gt;&lt;p&gt;At the BUILD Conference in August 2011, Microsoft launched Windows 8 .. the next iteration of Windows. It isn&amp;rsquo;t a forked world between desktop &amp;amp; mobile/tablet Operating Systems; rather &amp;ldquo;One OS to rule them all..&amp;rdquo; which runs on variety of form factors with touch-based interaction being a first-class citizen. &lt;/p&gt;We could obviously talk a lot about Windows 8; but for the sake of the length of this blog post, let me refer you to 2 valuable resources:&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;ol&gt;    &lt;li&gt;&lt;em&gt;BUILD&lt;/em&gt; Website @ &lt;a href="http://www.buildwindows.com/" title="http://www.buildwindows.com/"&gt;http://www.buildwindows.com/&lt;/a&gt;. Great place to start would be the 5 Keynotes, followed by tons of recorded Session content. &lt;/li&gt;    &lt;li&gt;&lt;em&gt;Windows 8 Developer Home&lt;/em&gt; @ &lt;a href="http://msdn.microsoft.com/en-us/windows/home" title="http://msdn.microsoft.com/en-us/windows/home"&gt;http://msdn.microsoft.com/en-us/windows/home&lt;/a&gt;. On this site is a link to download the Windows 8 Developer Preview &amp;ndash; the latest Windows 8 bits along with Development tools. Also, as you get into serious Windows 8 Metro development, the &lt;a href="http://code.msdn.microsoft.com/windowsapps/" target="_blank"&gt;samples&lt;/a&gt; from Microsoft &amp;amp; contributions from our fabulous community should be very valuable. &lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Also, check out the overall technology stack in Windows 8 below: [Source: Doug Seven&amp;rsquo;s &lt;a href="http://dougseven.com/2011/09/15/a-bad-picture-is-worth-a-thousand-long-discussions/" target="_blank"&gt;Post&lt;/a&gt;]&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/samidip/Windows%208%20Stack_2.png"&gt;&lt;img width="644" height="364" title="Windows 8 Stack" style="border:0px solid; background-image: none; display: inline;" alt="Windows 8 Stack" src="http://www.silverlightshow.net/Storage/Users/samidip/Windows%208%20Stack_thumb.png" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;A lot has been written in the past few months about Win RT &amp;amp; the development stack in Windows 8 .. simple web searches should get us lots of resources. For this article &amp;amp; the demo app, we will stick to the managed world of XAML UI &amp;amp; C# code running on .NET 4.5 on top of Win RT. There might be some rough edges .. but we are all trying to learn, right? &lt;img class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://www.silverlightshow.net/Storage/Users/samidip/_wlEmoticon-smile_2.png" /&gt;&lt;/p&gt;&lt;ol&gt;&lt;/ol&gt;    &lt;h2&gt;Prerequisites&lt;/h2&gt;    &lt;p&gt;To follow along or to try the Demo or build something similar yourself, you need the following:&lt;/p&gt;    &lt;ol&gt;        &lt;li&gt;Windows 8 Developer Preview running &amp;ldquo;on the metal&amp;rdquo; on some laptop/tablet. &lt;/li&gt;        &lt;li&gt;Alternatively, you could also run Windows 8 in a VM (VirtualBox being the best fit at this time) or off a VHD. &lt;/li&gt;        &lt;li&gt;Visual Studio 11 included as a part of Windows 8 Developer Preview. At this point, the templates to build Metro Apps aren&amp;rsquo;t available outside the Windows 8 bits. &lt;/li&gt;        &lt;li&gt;Curiosity &lt;/li&gt;    &lt;/ol&gt;    &lt;p&gt;&amp;nbsp;&lt;/p&gt;    &lt;h2&gt;The Data&lt;/h2&gt;    &lt;p&gt;Let&amp;rsquo;s try building a data-driven Metro App, shall we? For Demo purposes, I&amp;rsquo;m going to use a simple relational DB called &amp;ldquo;&lt;em&gt;Demo&lt;/em&gt;&amp;rdquo; hosted in SQL Azure with just one table called &amp;ldquo;&lt;em&gt;Team&lt;/em&gt;&amp;rdquo;, as shown below with schema/data:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/samidip/DataTable_2.png"&gt;&lt;img width="644" height="351" title="DataTable" style="border:0px solid; background-image: none; display: inline;" alt="DataTable" src="http://www.silverlightshow.net/Storage/Users/samidip/DataTable_thumb.png" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;So essentially, we want to keep track of Team Members with Names &amp;amp; TwitterHandles. How can we get this data easily into a Windows 8 Metro App? Why off course, &lt;em&gt;&lt;strong&gt;OData&lt;/strong&gt;&lt;/em&gt; !!&lt;/p&gt;    &lt;p&gt;You may learn more about OData from &lt;a href="http://www.odata.org/" title="http://www.odata.org/"&gt;http://www.odata.org/&lt;/a&gt;. I already have an OData Service built on top of our DB to expose the Team table data as an OData feed for consumption. Need to expose your data as OData? &amp;ndash; Check out Michael Crump&amp;rsquo;s great series on &lt;a href="http://www.silverlightshow.net/items/Producing-and-Consuming-OData-in-a-Silverlight-and-Windows-Phone-7-application.aspx" target="_blank"&gt;Producing &amp;amp; Consuming OData in Silverlight &amp;amp; Windows Phone Applications&lt;/a&gt;. &lt;/p&gt;    &lt;p&gt;Also, remember my article on &lt;a href="http://www.silverlightshow.net/items/Connecting-Azure-Windows-Phone-through-OData.aspx" target="_blank"&gt;Connecting Azure &amp;amp; Windows Phone through OData&lt;/a&gt; ? In that article, we talked about consuming OData from the same SQL Azure DB Table &amp;amp; also easily performing CRUD operations against data source through OData from a Windows Phone application. So essentially, we want to take the Windows Phone Demo application handling OData &amp;amp; port it over to being a Windows 8 Metro App in XAML &amp;amp; C#. You&amp;rsquo;ll soon realize that while we have to accommodate the UI having a lot more real estate in Windows 8, a lot of the coding artifacts are very similar or can be reused in the Windows 8 world with minor changes. If you have done Windows Phone Development, you should feel right at home in doing XAML Metro Apps!&lt;/p&gt;    &lt;p&gt;So, here&amp;rsquo;s the OData service endpoint which provides access to our Table data in AtomPub (default) or JSon format: &lt;/p&gt;    &lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/samidip/OData%20Service_2.png"&gt;&lt;img width="644" height="351" title="OData Service" style="border:0px solid; background-image: none; display: inline;" alt="OData Service" src="http://www.silverlightshow.net/Storage/Users/samidip/OData%20Service_thumb.png" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;h2&gt;The Metro App&lt;/h2&gt;    &lt;p&gt;So, now that we have a data source &amp;amp; an OData service on top of it exposing the data, let&amp;rsquo;s see how we may consume it in a Windows 8 Metro App. Let&amp;rsquo;s fire up Visual Studio 11 &amp;amp; make our appropriate selections as below:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/samidip/Project%20Template_2.png"&gt;&lt;img width="644" height="447" title="Project Template" style="border:0px solid; background-image: none; display: inline;" alt="Project Template" src="http://www.silverlightshow.net/Storage/Users/samidip/Project%20Template_thumb.png" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;The above selection gets us into a mode for building Metro Apps with XAML UI &amp;amp; C# code in a managed runtime. Just like in Windows Phone, the templates provided are your friends, as they get us a long way towards achieving Metro UI look &amp;amp; feel in our applications. For our demo, we shall choose to start with an empty application canvas &amp;amp; focus on fetching data into our app.&lt;/p&gt;    &lt;p&gt;Now, since we have an OData service, it&amp;rsquo;ll be nice to Add a Service Reference to the service in our project so that we know the backend entities &amp;amp; can refer to them in code. Ouch &amp;ndash; too soon &lt;img class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://www.silverlightshow.net/Storage/Users/samidip/_wlEmoticon-smile_2.png" /&gt; The automatic proxy building against an OData service by adding a Service Reference isn&amp;rsquo;t quite ready in the Windows 8 tooling yet! So, we revert to the old-school way of adding our service reference into the project:&lt;/p&gt;    &lt;pre&gt;&lt;em&gt;&lt;code&gt;DataSvcUtil.exe /uri:Your_OData_Endpoint/out:TeamModel.cs /Version:2.0 /DataServiceCollection&lt;/code&gt;&lt;/em&gt;&lt;/pre&gt;    &lt;p&gt;&amp;nbsp;&lt;/p&gt;    &lt;p&gt;As you could see, we used the DataSvcUtil tool (tucked away in your .NET Framework folder) to generate a proxy class which has all the entity bindings .. now we could simply drop the generated file into our project. Our project structure looks something like this .. the &amp;ldquo;Package.appxmanifest&amp;rdquo; file quite simply houses all your App configuration:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/samidip/Project%20Stucture.png"&gt;&lt;img width="304" height="389" title="Project Stucture" style="border:0px solid; background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" alt="Project Stucture" src="http://www.silverlightshow.net/Storage/Users/samidip/Project%20Stucture_thumb.png" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;h2&gt;The UI&lt;/h2&gt;    &lt;p&gt;Don&amp;rsquo;t you wish you were working with a Team where every member is a Ninja? Well, let&amp;rsquo;s say that&amp;rsquo;s the case &amp;amp; we shall shoot for our Metro App UI to be something simple, like this:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/samidip/Team%20List_2.png"&gt;&lt;img width="644" height="364" title="Team List" style="border:0px solid; background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" alt="Team List" src="http://www.silverlightshow.net/Storage/Users/samidip/Team%20List_thumb.png" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;The above screenshot is our Demo app running in the normal full-screen immersive UI mode. Notice how it is completely Chrome-free &amp;amp; puts content first.&amp;nbsp; Just because we can clutter the UI with all kinds of controls, doesn&amp;rsquo;t mean that we should, right?&lt;/p&gt;    &lt;p&gt;So, in our app, there is one &amp;amp; only XAML page that does the above rendering, that being &lt;em&gt;MainPage.xaml&lt;/em&gt;. Here&amp;rsquo;s the XAML that drives the UI:&lt;/p&gt;    &lt;div id="codeSnippetWrapper" style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;"&gt;    &lt;div id="codeSnippet" style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;"&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt; 1:&lt;/span&gt; &amp;lt;UserControl x:Class=&lt;span style="color: #006080;"&gt;"TeamMetro.MainPage"&lt;/span&gt;&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt; 2:&lt;/span&gt;  xmlns=&lt;span style="color: #006080;"&gt;"http://schemas.microsoft.com/winfx/2006/xaml/presentation"&lt;/span&gt;&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt; 3:&lt;/span&gt;  xmlns:x=&lt;span style="color: #006080;"&gt;"http://schemas.microsoft.com/winfx/2006/xaml"&lt;/span&gt;&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt; 4:&lt;/span&gt;  xmlns:d=&lt;span style="color: #006080;"&gt;"http://schemas.microsoft.com/expression/blend/2008"&lt;/span&gt;&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt; 5:&lt;/span&gt;  xmlns:mc=&lt;span style="color: #006080;"&gt;"http://schemas.openxmlformats.org/markup-compatibility/2006"&lt;/span&gt;&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt; 6:&lt;/span&gt;  mc:Ignorable=&lt;span style="color: #006080;"&gt;"d"&lt;/span&gt;&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt; 7:&lt;/span&gt;  d:DesignHeight=&lt;span style="color: #006080;"&gt;"768"&lt;/span&gt; d:DesignWidth=&lt;span style="color: #006080;"&gt;"1366"&lt;/span&gt;&amp;gt;&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt; 8:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt; 9:&lt;/span&gt;  &amp;lt;!--Content--&amp;gt;&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt; 10:&lt;/span&gt;  &amp;lt;Grid x:Name=&lt;span style="color: #006080;"&gt;"LayoutRoot"&lt;/span&gt; Background=&lt;span style="color: #006080;"&gt;"Chocolate"&lt;/span&gt;&amp;gt;&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt; 11:&lt;/span&gt;      &lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt; 12:&lt;/span&gt;      &amp;lt;StackPanel Background=&lt;span style="color: #006080;"&gt;"Transparent"&lt;/span&gt; VerticalAlignment=&lt;span style="color: #006080;"&gt;"Center"&lt;/span&gt; x:Name=&lt;span style="color: #006080;"&gt;"fullMode"&lt;/span&gt;&amp;gt;&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt; 13:&lt;/span&gt;      &amp;lt;ListBox Name=&lt;span style="color: #006080;"&gt;"fullTeamList"&lt;/span&gt; Margin=&lt;span style="color: #006080;"&gt;"40"&lt;/span&gt; ItemsSource=&lt;span style="color: #006080;"&gt;"{Binding WCFTeam}"&lt;/span&gt; Foreground=&lt;span style="color: #006080;"&gt;"Blue"&lt;/span&gt; Background=&lt;span style="color: #006080;"&gt;"Transparent"&lt;/span&gt;&amp;gt;&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum14" style="color: #606060;"&gt; 14:&lt;/span&gt;          &amp;lt;ListBox.ItemTemplate&amp;gt;&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum15" style="color: #606060;"&gt; 15:&lt;/span&gt;              &amp;lt;DataTemplate&amp;gt;&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum16" style="color: #606060;"&gt; 16:&lt;/span&gt;                  &amp;lt;StackPanel Margin=&lt;span style="color: #006080;"&gt;"400,0,0,40"&lt;/span&gt; VerticalAlignment=&lt;span style="color: #006080;"&gt;"Center"&lt;/span&gt; Orientation=&lt;span style="color: #006080;"&gt;"Horizontal"&lt;/span&gt;&amp;gt;&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum17" style="color: #606060;"&gt; 17:&lt;/span&gt;                      &amp;lt;Image Source=&lt;span style="color: #006080;"&gt;"ninja.png"&lt;/span&gt; Height=&lt;span style="color: #006080;"&gt;"75"&lt;/span&gt; Width=&lt;span style="color: #006080;"&gt;"75"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum18" style="color: #606060;"&gt; 18:&lt;/span&gt;                      &amp;lt;TextBlock Text=&lt;span style="color: #006080;"&gt;"{Binding Name}"&lt;/span&gt; Margin=&lt;span style="color: #006080;"&gt;"10,0,0,0"&lt;/span&gt; FontSize=&lt;span style="color: #006080;"&gt;"26"&lt;/span&gt; VerticalAlignment=&lt;span style="color: #006080;"&gt;"Center"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum19" style="color: #606060;"&gt; 19:&lt;/span&gt;                      &amp;lt;TextBlock Text=&lt;span style="color: #006080;"&gt;" -- aka "&lt;/span&gt; FontSize=&lt;span style="color: #006080;"&gt;"22"&lt;/span&gt; VerticalAlignment=&lt;span style="color: #006080;"&gt;"Center"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum20" style="color: #606060;"&gt; 20:&lt;/span&gt;                      &amp;lt;TextBlock Text=&lt;span style="color: #006080;"&gt;"{Binding TwitterHandle}"&lt;/span&gt; Margin=&lt;span style="color: #006080;"&gt;"10,0,0,0"&lt;/span&gt; FontSize=&lt;span style="color: #006080;"&gt;"22"&lt;/span&gt; VerticalAlignment=&lt;span style="color: #006080;"&gt;"Center"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum21" style="color: #606060;"&gt; 21:&lt;/span&gt;                  &amp;lt;/StackPanel&amp;gt;&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum22" style="color: #606060;"&gt; 22:&lt;/span&gt;              &amp;lt;/DataTemplate&amp;gt;&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum23" style="color: #606060;"&gt; 23:&lt;/span&gt;          &amp;lt;/ListBox.ItemTemplate&amp;gt;&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum24" style="color: #606060;"&gt; 24:&lt;/span&gt;      &amp;lt;/ListBox&amp;gt;&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum25" style="color: #606060;"&gt; 25:&lt;/span&gt;      &amp;lt;/StackPanel&amp;gt;&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum26" style="color: #606060;"&gt; 26:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum27" style="color: #606060;"&gt; 27:&lt;/span&gt;  &amp;lt;/Grid&amp;gt;   &lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum28" style="color: #606060;"&gt; 28:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum29" style="color: #606060;"&gt; 29:&lt;/span&gt; &amp;lt;/UserControl&amp;gt;&lt;/pre&gt;    &lt;!--CRLF--&gt;&lt;/div&gt;    &lt;/div&gt;    &lt;p&gt;So, we essentially defined a ListBox &amp;amp; we are expecting it to be bound to some collection of Team members with appropriate property values. Did you notice that except for a few namespaces, the XAML markup is very similar to what we are used to seeing in Windows Phone &amp;amp; Silverlight applications? This is what should make you feel right at home .. there are off course, some Windows 8 specific UI controls, which can cover in a subsequent blog post. &lt;/p&gt;    &lt;p&gt;Another point to note is that the XAML markup for Windows 8 Metro apps can be borrowed to a large extent if you have existing Windows Phone or Silverlight applications. In fact, if you have a a Windows Phone app in the Marketplace and simply want to port to over to the Windows 8 App Store, there are a fixed set of guidelines to do so, as explained &lt;a href="http://msdn.microsoft.com/en-us/library/windows/apps/hh465136(v=VS.85).aspx" target="_blank"&gt;here&lt;/a&gt;. However, we might need to be wary of a plain port-over &amp;amp; the UX of our Metro apps, since the Windows 8 tablet form factor will have substantially more real estate, which should absolutely be utilized. In our demo app, you see a simple list of data items consuming OData; while ok for a demo (see I excuse myself &lt;img class="wlEmoticon wlEmoticon-smile" style="border-style: none;" alt="Smile" src="http://www.silverlightshow.net/Storage/Users/samidip/_wlEmoticon-smile_2.png" /&gt;), you ideally want to provide your users with a richer experience.&lt;/p&gt;    &lt;h2&gt;Fetching the Data&lt;/h2&gt;    &lt;p&gt;Now, this will be very interesting. One of the buzz terms with Windows Phone/Silverlight and now heavily so with Windows 8 is &amp;ldquo;&lt;em&gt;fast &amp;amp; fluid&lt;/em&gt;&amp;rdquo; &amp;ndash; which essentially means that your App may be doing some expensive operation; but to the end user interacting through Touch, it should always seem responsive. Asynchronous Programming is certainly not new &amp;amp; Windows Phone development very much enforces that; however, it may be a little painful at times, specially if you are marshaling data between threads or writing callback after callback.&lt;/p&gt;    &lt;p&gt;Win RT enforces that any operation that might take more than 50 ms be done asynchronously, and this off course, extends to every web request our app might make. So, we are looking to fetch the OData feed asynchronously without blocking the UI thread.&lt;/p&gt;    &lt;p&gt;Now, C# 5.0 running on .NET 4.5 framework tries to make it easy for us developers to do asynchronous programming through &lt;em&gt;&lt;strong&gt;Async-Await&lt;/strong&gt;&lt;/em&gt; patterns, so that we can get around not writing callback after callback&amp;nbsp; or have to deal with thread marshaling. This however is a wider topic than this post &amp;ndash; so please allow me to point you to some resources that should help understand this better:&lt;/p&gt;    &lt;ul&gt;        &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/hh191443(v=VS.110).aspx"&gt;http://msdn.microsoft.com/en-us/library/hh191443(v=VS.110).aspx&lt;/a&gt; &lt;/li&gt;        &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/vstudio/async.aspx"&gt;http://msdn.microsoft.com/en-us/vstudio/async.aspx&lt;/a&gt; &lt;/li&gt;        &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/hh456402.aspx"&gt;http://msdn.microsoft.com/en-us/magazine/hh456402.aspx&lt;/a&gt; &lt;/li&gt;    &lt;/ul&gt;    &lt;p&gt;I was intrigued about Asynchrony and wrote a lengthy post; if interested, you&amp;rsquo;ll find it &lt;a href="http://samidipbasu.com/2011/10/10/asynchrony-for-the-wpsilverlight-developer/" target="_blank"&gt;HERE&lt;/a&gt;. So, let&amp;rsquo;s look at a few ways we can fetch data:&lt;/p&gt;    &lt;h5&gt;The Pure HTTP Way&lt;/h5&gt;    &lt;p&gt;In this approach, we make a basic HTTP Get call to our OData service endpoint &amp;amp; fetch data as Atom. This is simple, but we would have to manually parse the response to pluck out the data contents for binding to UI. Here&amp;rsquo;s some sample code .. watch the use of async-await to achieve asynchrony:&lt;/p&gt;    &lt;div id="codeSnippetWrapper" style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;"&gt;    &lt;div id="codeSnippet" style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;"&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt; 1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; async &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; LoadTeamThruXML()&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt; 2:&lt;/span&gt; {&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt; 3:&lt;/span&gt;     &lt;span style="color: #008000;"&gt;// Get Atom over HTTP.&lt;/span&gt;&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt; 4:&lt;/span&gt;     var client = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; HttpClient();&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt; 5:&lt;/span&gt;     Uri teamDataURI = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Uri(&lt;span style="color: #006080;"&gt;"Your_OData_Endpoint"&lt;/span&gt;);&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt; 6:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt; 7:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;try&lt;/span&gt;&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt; 8:&lt;/span&gt;     {&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt; 9:&lt;/span&gt;         HttpResponseMessage response = await client.GetAsync(teamDataURI);&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt; 10:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt; 11:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; xmlResponse = response.Content.ReadAsString();&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt; 12:&lt;/span&gt;         XDocument xDoc = XDocument.Parse(xmlResponse);&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt; 13:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum14" style="color: #606060;"&gt; 14:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;// Do appropriate parsing.&lt;/span&gt;&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum15" style="color: #606060;"&gt; 15:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;// LINQ to XML.&lt;/span&gt;&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum16" style="color: #606060;"&gt; 16:&lt;/span&gt;         IEnumerable&amp;lt;Team&amp;gt; teamCollection = from teamMember &lt;span style="color: #0000ff;"&gt;in&lt;/span&gt; xDoc.Descendants(&lt;span style="color: #006080;"&gt;"Entry"&lt;/span&gt;)&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum17" style="color: #606060;"&gt; 17:&lt;/span&gt;                                            select &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Team&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum18" style="color: #606060;"&gt; 18:&lt;/span&gt;                                            {&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum19" style="color: #606060;"&gt; 19:&lt;/span&gt;                                                Name = teamMember.Element(&lt;span style="color: #006080;"&gt;"Name"&lt;/span&gt;).ToString(),&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum20" style="color: #606060;"&gt; 20:&lt;/span&gt;                                                TwitterHandle = teamMember.Element(&lt;span style="color: #006080;"&gt;"TwitterHandle"&lt;/span&gt;).ToString()&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum21" style="color: #606060;"&gt; 21:&lt;/span&gt;                                            };&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum22" style="color: #606060;"&gt; 22:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum23" style="color: #606060;"&gt; 23:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;// Bind to UI.&lt;/span&gt;&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum24" style="color: #606060;"&gt; 24:&lt;/span&gt;     }&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum25" style="color: #606060;"&gt; 25:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;catch&lt;/span&gt; (Exception ex)&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum26" style="color: #606060;"&gt; 26:&lt;/span&gt;     {&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum27" style="color: #606060;"&gt; 27:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;// Oopsie&lt;/span&gt;&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum28" style="color: #606060;"&gt; 28:&lt;/span&gt;     }&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum29" style="color: #606060;"&gt; 29:&lt;/span&gt; }&lt;/pre&gt;    &lt;!--CRLF--&gt;&lt;/div&gt;    &lt;/div&gt;    &lt;h5&gt;The Threaded Way&lt;/h5&gt;    &lt;p&gt;One important aspect about Asynchrony is that it does not always mean multi-threading, as in parallelism. All the goodness of the &lt;em&gt;Task Parallel Library&lt;/em&gt; is now built in and as we await on a &lt;em&gt;Task&lt;/em&gt;, the underlying implementation may or may not spin up a new thread based on computing cycles needed. The point is, you should not have to care as a developer. However, if using &lt;em&gt;Task.Factory&lt;/em&gt;, you are essentially carrying out synchronous operations on a worker thread without blocking the UI. So, here&amp;rsquo;s another way to fetch data .. notice how we can return a strongly-typed collection of &lt;em&gt;Team&lt;/em&gt; members:&lt;/p&gt;    &lt;div id="codeSnippetWrapper" style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;"&gt;    &lt;div id="codeSnippet" style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;"&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt; 1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; async &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; LoadTeamThruOData()&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt; 2:&lt;/span&gt; {&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt; 3:&lt;/span&gt;     var client = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Demo(&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Uri(&lt;span style="color: #006080;"&gt;"Your_OData_Endpoint"&lt;/span&gt;));&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt; 4:&lt;/span&gt;     &lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt; 5:&lt;/span&gt;     var results = await Task&amp;lt;IEnumerable&amp;lt;Team&amp;gt;&amp;gt;.Factory.StartNew(() =&amp;gt; FetchOData());&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt; 6:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt; 7:&lt;/span&gt;     &lt;span style="color: #008000;"&gt;// This fires only after we have a response back. &lt;/span&gt;&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt; 8:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.ParseAndBindData(results);&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt; 9:&lt;/span&gt; }&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt; 10:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt; 11:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; IEnumerable&amp;lt;Team&amp;gt; FetchOData()&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt; 12:&lt;/span&gt; {&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt; 13:&lt;/span&gt;     Demo client = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Demo(&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Uri(&lt;span style="color: #006080;"&gt;"Your_OData_Endpoint"&lt;/span&gt;));&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum14" style="color: #606060;"&gt; 14:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; client.Teams.Execute();&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum15" style="color: #606060;"&gt; 15:&lt;/span&gt; }&lt;/pre&gt;    &lt;!--CRLF--&gt;&lt;/div&gt;    &lt;/div&gt;    &lt;h5&gt;Wrapped APM Way&lt;/h5&gt;    &lt;p&gt;Asynchronous Programming Model (&lt;em&gt;APM&lt;/em&gt;) is the traditional way of doing asynchrony through &lt;em&gt;BeginXX/EndXX&lt;/em&gt; patterns; but this lead us to write a lot of callbacks. In the new world, APM calls can be wrapped inside an Async-Await pattern to make asynchronous requests. Let&amp;rsquo;s look at some code:&lt;/p&gt;    &lt;div id="codeSnippetWrapper" style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;"&gt;    &lt;div id="codeSnippet" style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;"&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt; 1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; async &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; LoadTeamThruOData()&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt; 2:&lt;/span&gt; {&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt; 3:&lt;/span&gt;     var client = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Demo(&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Uri(&lt;span style="color: #006080;"&gt;"Your_OData_Endpoint"&lt;/span&gt;));&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt; 4:&lt;/span&gt;    &lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt; 5:&lt;/span&gt;     var results = await Task&amp;lt;IEnumerable&amp;lt;Team&amp;gt;&amp;gt;.Factory.FromAsync(client.Teams.BeginExecute(AnotherEndContinuation, client), ContinuationDelegate);&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt; 6:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt; 7:&lt;/span&gt;     &lt;span style="color: #008000;"&gt;// This fires only after we have a response back. &lt;/span&gt;&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt; 8:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.ParseAndBindData(results);&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt; 9:&lt;/span&gt; }&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt; 10:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt; 11:&lt;/span&gt; Func&amp;lt;IAsyncResult, IEnumerable&amp;lt;Team&amp;gt;&amp;gt; ContinuationDelegate = EndContinuation;&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt; 12:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; IEnumerable&amp;lt;Team&amp;gt; EndContinuation(IAsyncResult result)&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt; 13:&lt;/span&gt; {&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum14" style="color: #606060;"&gt; 14:&lt;/span&gt;     Demo client = (Demo)result.AsyncState;            &lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum15" style="color: #606060;"&gt; 15:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; client.Teams.EndExecute(result);&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum16" style="color: #606060;"&gt; 16:&lt;/span&gt; }&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum17" style="color: #606060;"&gt; 17:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum18" style="color: #606060;"&gt; 18:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; AnotherEndContinuation(IAsyncResult result)&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum19" style="color: #606060;"&gt; 19:&lt;/span&gt; {&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum20" style="color: #606060;"&gt; 20:&lt;/span&gt;    &lt;span style="color: #008000;"&gt;// Do nothing here.&lt;/span&gt;&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum21" style="color: #606060;"&gt; 21:&lt;/span&gt; }&lt;/pre&gt;    &lt;!--CRLF--&gt;&lt;/div&gt;    &lt;/div&gt;    &lt;p&gt;Now, the above code might look a little clunky, but the wrapping of the APM methods can be done through an Extension method to make reuse easier. Eventually with future updates, if we have a method &lt;em&gt;Foo&lt;/em&gt; in our custom WCF Service, proxy integration should generate three method endpoints &amp;ndash; &lt;em&gt;BeginFoo&lt;/em&gt;, &lt;em&gt;EndFoo&lt;/em&gt; &amp;amp; &lt;em&gt;FooAsync&lt;/em&gt;. It is the last that we shall use comfortably with Async-Await patterns. &lt;/p&gt;    &lt;h2&gt;&lt;/h2&gt;    &lt;h2&gt;&lt;/h2&gt;    &lt;h2&gt;Data Updates?&lt;/h2&gt;    &lt;p&gt;So, by now we know how to fetch OData into a Windows 8 Metro app using XAML/C# and bind the results to a simple list. But what if we wanted to perform updates against the data source? That is absolutely possible since we are dealing with an OData service here. Unless blocked at the service side, OData will support full CRUD operations through the &lt;em&gt;DataServiceContext&lt;/em&gt; &amp;amp; &lt;em&gt;DataServiceCollection&lt;/em&gt; classes.&lt;/p&gt;    &lt;p&gt;Now, let&amp;rsquo;s think about the UI for second. Just because we can put buttons &amp;amp; controls for data updates all over, doesn&amp;rsquo;t mean that we should. Common tasks should be presented in a minimalist fashion &amp;amp; accessible when needed. Accordingly, we revert to using the Windows 8 Metro Application Bar to add some metro buttons for allowing data manipulation. Let&amp;rsquo;s shoot for a UI like below .. we shall talk more about the Application Bar in the next article:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/samidip/TeamList%20%20with%20App%20Bar_2.png"&gt;&lt;img width="644" height="364" title="TeamList  with App Bar" style="border:0px solid; background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" alt="TeamList  with App Bar" src="http://www.silverlightshow.net/Storage/Users/samidip/TeamList%20%20with%20App%20Bar_thumb.png" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;So, what happens when the user hits the Application Bar buttons? Simple &amp;ndash; just like in Windows Phone, you can have event handlers assigned to each. Let&amp;rsquo;s see how we may delete a record &amp;amp; have it reflected in the OData data source, that is our Table data in SQL Azure. Here&amp;rsquo;s some code:&lt;/p&gt;    &lt;div id="codeSnippetWrapper" style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;"&gt;    &lt;div id="codeSnippet" style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;"&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt; 1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; DeleteButton_Click(&lt;span style="color: #0000ff;"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt; 2:&lt;/span&gt; {&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt; 3:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.fullTeamList.SelectedItem != &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt; 4:&lt;/span&gt;     {&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt; 5:&lt;/span&gt;         Team selectedTeamMember = (Team)&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.fullTeamList.SelectedItem;&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt; 6:&lt;/span&gt;                         &lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt; 7:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;// LINQ to Context.&lt;/span&gt;&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt; 8:&lt;/span&gt;         var client = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Demo(&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Uri(&lt;span style="color: #006080;"&gt;"Your_OData_Endpoint"&lt;/span&gt;));&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt; 9:&lt;/span&gt;         var teamMemberToDelete = (from TeamMember &lt;span style="color: #0000ff;"&gt;in&lt;/span&gt; client.Teams&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt; 10:&lt;/span&gt;                                   &lt;span style="color: #0000ff;"&gt;where&lt;/span&gt; TeamMember.Name == selectedTeamMember.Name&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt; 11:&lt;/span&gt;                                   select TeamMember).First();&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt; 12:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt; 13:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;// Delete backend entity.&lt;/span&gt;&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum14" style="color: #606060;"&gt; 14:&lt;/span&gt;         client.DeleteObject(teamMemberToDelete);&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum15" style="color: #606060;"&gt; 15:&lt;/span&gt;         client.BeginSaveChanges(&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; AsyncCallback(SaveDoneCB), client);               &lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum16" style="color: #606060;"&gt; 16:&lt;/span&gt;     }&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum17" style="color: #606060;"&gt; 17:&lt;/span&gt; }&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum18" style="color: #606060;"&gt; 18:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum19" style="color: #606060;"&gt; 19:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; SaveDoneCB(IAsyncResult asyncResult)&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum20" style="color: #606060;"&gt; 20:&lt;/span&gt; {&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum21" style="color: #606060;"&gt; 21:&lt;/span&gt;     &lt;span style="color: #008000;"&gt;// Any error handling.&lt;/span&gt;&lt;/pre&gt;    &lt;!--CRLF--&gt;    &lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum22" style="color: #606060;"&gt; 22:&lt;/span&gt; }&lt;/pre&gt;    &lt;!--CRLF--&gt;&lt;/div&gt;    &lt;/div&gt;    &lt;p&gt;What about adding/editing records? Exactly the same way. Off of our &amp;ldquo;&lt;em&gt;client&lt;/em&gt;&amp;rdquo; object above (which is in essence the &lt;em&gt;DataServiceContext&lt;/em&gt;), you&amp;rsquo;ll see methods like &lt;em&gt;AddObject&lt;/em&gt; &amp;amp; &lt;em&gt;UpdateObject&lt;/em&gt; to insert/manipulate table records and then you simply need to call &lt;em&gt;SaveChanges&lt;/em&gt; asynchronously to update the backend DB. You&amp;rsquo;ll see some sample code in the downloadable solution; but why not give it a shot yourself? You can get a lot of hints about how to perform CRUD operations against OData from a Windows Phone application from mine &amp;amp; Michael Crump&amp;rsquo;s articles &lt;a href="http://www.silverlightshow.net/items/Connecting-Azure-Windows-Phone-through-OData.aspx" target="_blank"&gt;HERE&lt;/a&gt; &amp;amp; &lt;a href="http://www.silverlightshow.net/items/Producing-and-Consuming-OData-in-a-Silverlight-and-Windows-Phone-7-application-Part-4.aspx" target="_blank"&gt;HERE&lt;/a&gt;. So, go ahead &amp;amp; throw in a fresh XAML page to capture inserts/edits &amp;amp; fire away &lt;img class="wlEmoticon wlEmoticon-smile" style="border-style: none;" alt="Smile" src="http://www.silverlightshow.net/Storage/Users/samidip/_wlEmoticon-smile_2.png" /&gt;.&lt;/p&gt;    &lt;h2&gt;Summary&lt;/h2&gt;    &lt;p&gt;In this article, we talked about how to get started with Windows 8 Metro Apps with XAML/C# and we went on to consumption/updates of OData from a Windows 8 Metro application. We looked at a few techniques on how to do asynchronous programming in Windows 8 using the new C# 5.0 constructs of Async-Await. In the next part of article, we shall talk about taking the first steps towards making your Metro Apps feel at home in the Windows 8 Operating System.&lt;/p&gt;    &lt;p&gt;I would appreciate any comments or concerns or how things could be done better. Thanks for reading &amp;amp; happy coding.&lt;/p&gt;    &lt;p&gt;Cheers &lt;em&gt;SilverlightShow&lt;/em&gt;!&lt;/p&gt;    &lt;h2&gt;&lt;/h2&gt;    &lt;h2&gt;&lt;/h2&gt;    &lt;h2&gt;About the Author&lt;/h2&gt;    &lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/samidip/_ActualPic.jpg"&gt;&lt;img width="104" height="126" title="ActualPic" style="border:0px solid; background-image: none; margin-top: 0px; margin-right: 15px; margin-bottom: 0px; margin-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; padding-top: 0px;" alt="ActualPic" src="http://www.silverlightshow.net/Storage/Users/samidip/_ActualPic_thumb.jpg" /&gt;&lt;/a&gt;Samidip Basu (&lt;a href="http://twitter.com/#!/samidip"&gt;@samidip&lt;/a&gt;) is a technologist &amp;amp; gadget-lover working as a Manager &amp;amp; Solutions Lead for Sogeti out of the Columbus Unit. Having worked on WP7 since CTP days, he now spends much of his time in spreading the word to discover the full potential of the Windows Phone platform &amp;amp; cloud-based mobile solutions in general. He passionately runs the Central Ohio Windows Phone User Group (&lt;a href="http://cowpug.org/"&gt;http://cowpug.org/&lt;/a&gt;), labors in M3 Conf (&lt;a href="http://m3conf.com/"&gt;http://m3conf.com/&lt;/a&gt;/) organization and can be found with at-least a couple of hobbyist projects at any time. His spare times call for travel and culinary adventures with the wife. Find out more at &lt;a href="http://samidipbasu.com/"&gt;http://samidipbasu.com/&lt;/a&gt;&lt;a href="http://samidipbasu.com/"&gt;.&lt;/a&gt;&lt;/p&gt;</description>      <link>http://www.silverlightshow.net/items/Windows-8-XAML-Metro-Apps-with-OData.aspx</link>      <author>editorial@silverlightshow.net (Samidip Basu )</author>      <comments>http://www.silverlightshow.net/items/Windows-8-XAML-Metro-Apps-with-OData.aspx#comments</comments>      <guid isPermaLink="true">http://www.silverlightshow.net/items/Windows-8-XAML-Metro-Apps-with-OData.aspx</guid>      <pubDate>Wed, 07 Dec 2011 09:59:00 GMT</pubDate>    </item>    <item>      <title>Windows Store details announced and a contest</title>      <category>PDC</category>      <category>community</category>      <category>devdays</category>      <category>developer</category>      <category>expression</category>      <category>mix</category>      <category>ria</category>      <category>silverlight</category>      <category>ux</category>      <category>tech stuff</category>      <category>windows</category>      <category>windows live</category>      <link>http://feeds.timheuer.com/~r/timheuer/~3/tgMitEjvfhw/windows-store-details-and-contest.aspx</link>      <description>&lt;p&gt;&lt;img style="display: inline; float: left" align="left" src="http://storage2.timheuer.com/winstore.png" width="195" height="194" /&gt;Today there was an event in San Francisco which introduced the Windows Store for Windows apps as well as some details on revenue sharing and policies.  As a part of that &lt;strong&gt;Antoine LeBland&lt;/strong&gt;, Vice President for Windows Web Services, also opened up a new dialog about the store specifically in a new blog &lt;strong&gt;&lt;a href="http://blogs.msdn.com/b/windowsstore/archive/2011/12/06/announcing-the-new-windows-store.aspx?utm_source=timheuer"&gt;Windows Store for developers&lt;/a&gt;&lt;/strong&gt;.  This blog will help developers learn about aspects of the store as well as serve as a place for dialog between the store teams and you, the app developer.  I think it is great that the store team is following in the footsteps of the &lt;a href="http://blogs.msdn.com/b/b8"&gt;Building Windows 8 blog&lt;/a&gt; and reaching out to share some of the high-level and, hopefully, behind-the-scenes aspect that makes up the store.  I look forward to future posts on the blog.&lt;/p&gt;  &lt;p&gt;The inaugural post reviews the events that transpired today sharing some information for those who were not there, as well a a video clip of some of the highlights from Antoine and Ted:&lt;/p&gt;  &lt;p align="center"&gt;&lt;iframe style="width: 512px; height: 288px" src="http://channel9.msdn.com/posts/Previewing-The-Windows-Store/player?w=512&amp;amp;h=288&amp;amp;html5=true " frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt;  &lt;p&gt;The key store highlights discussed in the post are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Designed for discovery – store will be searchable and permalink-able (is that a word?) &lt;/li&gt;    &lt;li&gt;Flexible business models – including in-app trial upgrades, etc. as well as flexible payment options &lt;/li&gt;    &lt;li&gt;Transparent terms – clear understanding of the terms as a developer/business &lt;/li&gt;    &lt;li&gt;Best economics – you’ll have to read the post about the revenue split and advantages after certain milestones &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;In addition to this news, Microsoft announced a &lt;strong&gt;&lt;a href="https://buildwindowscontest.com/?utm_source=timheuer"&gt;First Apps Contest&lt;/a&gt;&lt;/strong&gt;.  The basics of this contest are that you have the opportunity to show your awesomeness to the world first.  The contest will select &lt;strong&gt;eight (8)&lt;/strong&gt; winning apps to be the very first app in the Windows Store when it opens.  You’ll also get some goodies as a winner such as a &lt;strong&gt;Samsung Windows Developer PC&lt;/strong&gt; and 2-years worth of subscription to the store as a developer.&lt;/p&gt;  &lt;p&gt;The contest starts now, so be sure to read the rules and register and learn about what is required of you.  This is a great opportunity to be a first-mover in the Windows Store which will have some incredible reach opportunities for you as a developer.&lt;/p&gt;  &lt;p&gt;I can’t wait to see the types and compelling experiences that developers will create with our platform…get started! &lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:bb20fb88-8780-42c9-898d-7923785e1b5b" class="wlWriterEditableSmartContent"&gt;&lt;span class="tags"&gt;tags: &lt;a href="http://timheuer.com/blog/tags/win8/default.aspx" rel="tag"&gt;win8&lt;/a&gt;, &lt;a href="http://timheuer.com/blog/tags/windows+8/default.aspx" rel="tag"&gt;windows 8&lt;/a&gt;, &lt;a href="http://timheuer.com/blog/tags/windows/default.aspx" rel="tag"&gt;windows&lt;/a&gt;, &lt;a href="http://timheuer.com/blog/tags/windows+store/default.aspx" rel="tag"&gt;windows store&lt;/a&gt;, &lt;a href="http://timheuer.com/blog/tags/first+apps/default.aspx" rel="tag"&gt;first apps&lt;/a&gt;, &lt;a href="http://timheuer.com/blog/tags/xaml/default.aspx" rel="tag"&gt;xaml&lt;/a&gt;, &lt;a href="http://timheuer.com/blog/tags/metro/default.aspx" rel="tag"&gt;metro&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="wlWriterHeaderFooter" style="margin:0px; padding:0px 0px 0px 0px;"&gt;&lt;hr /&gt;&lt;div class="cc-license"&gt;This work is licensed under a &lt;a href="http://creativecommons.org/licenses/by/3.0/"&gt;Creative Commons Attribution By license.&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://timheuer.com/blog/aggbug/14816.aspx" width="1" height="1" /&gt;&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/4uBP6ra7SSkMxWbn1pwUEIIi2k4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4uBP6ra7SSkMxWbn1pwUEIIi2k4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/4uBP6ra7SSkMxWbn1pwUEIIi2k4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4uBP6ra7SSkMxWbn1pwUEIIi2k4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/timheuer/~4/tgMitEjvfhw" height="1" width="1"/&gt;</description>      <creator xmlns="http://purl.org/dc/elements/1.1/">Tim Heuer</creator>      <guid isPermaLink="false">http://timheuer.com/blog/archive/2011/12/06/windows-store-details-and-contest.aspx</guid>      <pubDate>Wed, 07 Dec 2011 04:34:40 GMT</pubDate>      <comments>http://timheuer.com/blog/archive/2011/12/06/windows-store-details-and-contest.aspx#feedback</comments>      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">1</comments>      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://timheuer.com/blog/comments/commentRss/14816.aspx</commentRss>      <ping xmlns="http://madskills.com/public/xml/rss/module/trackback/">http://timheuer.com/blog/services/trackbacks/14816.aspx</ping>      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://timheuer.com/blog/archive/2011/12/06/windows-store-details-and-contest.aspx</origLink>    </item>    <item>      <title>10 Laps around Silverlight 5 (Part 9 of 10)</title>      <description>&lt;div style="border:1px solid #dddddd;padding-bottom: 5px; background-color: #f3f3f3; margin-top: 5px; padding-left: 10px; padding-top: 5px;"&gt;This article is sponsored by &lt;a href="http://ads.silverlightshow.net/a.aspx?ZoneID=53&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=95076" target="_blank"&gt;&lt;img alt="" width="0" height="0" style="border:0px solid;" src="http://ads.silverlightshow.net/a.aspx?ZoneID=53&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=95076" /&gt;Telerik RadControls for Silverlight&lt;/a&gt;. Related content from the sponsor:&lt;p&gt;&lt;strong&gt;Check out what's new!&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;    &lt;li&gt;&lt;span style="font-size: 14px;"&gt;&lt;a href="http://ads.silverlightshow.net/a.aspx?ZoneID=52&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=80309" target="_blank"&gt;    &lt;img alt="" src="http://ads.silverlightshow.net/a.aspx?ZoneID=52&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=80309" width="0" height="0" style="border-width: 0px;border-style: solid;" /&gt;The latest Q3 2011 release is out! Introducing ChartView &amp;amp; next-generation CRM demo with full source code.&lt;/a&gt;&lt;/span&gt; &lt;/li&gt;    &lt;li&gt;&lt;span style="font-size: 14px;"&gt;&lt;a href="http://ads.silverlightshow.net/a.aspx?ZoneID=51&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=78027" target="_blank"&gt;    &lt;img alt="" src="http://ads.silverlightshow.net/a.aspx?ZoneID=51&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=78027" width="0" height="0" style="border-width: 0px;border-style: solid;" /&gt;Introducing Telerik Patterns &amp;amp; Practices for Silverlight and WPF.&lt;/a&gt;&lt;/span&gt; &lt;/li&gt;    &lt;li&gt;&lt;span style="font-size: 14px;"&gt;&lt;a href="http://ads.silverlightshow.net/a.aspx?ZoneID=54&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=39336" target="_blank"&gt;    &lt;img alt="" src="http://ads.silverlightshow.net/a.aspx?ZoneID=54&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=39336" width="0" height="0" style="border-width: 0px;border-style: solid;" /&gt;The RadControls for Silverlight has been redesigned.  Explore it!&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;table width="20"&gt;    &lt;tbody&gt;        &lt;tr&gt;            &lt;td&gt;            &lt;div class="fb-like" data-show-faces="true" data-send="false" data-href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-9-of-10.aspx" data-font="segoe ui" data-layout="button_count"&gt;&lt;/div&gt;            &lt;/td&gt;            &lt;td&gt;&lt;a href="https://twitter.com/share" class="twitter-share-button" data-via="silverlightshow" data-counturl="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-9-of-10.aspx" data-count="horizontal" data-text="Reading SilverlightShow article '10 Laps around Silverlight 5 (Part 9 of 10)' by @mbcrump #sl5" data-url="http://slshow.net/uprKjj"&gt;Tweet&lt;/a&gt;&lt;/td&gt;            &lt;td&gt;&lt;g:plusone size="medium" href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-9-of-10.aspx"&gt;&lt;/g:plusone&gt;            &lt;/td&gt;            &lt;td&gt;            &lt;/td&gt;        &lt;/tr&gt;    &lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;   &lt;br /&gt;To contact me directly please visit my blog at &lt;a href="http://michaelcrump.net/"&gt;http://michaelcrump.net/&lt;/a&gt; or through twitter at &lt;a href="http://twitter.com/mbcrump"&gt;http://twitter.com/mbcrump&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;This article is Part 9 of the series &amp;ldquo;10 Laps around Silverlight 5.&amp;rdquo; If you have missed any other section then please see the Roadmap below. &lt;/p&gt;&lt;div style="border:1px solid #dddddd;padding-bottom: 5px; background-color: #f3f3f3; margin-top: 5px; padding-left: 10px; width: 200px; float: right; margin-left: 10px; padding-top: 5px;"&gt;&lt;h3&gt;More resources...&lt;/h3&gt;&lt;ul style="list-style-type: circle; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-left: 20px; font-size: 12px;"&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/news/Free-Silverlight-Show-Webinar-Introduction-to-XAML-Development-on-Windows-8.aspx"&gt;Upcoming Webinar on Nov 29th: XAML Development on Windows 8&lt;/a&gt; &lt;/li&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/GetStarted.aspx"&gt;Get Started with Silverlight 4&lt;/a&gt; &lt;/li&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/ebooks/silverlight_exam.aspx"&gt;'Getting Ready for Microsoft Silverlight Exam 70-506' Ebook &lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style="padding-bottom: 5px; text-align: center;"&gt;&lt;a href="http://www.silverlightshow.net/ebooks/silverlight_exam.aspx"&gt;&lt;img style="border:0px solid;" alt="Getting Ready for Microsoft Silverlight Exam 70-506: Ebook" src="http://www.silverlightshow.net/Storage/sl_exam_thumb_small.png" usemap="#rade_img_map_1291385581316" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="font-size: 12px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.silverlightshow.net/ebooks.aspx"&gt;All SilverlightShow Ebooks&lt;/a&gt;&amp;nbsp;&lt;img alt="" src="http://www.silverlightshow.net/Storage/arrow-content.jpg" /&gt;&lt;/p&gt;&lt;/div&gt;To refresh your memory on what Silverlight is:&lt;p&gt;Microsoft Silverlight is an application framework for writing Rich Internet Applications. &lt;/p&gt;The run-time environment is available as a plug-in for most web browsers and works on a variety of operating systems including Windows, Mac and Linux.&lt;p&gt;To recap what we learned in the previous section:&lt;/p&gt;&lt;ul&gt;    &lt;li&gt;We learned how you could specify a break point inside of a Binding Expressions in Silverlight 5. We also learned how you could use this same functionality inside of Silverlight 4 with the Silverlight 5 SDK installed. &lt;/li&gt;    &lt;li&gt;We then created a sample application that contained a binding error and took a look at the output window to investigate it further.&amp;nbsp; We were then able to determine the source of our error and correct it quickly. &lt;/li&gt;    &lt;li&gt;We finished up with listing several productivity and performance improvements in Silverlight 5 that you may not be aware of. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;In this article, I am going to discuss several new features/controls such as Double and Triple click support, PivotViewer and ComboBox Type-Ahead. Please review the Roadmap for the series before going any further.&lt;/p&gt;&lt;h3&gt;The Roadmap for this Series&lt;/h3&gt;&lt;p&gt;I&amp;rsquo;ve included the Roadmap for the series below as you may want to visit other sections as you learn Silverlight 5. I picked the following features as I thought that you may find them useful in your day-to-day work. If you want a specific topic covered then please leave it in the comments below.&lt;/p&gt;&lt;p&gt;1) &lt;strong&gt;&lt;a href="http://www.silverlightshow.net/items/Silverlight-5-Part-1-of-10.aspx"&gt;Introduction to SL5 &amp;ndash; This post which provides a brief history of Silverlight and relevant links.&lt;/a&gt;&lt;/strong&gt; &lt;/p&gt;&lt;p&gt;2) &lt;strong&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-2-of-10.aspx"&gt;Binding- Ancestor Relative Source Binding and Implicit Data Templates.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;3) &lt;strong&gt;&lt;/strong&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-3.aspx" target="_self"&gt;&lt;strong&gt;Graphics&lt;/strong&gt; &lt;strong&gt;&amp;ndash;XNA 3D API and Improved Graphics Stack&lt;/strong&gt;.&lt;/a&gt;&lt;/p&gt;&lt;p&gt;4) &lt;strong&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-4-of-10.aspx"&gt;Media - Low-Latency Sound using XNA and Remote Control and Media Command (Keys) Support.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;5) &lt;strong&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-5-of-10.aspx"&gt;Text - Text Tracking and Leading, Linked and Multi-column Text, OpenType Support, Pixel Snapped Text and TextOptions.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;6) &lt;strong&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-6-of-10.aspx"&gt;Operating System Integration - Part 1 - P/Invoke, Multiple Windows and Unrestricted File System Access in Full Trust.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;7) &lt;strong&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-7-of-10.aspx"&gt;Operating System Integration - Part 2 - Default Filename for SaveFileDialog, 64-bit browser support and Power Awareness.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;8) &lt;strong&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-8-of-10.aspx"&gt;Productivity and Performance - XAML Binding Debugging, Parser Performance Improvements and Multi-core JIT for improved start-up time.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;9) &lt;strong&gt;Controls&lt;/strong&gt; &lt;strong&gt;[This post] &lt;/strong&gt;- Double and Triple click support, PivotViewer and ComboBox Type-Ahead.&lt;/p&gt;&lt;p&gt;10) &lt;strong&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-10-of-10.aspx" target="_self"&gt;Other items - In-Browser HTML, PostScript and Tasks for TPL&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;&lt;h3&gt;&lt;/h3&gt;&lt;h3&gt;Double and Triple Click Support&lt;/h3&gt;&lt;p&gt;One of the new features in Silverlight 5 is the ability to use Double and Triple Click Support. This functionality will tell you how many times the user has clicked the mouse button. The property is called &lt;strong&gt;ClickCount&lt;/strong&gt; and resides in the &lt;strong&gt;MouseButtonEventArgs&lt;/strong&gt; class. Let&amp;rsquo;s take a look at how to use this new feature.&lt;/p&gt;&lt;p&gt;Fire up a new Silverlight 5 project and give it any name that you want. &lt;/p&gt;&lt;p&gt;Switch over to the MainPage.xaml.cs and add the following code:&lt;em&gt; (Note: You may not need the MainPage() Method section)&lt;/em&gt;&lt;/p&gt;&lt;div style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; MainPage()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;     InitializeComponent();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; textBlock1_MouseLeftButtonDown(&lt;span style="color: #0000ff;"&gt;object&lt;/span&gt; sender, MouseButtonEventArgs e)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt;     textBlock1.Text = e.ClickCount.ToString();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Switch back over to the MainPage.xaml and add in the following code replacing the current Grid:&lt;/p&gt;&lt;div style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Grid&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;x:Name&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="LayoutRoot"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Background&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="White"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt;       &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Border&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;BorderBrush&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="Black"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;BorderThickness&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="1"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Margin&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="52,49,68,74"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;CornerRadius&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="10"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;           &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;TextBlock&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Height&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="152"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;HorizontalAlignment&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="Center"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;x:Name&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="textBlock1"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Text&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="0"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;VerticalAlignment&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="Center"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Width&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="244"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;MouseLeftButtonDown&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="textBlock1_MouseLeftButtonDown"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Foreground&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="#FFFF2E2E"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;FontSize&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="96"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;TextAlignment&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="Center"&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;       &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;Border&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;Grid&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;If we go ahead and run the application then we will see the following application. &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/mbcrump/SNAGHTMLf7d6db1.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="SNAGHTMLf7d6db1" alt="SNAGHTMLf7d6db1" src="http://www.silverlightshow.net/Storage/Users/mbcrump/SNAGHTMLf7d6db1_thumb.png" width="304" height="268" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Go ahead and begin clicking inside of the border and you will see the number increase. If you wait a few seconds and click again then you will notice that it reset itself. You could easily add If..Then&amp;hellip; statements to determine what click count number they are on. This may be helpful for a 35 click Easter egg. :) &lt;/p&gt;&lt;h3&gt;PivotViewer&lt;/h3&gt;&lt;br /&gt;&lt;p&gt;Microsoft&amp;rsquo;s Silverlight Team defines it as the following: The Silverlight PivotViewer makes it easier to interact with massive amounts of data on the web in ways that are powerful, informative and valuable. I couldn&amp;rsquo;t agree more. Let&amp;rsquo;s begin today by creating a SL5 application that uses the PivotViewer control and displays a collection of movies. &lt;em&gt;(Classic example, eh?) &lt;/em&gt;&lt;/p&gt;&lt;p&gt;Please note that this sample barely scratches the surface of what you can do with the PivotViewer. I&amp;rsquo;ve included an official link by Microsoft at the bottom of this post for your reference. &lt;/p&gt;&lt;p&gt;Fire up a new Silverlight 5 project and give it the name &lt;strong&gt;PivotViewer&lt;/strong&gt;. &lt;/p&gt;&lt;p&gt;Switch over to the MainPage.xaml.cs and add the following code:&lt;/p&gt;&lt;div style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; System;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; System.Linq;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; System.Windows;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; System.Windows.Controls;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; System.Collections.ObjectModel;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;namespace&lt;/span&gt; PivotViewer&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;partial&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; MainPage : UserControl&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt;  11:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; ObservableCollection&amp;lt;Movie&amp;gt; Movies;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt;  12:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt;  13:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; MainPage()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum14" style="color: #606060;"&gt;  14:&lt;/span&gt;         {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum15" style="color: #606060;"&gt;  15:&lt;/span&gt;             InitializeComponent();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum16" style="color: #606060;"&gt;  16:&lt;/span&gt;             Movies = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; ObservableCollection&amp;lt;Movie&amp;gt;();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum17" style="color: #606060;"&gt;  17:&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;for&lt;/span&gt; (Int64 i = 0; i &amp;lt; 500; i++)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum18" style="color: #606060;"&gt;  18:&lt;/span&gt;             {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum19" style="color: #606060;"&gt;  19:&lt;/span&gt;                 Movies.Add(&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Movie() { Title = &lt;span style="color: #006080;"&gt;"Ice Age"&lt;/span&gt; + i.ToString(), CountryOfOrigin = &lt;span style="color: #006080;"&gt;"USA"&lt;/span&gt;, Description = &lt;span style="color: #006080;"&gt;"Set during the Ice Age."&lt;/span&gt;, Director = &lt;span style="color: #006080;"&gt;"Chris Wedge"&lt;/span&gt; + i.ToString(), Duration = 90, ReleaseDate = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; DateTime(2002, 09, 03) });&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum20" style="color: #606060;"&gt;  20:&lt;/span&gt;     &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum21" style="color: #606060;"&gt;  21:&lt;/span&gt;             }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum22" style="color: #606060;"&gt;  22:&lt;/span&gt;          }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum23" style="color: #606060;"&gt;  23:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum24" style="color: #606060;"&gt;  24:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; UserControl_Loaded(&lt;span style="color: #0000ff;"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum25" style="color: #606060;"&gt;  25:&lt;/span&gt;         {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum26" style="color: #606060;"&gt;  26:&lt;/span&gt;             MoviePivot.ItemsSource = Movies;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum27" style="color: #606060;"&gt;  27:&lt;/span&gt;         }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum28" style="color: #606060;"&gt;  28:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum29" style="color: #606060;"&gt;  29:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;We need to create a new class now named &lt;strong&gt;Movie&lt;/strong&gt;.&amp;nbsp; Inside of that class should look like the following:&lt;div style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; System;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;namespace&lt;/span&gt; PivotViewer&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; Movie&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; Title { get; set; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; Duration { get; set; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; DateTime ReleaseDate{ get; set; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; CountryOfOrigin { get; set; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt;  11:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; Description { get; set; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt;  12:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; Director { get; set; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt;  13:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum14" style="color: #606060;"&gt;  14:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Switch back over to the MainPage.xaml and add in the following code replacing everything:&lt;/p&gt;&lt;div style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;UserControl&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;x:Class&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="PivotViewer.MainPage"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt;     &lt;span style="color: #ff0000;"&gt;xmlns&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;     &lt;span style="color: #ff0000;"&gt;xmlns:x&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="http://schemas.microsoft.com/winfx/2006/xaml"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;     &lt;span style="color: #ff0000;"&gt;xmlns:d&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="http://schemas.microsoft.com/expression/blend/2008"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;     &lt;span style="color: #ff0000;"&gt;xmlns:mc&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="http://schemas.openxmlformats.org/markup-compatibility/2006"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;     &lt;span style="color: #ff0000;"&gt;xmlns:pivot&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="clr-namespace:System.Windows.Controls.Pivot;assembly=System.Windows.Controls.Pivot"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;     &lt;span style="color: #ff0000;"&gt;Loaded&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="UserControl_Loaded"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt;     &lt;span style="color: #ff0000;"&gt;mc:Ignorable&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="d"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt;     &lt;span style="color: #ff0000;"&gt;d:DesignHeight&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="300"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;d:DesignWidth&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="400"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt;  11:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Grid&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;x:Name&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="LayoutRoot"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Background&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="White"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt;  12:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;pivot:PivotViewer&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;x:Name&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="MoviePivot"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt;  13:&lt;/span&gt;                             &lt;span style="color: #ff0000;"&gt;AccentColor&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="LightGreen"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum14" style="color: #606060;"&gt;  14:&lt;/span&gt;                             &lt;span style="color: #ff0000;"&gt;Background&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="LightGray"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum15" style="color: #606060;"&gt;  15:&lt;/span&gt;                             &lt;span style="color: #ff0000;"&gt;ControlBackground&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="LightYellow"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum16" style="color: #606060;"&gt;  16:&lt;/span&gt;                             &lt;span style="color: #ff0000;"&gt;SecondaryBackground&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="AntiqueWhite"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum17" style="color: #606060;"&gt;  17:&lt;/span&gt;                             &lt;span style="color: #ff0000;"&gt;SecondaryForeground&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="Bisque"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum18" style="color: #606060;"&gt;  18:&lt;/span&gt;                             &lt;span style="color: #ff0000;"&gt;SecondaryItemValueBackgroundColor&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="Chocolate"&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum19" style="color: #606060;"&gt;  19:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum20" style="color: #606060;"&gt;  20:&lt;/span&gt;             &lt;span style="color: #008000;"&gt;&amp;lt;!--Setting PivotProperties--&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum21" style="color: #606060;"&gt;  21:&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;pivot:PivotViewer.PivotProperties&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum22" style="color: #606060;"&gt;  22:&lt;/span&gt;                 &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;pivot:PivotViewerStringProperty&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Id&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="FTitle"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Options&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="CanFilter"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;DisplayName&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="Title"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Binding&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="{Binding Title}"&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum23" style="color: #606060;"&gt;  23:&lt;/span&gt;                 &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;pivot:PivotViewerStringProperty&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Id&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="FDuration"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Options&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="CanFilter"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;DisplayName&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="Duration"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Binding&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="{Binding Duration}"&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum24" style="color: #606060;"&gt;  24:&lt;/span&gt;                 &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;pivot:PivotViewerStringProperty&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Id&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="FDirector"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Options&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="CanFilter"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;DisplayName&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="Director"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Binding&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="{Binding Director}"&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum25" style="color: #606060;"&gt;  25:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum26" style="color: #606060;"&gt;  26:&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;pivot:PivotViewer.PivotProperties&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum27" style="color: #606060;"&gt;  27:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum28" style="color: #606060;"&gt;  28:&lt;/span&gt;             &lt;span style="color: #008000;"&gt;&amp;lt;!--Setting data--&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum29" style="color: #606060;"&gt;  29:&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;pivot:PivotViewer.ItemTemplates&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum30" style="color: #606060;"&gt;  30:&lt;/span&gt;                 &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;pivot:PivotViewerItemTemplate&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum31" style="color: #606060;"&gt;  31:&lt;/span&gt;                     &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Border&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Width&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="200"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Height&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="200"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Background&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="CadetBlue"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum32" style="color: #606060;"&gt;  32:&lt;/span&gt;                         &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;StackPanel&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Orientation&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="Vertical"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum33" style="color: #606060;"&gt;  33:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum34" style="color: #606060;"&gt;  34:&lt;/span&gt;                             &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;StackPanel&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Orientation&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="Horizontal"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum35" style="color: #606060;"&gt;  35:&lt;/span&gt;                                 &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;TextBlock&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Text&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="{Binding Title}"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;FontSize&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="16"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Foreground&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="White"&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum36" style="color: #606060;"&gt;  36:&lt;/span&gt;                                 &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;TextBlock&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Text&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="("&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;FontSize&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="16"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Foreground&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="White"&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum37" style="color: #606060;"&gt;  37:&lt;/span&gt;                                 &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;TextBlock&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Text&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="{Binding Duration}"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;FontSize&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="16"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Foreground&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="White"&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum38" style="color: #606060;"&gt;  38:&lt;/span&gt;                                 &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;TextBlock&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Text&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;=")"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;FontSize&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="16"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Foreground&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="White"&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum39" style="color: #606060;"&gt;  39:&lt;/span&gt;                             &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;StackPanel&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum40" style="color: #606060;"&gt;  40:&lt;/span&gt;                             &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;TextBlock&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Text&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="{Binding Director}"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;FontSize&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="16"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Foreground&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="White"&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum41" style="color: #606060;"&gt;  41:&lt;/span&gt;                             &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;TextBlock&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Text&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="{Binding CountryOfOrigin}"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;FontSize&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="16"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Foreground&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="White"&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum42" style="color: #606060;"&gt;  42:&lt;/span&gt;                         &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;StackPanel&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum43" style="color: #606060;"&gt;  43:&lt;/span&gt;                     &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;Border&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum44" style="color: #606060;"&gt;  44:&lt;/span&gt;                 &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;pivot:PivotViewerItemTemplate&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum45" style="color: #606060;"&gt;  45:&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;pivot:PivotViewer.ItemTemplates&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum46" style="color: #606060;"&gt;  46:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;pivot:PivotViewer&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum47" style="color: #606060;"&gt;  47:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;Grid&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum48" style="color: #606060;"&gt;  48:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;UserControl&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;If we run our application and select a few items then we will see the following screen. As you can tell when the application loaded that it contained 500 items &amp;ndash; Wow!&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/mbcrump/SNAGHTMLf991cf3.png"&gt;&lt;img style="border:0px;  background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="SNAGHTMLf991cf3" alt="SNAGHTMLf991cf3" src="http://www.silverlightshow.net/Storage/Users/mbcrump/SNAGHTMLf991cf3_thumb.png" width="613" height="570" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;I&amp;rsquo;ve barely touched on the amount of things that you can do with PivotViewer. If you want to learn more than please visit the Silverlight site located &lt;a href="http://www.silverlight.net/learn/data-networking/pivot-viewer/pivotviewer-control"&gt;here&lt;/a&gt;. &lt;/p&gt;&lt;h3&gt;Combo-Box Type Ahead&lt;/h3&gt;&lt;br /&gt;&lt;p&gt;Another new feature in Silverlight 5 is Combo-Box Type Ahead. This makes choosing items from a long list very simple. Let&amp;rsquo;s go ahead and build a sample application. &lt;/p&gt;&lt;p&gt;Fire up a new Silverlight 5 project and give it any name that want. &lt;/p&gt;&lt;p&gt;Switch over to the MainPage.xaml.cs and add the following code:&lt;/p&gt;&lt;div style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; MainPage()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;     InitializeComponent();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;      var lstDevelopers = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; List&amp;lt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;            { &lt;span style="color: #006080;"&gt;"Michael Crump"&lt;/span&gt;,&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;               &lt;span style="color: #006080;"&gt;"Pete Brown"&lt;/span&gt;,&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;               &lt;span style="color: #006080;"&gt;"Victor G."&lt;/span&gt;,&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt;               &lt;span style="color: #006080;"&gt;"Scott Hanselman"&lt;/span&gt;,&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt;               &lt;span style="color: #006080;"&gt;"Jesse Liberty"&lt;/span&gt;,&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt;               &lt;span style="color: #006080;"&gt;"Shawn Wildermuth"&lt;/span&gt;,&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt;  11:&lt;/span&gt;               &lt;span style="color: #006080;"&gt;"Scott Gu"&lt;/span&gt;,&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt;  12:&lt;/span&gt;               &lt;span style="color: #006080;"&gt;"Joel Cochran"&lt;/span&gt;,&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt;  13:&lt;/span&gt;               &lt;span style="color: #006080;"&gt;"Kunal Chowdhurry"&lt;/span&gt; };&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum14" style="color: #606060;"&gt;  14:&lt;/span&gt;             cbDevelopers.ItemsSource = lstDevelopers;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum15" style="color: #606060;"&gt;  15:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Switch back over to the MainPage.xaml and add in the following code replacing the existing Grid:&lt;/p&gt;&lt;div style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Grid&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;x:Name&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="LayoutRoot"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Background&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="White"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt;        &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;ComboBox&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;x:Name&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="cbDevelopers"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Height&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="40"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Width&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="150"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Margin&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="20"&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;Grid&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;If we run our application and begin typing then we will see the ComboBox automatically highlights the row that matches our selection.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/mbcrump/_image_2.png"&gt;&lt;img style="border:0px;  background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" title="image" alt="image" src="http://www.silverlightshow.net/Storage/Users/mbcrump/_image_thumb.png" width="161" height="240" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;Conclusion&lt;/h3&gt;&lt;p&gt;At this point, we have seen how you would use Double and Triple click support, PivotViewer and ComboBox Type-Ahead. In the next and final part of the series, I am going to take a look at several new features shipping with Silverlight 5 including : In-Browser HTML, PostScript and Tasks for TPL.&amp;nbsp; Again, thanks for reading and please come back for the next part.&lt;/p&gt;&lt;p&gt;To contact me directly please visit my blog at &lt;a href="http://michaelcrump.net/"&gt;http://michaelcrump.net/&lt;/a&gt; or through twitter at &lt;a href="http://twitter.com/mbcrump"&gt;http://twitter.com/mbcrump&lt;/a&gt;.&lt;/p&gt;</description>      <link>http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-9-of-10.aspx</link>      <author>editorial@silverlightshow.net (Michael Crump )</author>      <comments>http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-9-of-10.aspx#comments</comments>      <guid isPermaLink="true">http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-9-of-10.aspx</guid>      <pubDate>Tue, 06 Dec 2011 12:27:00 GMT</pubDate>    </item>    <item>      <link>http://feedproxy.google.com/~r/MarkMonster_Silverlight/~3/QQV259wobRs/how-to-give-an-element-focus-when-something-happens</link>      <author xmlns="http://www.w3.org/2005/Atom">        <name>Mark Monster</name>      </author>      <category>.NET</category>      <category>Silverlight</category>      <category>WP7</category>      <category>Used to get articles on www.dotnetmag.nl</category>      <category>WPDev</category>      <title>How to give an element focus when something happens?</title>      <description>&lt;p&gt;I had a very simple problem: On loading of particular screen I wanted to give a TextBox focus. It’s freaking easy to do this in the code behind. Most of my applications are actually MVVM applications and in that case it’s not something for the ViewModel, it’s logic that belongs to the view. But how about a Behavior?&lt;/p&gt;  &lt;p&gt;I want to give a specific control focus when something happens on something else. So that should be a &lt;a href="http://msdn.microsoft.com/en-us/library/ff726545(v=expression.40).aspx" target="_blank"&gt;TargetedTriggerAction&lt;/a&gt;&amp;lt;T&amp;gt;, T should be Control, because that’s something you can give focus. How easy can it be?&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:BF48545B-72FC-48CD-B241-BB2967E2EF01:9d1c8020-e11a-4444-9650-942e52eb980c" class="wlWriterEditableSmartContent"&gt;&lt;pre class="brush:csharp; gutter:true; first-line: 1; tab-size: 4; toolbar: false; collapse: false; "&gt;public class FocusOnEvent : TargetedTriggerAction&amp;lt;Control&amp;gt;{    protected override void Invoke(object parameter)    {        Target.Focus();    }}&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Is that all? Yes it is, or actually, I want to make it even easier, add the default trigger using the &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.interactivity.defaulttriggerattribute_members(v=Expression.40).aspx" target="_blank"&gt;DefaultTriggerAttribute&lt;/a&gt;. Default should be the Loaded event, so let’s add that single line.&lt;/p&gt;&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:BF48545B-72FC-48CD-B241-BB2967E2EF01:3f84f836-10b6-4dee-b082-30720d5f874f" class="wlWriterEditableSmartContent"&gt;&lt;pre class="brush:csharp; gutter:true; first-line: 1; tab-size: 4; toolbar: false; collapse: false; "&gt;[DefaultTrigger(typeof(FrameworkElement), typeof(EventTrigger), &amp;quot;Loaded&amp;quot;)]public class FocusOnEvent : TargetedTriggerAction&amp;lt;Control&amp;gt;{    protected override void Invoke(object parameter)    {        Target.Focus();    }}&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now we have this easy code, how do we use it? Just add a little bit of xaml to your page / control, just like any other behavior.&lt;/p&gt;&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:BF48545B-72FC-48CD-B241-BB2967E2EF01:96be8d68-8d21-4163-9c60-4a53c67b2d30" class="wlWriterEditableSmartContent"&gt;&lt;pre class="brush:xml; gutter:true; first-line: 1; tab-size: 4; toolbar: false; collapse: false; "&gt;&amp;lt;i:Interaction.Triggers&amp;gt;    &amp;lt;i:EventTrigger&amp;gt;        &amp;lt;Behaviors:FocusOnEvent TargetName=&amp;quot;TitleTextBox&amp;quot; /&amp;gt;    &amp;lt;/i:EventTrigger&amp;gt;&amp;lt;/i:Interaction.Triggers&amp;gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Some second thoughts, is it required to take the &lt;a href="http://dotnetbyexample.blogspot.com/2011/11/safe-event-detachment-base-class-for.html" target="_blank"&gt;Safe event Detachment base class for Windows Phone Behaviors by Joost van Schaik&lt;/a&gt; into consideration? No it’s not required, because we’re not manually attaching handlers to the events, that’s all done by the TargetedTriggerAction itself. Hope you guys think this little bit of code is useful.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MarkMonster_Silverlight/~4/QQV259wobRs" height="1" width="1"/&gt;</description>      <pubDate>Mon, 05 Dec 2011 21:44:00 +0100</pubDate>      <updated xmlns="http://www.w3.org/2005/Atom">2011-12-05T21:44:00+01:00</updated>      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://mark.mymonster.nl/2011/12/05/how-to-give-an-element-focus-when-something-happens</origLink>    </item>    <item>      <title>Windows Phone 7.5 - Use Background agents</title>      <description>&lt;table width="20"&gt;    &lt;tbody&gt;        &lt;tr&gt;            &lt;td&gt;            &lt;div class="fb-like" data-show-faces="true" data-send="false" data-href="http://www.silverlightshow.net/items/Windows-Phone-7.5-Use-Background-agents.aspx" data-font="segoe ui" data-layout="button_count"&gt;&lt;/div&gt;            &lt;/td&gt;            &lt;td&gt;&lt;a href="https://twitter.com/share" class="twitter-share-button" data-via="silverlightshow" data-counturl="http://www.silverlightshow.net/items/Windows-Phone-7.5-Use-Background-agents.aspx" data-count="horizontal" data-text="Reading the article 'Windows Phone 7.5 - Use Background agents' by @aboschin #wpdev" data-url="http://slshow.net/sR29u3"&gt;Tweet&lt;/a&gt;&lt;/td&gt;            &lt;td&gt;&lt;g:plusone size="medium" href="http://www.silverlightshow.net/items/Windows-Phone-7.5-Use-Background-agents.aspx"&gt;&lt;/g:plusone&gt;            &lt;/td&gt;            &lt;td&gt;            &lt;/td&gt;        &lt;/tr&gt;    &lt;/tbody&gt;&lt;/table&gt;&lt;p style="text-align: justify;"&gt;One of the most important features added in Windows Phone 7.5 is the multithreaded environment. This missing feature was very criticized in the previous version, but the main reason of its lack was the high battery consumption that is usual in multithread phones. In this release the team has agreed to add the multithread capability but it worked hard to reach a good balance between multithreading and battery life. This is the main reason for the introduction of Background Agents that are a way to manage the battery drain in junction with parallel work made by running applications. &lt;/p&gt;&lt;p style="text-align: justify;"&gt;&lt;strong&gt;&lt;a href="http://www.silverlightshow.net/Storage/Sources/SLPG.WP7_Mango.zip"&gt;Download the source code&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div style="border:1px solid #dddddd;padding-bottom: 5px; background-color: #f3f3f3; margin-top: 5px; padding-left: 10px; width: 200px; float: right; margin-left: 10px; padding-top: 5px;"&gt;&lt;h3&gt;Don't miss...&lt;/h3&gt;&lt;ul style="list-style-type: circle; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-left: 20px; font-size: 12px;"&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/items/Data-Access-Strategies-WebClient.aspx"&gt;The article series 'WP7 Data Access Strategies'&lt;/a&gt; &lt;/li&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/video/WP-Sockets-webinar-recording.aspx"&gt;&lt;strong&gt;Recording of the webinar&lt;/strong&gt;: Networking with Sockets in Windows Phone&lt;/a&gt;&lt;/li&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/ebooks/wp7_exam.aspx"&gt;The ebook 'Getting Ready for the Windows Phone Exam 70-599':&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;p style="padding-bottom: 5px; text-align: center;"&gt;&lt;a href="http://www.silverlightshow.net/ebooks/wp7_exam.aspx"&gt;&lt;img style="border:0px solid; width: 100px; height: 141px;" alt="Getting Ready for the Windows Phone Exam 70-599" src="http://www.silverlightshow.net/Storage/Ebooks/wp7_exam_cover.png" /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size: 13px;"&gt;($4.99)&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;&lt;a href="http://www.silverlightshow.net/ebooks/wp7_exam.aspx"&gt;&lt;/a&gt;&lt;p style="font-size: 12px; text-align: center;"&gt;&lt;a href="http://www.silverlightshow.net/ebooks.aspx"&gt;All SilverlightShow Ebooks&lt;/a&gt;&amp;nbsp;&lt;img alt="" src="http://www.silverlightshow.net/Storage/arrow-content.jpg" /&gt;&lt;/p&gt;&lt;/div&gt;&lt;h4 style="text-align: justify;"&gt;Understanding Agents&lt;/h4&gt;&lt;p style="text-align: justify;"&gt;Starting from the release of OS7.5, the developer can create background agents. As the name suggests, an agent works in background, hosted in a separated thread and is able to make some work. Important to say is that an agent must be initiated by an application. The application has to register the agent on the ScheduledActionService then it can continue its work or exit and the agent will be called by the Scheduler seamless. This imply that agents are not daemons; there is not any way to register and run the agent like a gui-less application that perform its work continuously. This just because agents are designed with battery life in mind so they only can be scheduled to run in two ways:&lt;/p&gt;&lt;ol&gt;    &lt;li&gt;    &lt;div style="text-align: justify;"&gt;&lt;strong&gt;PeriodicTask&lt;/strong&gt; &amp;ndash; These agents are called every 30 minutes (the timeout is fixed and cannot be changed). They can run for a very short timeframe and perform lightweight tasks&lt;/div&gt;    &lt;/li&gt;    &lt;li&gt;    &lt;div style="text-align: justify;"&gt;&lt;strong&gt;ResourceIntensiveTask &amp;ndash; &lt;/strong&gt;These agents are triggered by a set of requirements like processor activity, network, power and so on. They can work for a relatively long period.&lt;/div&gt;    &lt;/li&gt;&lt;/ol&gt;&lt;p style="text-align: justify;"&gt;The limits imposed to the developer are really heavy; You can only register two background agents per application, and they have to be of different type. This means your application can only have a single PeriodicTask and a single ResourceIntensiveTask. &lt;/p&gt;&lt;p style="text-align: justify;"&gt;To create the background agent you can start in the same way we did when I&amp;rsquo;ve explained the Audio Playback Agent. In Visual Studio you can open the Add New Project dialog and choose the Windows Phone Scheduled Task Agent. This option will create a new &lt;a href="http://www.silverlightshow.net/Storage/Users/AndreaBoschin/image_2.png"&gt;&lt;img style="background-image: none; margin-top: 12px; margin-right: 20px; margin-bottom: 0px; margin-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; float: left;        border-width: 0px;border-style: solid;" title="image" alt="image" src="http://www.silverlightshow.net/Storage/Users/AndreaBoschin/image_thumb.png" width="503" height="93" /&gt;&lt;/a&gt;project and a ScheduledAgent class that is already configured and ready to be filled with your implementation. Then, when you connect this project with the main application, the WMAppManifest.xml file is modified with the reference to the class. Differently from an Audio Playback Agent this does not suffice to make your agent up and running. You have obviously to implement you agent logic but you have also to register the agent with the ScheduledActionService:&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; RegisterTasks()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; taskName = ScheduledAgent.Name;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;     PeriodicTask existing = ScheduledActionService.Find(taskName) &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; PeriodicTask;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (existing != &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt;         ScheduledActionService.Remove(taskName);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt;  11:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt;  12:&lt;/span&gt;     PeriodicTask task = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; PeriodicTask(taskName)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt;  13:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum14" style="color: #606060;"&gt;  14:&lt;/span&gt;         Description = &lt;span style="color: #006080;"&gt;"Download local images from panoramio"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum15" style="color: #606060;"&gt;  15:&lt;/span&gt;     };&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum16" style="color: #606060;"&gt;  16:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum17" style="color: #606060;"&gt;  17:&lt;/span&gt;     ScheduledActionService.Add(task);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum18" style="color: #606060;"&gt;  18:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="text-align: justify;"&gt;This code may be added to the App.xaml.cs and its purpose is to check if an instance of the agent already exists before adding it to the ScheduledAgentService. The service accept an instance of PeriodicAgent or ResourceIntensiveTask but the sole reference to your implementation is in the taskName that has to be the name specified in the WMAppManifest.xaml. The PeriodicTask, I used in this example, has some other properties in addition to Description but none of them let you specify the timing of the schedule. Unfortunately it is fixed to 30 minutes. &lt;/p&gt;&lt;h4 style="text-align: justify;"&gt;Create an agent&lt;/h4&gt;&lt;p style="text-align: justify;"&gt;Implementing the agent is very straightforward. The class that implements the agent is inherited by ScheduledTaskAgent and it exposes an OnInvoke method. This method is called every time the scheduler needs to execute your code. The method provide a single parameter that is useful to know some information about the task that is running. As an example you can know the LastScheduledTime or the LastExitReason that contains the following values:&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;enum&lt;/span&gt; AgentExitReason&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;   None,&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;   Completed,&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;   Aborted,&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;   MemoryQuotaExceeded,&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;   ExecutionTimeExceeded,&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt;   UnhandledException,&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt;   Terminated,&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt;   Other,&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt;  11:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="text-align: justify;"&gt;Another important reason to use the provided parameter is to understand if your task is running as a PeriodicTask or ResourceIntensiveTask. This is useful when you register the sample agent for both the types. You can understand when you are in one case or in the other examining the underlying type:&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (task &lt;span style="color: #0000ff;"&gt;is&lt;/span&gt; PeriodicTask)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;     &lt;span style="color: #008000;"&gt;// do the periodic job&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;     &lt;span style="color: #008000;"&gt;// do the resource intensive job&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="text-align: justify;"&gt;You have to be careful when you implement the agent because the type you choose gives you some limits. Particularly the PeriodicTask is designed to be lightweight and the code you put inside the OnInvoke method must have a very light thumbprint in terms of elaboration time and used resources. As the AgentExitReason&amp;nbsp; testifies, the runtime can kill your work in case of MemoryQuotaExceeded and in case of ExecutionTimeExceeded. A periodic task can run only for about 25 seconds and can allocate a maximum of 5 MB of memory. A resource intensive task instead can run for about 10 minutes before the runtime kill it.&lt;/p&gt;&lt;p style="text-align: justify;"&gt;Given these limits and the timeout of 30 minutes between one execution an the other, you can easily understand that debugging an agent may become a nightmare. If you run the agent in its normal context you have to wait for 30 minutes before the breakpoints are hit. On the other side if you test the agent outside of the context you can easily overwhelm the resource limits and then discover that your agent won&amp;rsquo;t run when executed by the scheduler. To simplify the debug tasks it exists a LaunchForTest method into the ScheduledActionService. This method let you specify a timeout, useful to exit the application manually, then it runs the agent once without waiting for the expiration of the regular timeout. You can only debug the agent once per session but this method is important to speed-up your work.&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;" id="codeSnippet"&gt;ScheduledActionService.LaunchForTest(task.Name, TimeSpan.FromSeconds(5));&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;h4 style="text-align: justify;"&gt;A funny example&lt;/h4&gt;&lt;p style="text-align: justify;"&gt;To demonstrate the use of agents I&amp;rsquo;ve created an interesting and beautiful example. If you used google maps at least once, you know about Panoramio. It is a funny service that is able to show geo referenced photos over the google map. For this example I&amp;rsquo;ve managed to acquire the GPS position of the device when the agent run, download the available images and populate its tile with one randomized on the first twenty. The effect id pretty beautiful, expecially if you are moving during a travel because once every 30 minutes the tile is updated with a photo of a place located near you. &lt;/p&gt;&lt;p style="text-align: justify;"&gt;In the Invoke method I use the GeoCoordinateWatcher to read the current position. The problem here is about the execution model of the GeoCoordinateWatcher. It is made to notify when the position has changed raising an event. Here is the code I&amp;rsquo;ve prepared:&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; OnInvoke(ScheduledTask task)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;     GeoCoordinateWatcher watcher = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; GeoCoordinateWatcher(GeoPositionAccuracy.High)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;         MovementThreshold = 10&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;     };&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt;     watcher.PositionChanged += (s, e) =&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt;         watcher.Stop();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt;  11:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt;  12:&lt;/span&gt;         GeoCoordinate position = e.Position.Location;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt;  13:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum14" style="color: #606060;"&gt;  14:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (position.IsUnknown)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum15" style="color: #606060;"&gt;  15:&lt;/span&gt;         {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum16" style="color: #606060;"&gt;  16:&lt;/span&gt;             Random rnd = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Random(DateTime.Now.Millisecond);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum17" style="color: #606060;"&gt;  17:&lt;/span&gt;             position = &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.PointOfInterests[rnd.Next(0, &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.PointOfInterests.Length - 1)];&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum18" style="color: #606060;"&gt;  18:&lt;/span&gt;         }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum19" style="color: #606060;"&gt;  19:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum20" style="color: #606060;"&gt;  20:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.UpdateImage(position);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum21" style="color: #606060;"&gt;  21:&lt;/span&gt;     };&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum22" style="color: #606060;"&gt;  22:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum23" style="color: #606060;"&gt;  23:&lt;/span&gt;     watcher.Start(&lt;span style="color: #0000ff;"&gt;false&lt;/span&gt;);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum24" style="color: #606060;"&gt;  24:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="text-align: justify;"&gt;In this snippet I initialize the GeoCoordinateWatcher, then I attach the PositionChanged event. This event immediately notifies the new position and it is here I retrieve the current position. In the Positionchanged event I check the retrieved position; if it is Unknown I use a special array, filled with a number of random positions, to provide a random location to display. &lt;/p&gt;&lt;p style="text-align: justify;"&gt;In the UpdateImage I use the Panoramio&amp;rsquo;s API to retrieve the&amp;nbsp; available images using the Json format. In the GetRandomLocalImage I raffle an image from the set I found so in case of repeated update the photo will change every time:&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; UpdateImage(GeoCoordinate position)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (position != &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;         PanoramioService.GetRandomLocalImage(&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;             position.Latitude,&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;             position.Longitude,&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt;             s =&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt;             {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt;                 &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.LoadImage(s);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt;  11:&lt;/span&gt;                 &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.NotifyComplete();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt;  12:&lt;/span&gt;             },&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt;  13:&lt;/span&gt;             ex =&amp;gt; &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.NotifyComplete());&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum14" style="color: #606060;"&gt;  14:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum15" style="color: #606060;"&gt;  15:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="text-align: justify;"&gt;Important to say, no matter whether I found or not an image, I call the NotifyComplete method. This method let the runtime know that the work is done. Finally in the LoadImage method I use the new API dedicated to the tiles to change the background image and the title according with the found image:&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; LoadImage(PanoramioImageResult image)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;     ShellTile tile =&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;         ShellTile.ActiveTiles.FirstOrDefault();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (tile != &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt;         tile.Update(&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt;                     &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; StandardTileData&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt;                     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt;  11:&lt;/span&gt;                         Title = image.Title,&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt;  12:&lt;/span&gt;                         BackgroundImage = image.File,&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt;  13:&lt;/span&gt;                         Count = &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum14" style="color: #606060;"&gt;  14:&lt;/span&gt;                     });&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum15" style="color: #606060;"&gt;  15:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum16" style="color: #606060;"&gt;  16:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;h4 style="text-align: justify;"&gt;A beautiful opportunity&lt;/h4&gt;&lt;p style="text-align: justify;"&gt;There is no doubts that Background Agents are something missing in OS7.0. There&amp;rsquo;s a lot of cases when you can enrich your applications with some background notifiers and tasks. I hope in the next releases it will be removed some of the annoying limits, first of all the fixed 30 minutes schedule, that is really hard to understand, also with the purpose of sparing battery. I think a little configurability would be better.&lt;/p&gt;</description>      <link>http://www.silverlightshow.net/items/Windows-Phone-7.5-Use-Background-agents.aspx</link>      <author>editorial@silverlightshow.net (Andrea Boschin  )</author>      <comments>http://www.silverlightshow.net/items/Windows-Phone-7.5-Use-Background-agents.aspx#comments</comments>      <guid isPermaLink="true">http://www.silverlightshow.net/items/Windows-Phone-7.5-Use-Background-agents.aspx</guid>      <pubDate>Mon, 05 Dec 2011 12:26:00 GMT</pubDate>    </item>    <item>      <title>Silverlight Show: 10 Laps around Silverlight 5 (Part 8 of 10)</title>      <link>http://feedproxy.google.com/~r/TheSilverlightBlog/~3/eQ3H1Vfsz9g/silverlight-show-10-laps-around-silverlight-5-part-8-of-10.aspx</link>      <pubDate>Fri, 02 Dec 2011 16:24:23 GMT</pubDate>      <guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10243759</guid>      <creator xmlns="http://purl.org/dc/elements/1.1/">Silverlight Team</creator>      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">3</comments>      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/silverlight/rsscomments.aspx?WeblogPostID=10243759</commentRss>      <comments>http://blogs.msdn.com/b/silverlight/archive/2011/12/02/silverlight-show-10-laps-around-silverlight-5-part-8-of-10.aspx#comments</comments>      <description>&lt;p&gt;In this article, a discussion about productivity and performance enhancements in Silverlight 5 including: XAML Binding Debugging, Parser Performance Improvements and Multi-core JIT for improved start-up time. Please review the Roadmap for the series before going any further.&lt;/p&gt;  &lt;h2&gt;The Roadmap for this Series&lt;/h2&gt;  &lt;p&gt;Included, the Roadmap for the series below as you may want to visit other sections as you learn Silverlight 5. I picked the following features as I thought that you may find them useful in your day-to-day work. If you want a specific topic covered then please leave it in the comments below.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://www.silverlightshow.net/items/Silverlight-5-Part-1-of-10.aspx"&gt;Introduction to SL5 – provides a brief history of Silverlight and relevant links.&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-2-of-10.aspx"&gt;Binding - Ancestor Relative Source Binding and Implicit Data Templates.&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-4-of-10.aspx"&gt;Graphics - XNA 3D API and Improved Graphics Stack.&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-4-of-10.aspx"&gt;Media - Low-Latency Sound using XNA and Remote Control and Media Command (Keys) Support.&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/silverlight/archive/2011/11/18/silverlight-show-10-laps-around-silverlight-5-part-5-of-10.aspx"&gt;Text - Text Tracking and Leading, Linked and Multi-column Text, OpenType Support, Pixel Snapped Text and TextOptions.&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-6-of-10.aspx"&gt;Operating System Integration Part 1 - P/Invoke, Multiple Windows and Unrestricted File System Access in Full Trust.&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-7-of-10.aspx"&gt;Operating System Integration Part 2 - Default Filename for SaveFileDialog, 64-bit browser support and Power Awareness.&lt;/a&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Productivity and Performance - [This Post] - XAML Binding Debugging, Parser Performance Improvements and Multi-core JIT for improved start-up time. &lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;Controls - Double and Triple click support, PivotViewer and ComboBox Type-Ahead. &lt;/li&gt;    &lt;li&gt;Other items - In-Browser HTML, PostScript and Tasks for TPL&lt;/li&gt; &lt;/ol&gt;  &lt;h2&gt;XAML Binding Debugging&lt;/h2&gt;  &lt;p&gt;XAML Binding Debugging, is one of the most important features in the Silverlight 5. We have all been stuck with Binding expressions at one point or another and wanted an easier way to debug them. Now anywhere that you see a {&lt;strong&gt;Binding&lt;/strong&gt;} expression you can put a break point on it just like your typical C# code. Let’s take a look at a sample:&lt;/p&gt;  &lt;p&gt;Fire up a new Silverlight 5 project and give it any name that you want. &lt;/p&gt;  &lt;p&gt;Go ahead and add a new class to the project named &lt;strong&gt;Podcast.cs&lt;/strong&gt; and add the following code.&lt;/p&gt;  &lt;pre&gt;   1: public class Podcast&lt;/pre&gt;&lt;pre&gt;   2:    {&lt;/pre&gt;&lt;pre&gt;   3:        public string Description { get; set; }&lt;/pre&gt;&lt;pre&gt;   4:        public DateTime ReleaseDate { get; set; }&lt;/pre&gt;&lt;pre&gt;   5:        public Uri Link { get; set; }&lt;/pre&gt;&lt;pre&gt;   6:  &lt;/pre&gt;&lt;pre&gt;   7:        public Podcast(string description, DateTime releasedate, Uri link)&lt;/pre&gt;&lt;pre&gt;   8:        {&lt;/pre&gt;&lt;pre&gt;   9:            Description = description;&lt;/pre&gt;&lt;pre&gt;  10:            ReleaseDate = releasedate;&lt;/pre&gt;&lt;pre&gt;  11:            Link = link;&lt;/pre&gt;&lt;pre&gt;  12:        }&lt;/pre&gt;&lt;pre&gt;  13:    }&lt;/pre&gt;&lt;p&gt;Let’s switch back over to the MainPage.xaml.cs and add the following code:&lt;/p&gt;&lt;pre&gt;   1: public MainPage()&lt;/pre&gt;&lt;pre&gt;   2: {&lt;/pre&gt;&lt;pre&gt;   3:     InitializeComponent();&lt;/pre&gt;&lt;pre&gt;   4:     Loaded += new RoutedEventHandler(MainPage_Loaded);&lt;/pre&gt;&lt;pre&gt;   5: }&lt;/pre&gt;&lt;pre&gt;   6:  &lt;/pre&gt;&lt;pre&gt;   7: void MainPage_Loaded(object sender, RoutedEventArgs e)&lt;/pre&gt;&lt;pre&gt;   8: {&lt;/pre&gt;&lt;pre&gt;   9:     this.DataContext =&lt;/pre&gt;&lt;pre&gt;  10:         new Podcast(&amp;quot;This Developer's Life - Criticism&amp;quot;,&lt;/pre&gt;&lt;pre&gt;  11:             new DateTime(2011, 4, 21),&lt;/pre&gt;&lt;pre&gt;  12:             new Uri(&amp;quot;http://thisdeveloperslife.com/post/2-0-1-criticism&amp;quot;, UriKind.Absolute)&lt;/pre&gt;&lt;pre&gt;  13:             );&lt;/pre&gt;&lt;pre&gt;  14:  &lt;/pre&gt;&lt;pre&gt;  15: }&lt;/pre&gt;&lt;p&gt;Switch back over to the MainPage.xaml and add in the following code replacing the current Grid:&lt;/p&gt;&lt;pre&gt;   1: &amp;lt;Grid x:Name=&amp;quot;LayoutRoot&amp;quot; Background=&amp;quot;White&amp;quot;&amp;gt;&lt;/pre&gt;&lt;pre&gt;   2:        &amp;lt;StackPanel Orientation=&amp;quot;Vertical&amp;quot;&amp;gt;&lt;/pre&gt;&lt;pre&gt;   3:            &amp;lt;TextBlock Text=&amp;quot;{Binding Description}&amp;quot; /&amp;gt;&lt;/pre&gt;&lt;pre&gt;   4:            &amp;lt;TextBlock Name=&amp;quot;txtReleaseDate&amp;quot; Text=&amp;quot;{Binding ReleaseDate}&amp;quot; /&amp;gt;&lt;/pre&gt;&lt;pre&gt;   5:            &amp;lt;HyperlinkButton Content=&amp;quot;Listen to this Episode&amp;quot; NavigateUri=&amp;quot;{Binding Lik}&amp;quot; TargetName=&amp;quot;_blank&amp;quot; /&amp;gt;&lt;/pre&gt;&lt;pre&gt;   6:        &amp;lt;/StackPanel&amp;gt;&lt;/pre&gt;&lt;pre&gt;   7: &amp;lt;/Grid&amp;gt;&lt;/pre&gt;&lt;p&gt;While here, go ahead and put a break point on the “Hyperlink&amp;quot; button line, which you can do by clicking outside its margin as shown below:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/mbcrump/_______1_2.png"&gt;&lt;img title="1" alt="1" src="http://www.silverlightshow.net/Storage/Users/mbcrump/_______1_thumb.png" width="596" height="199" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Notice the Red Circle and the highlighted “&lt;strong&gt;Binding&lt;/strong&gt;” word? The Visual Studio 2010 debugger will stop once the XAML parser hits that line. &lt;/p&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-8-of-10.aspx"&gt;Read the full post&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10243759" width="1" height="1"&gt;&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xqhDFQ8-GQ6o7vvKdb2OfK6OfgA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xqhDFQ8-GQ6o7vvKdb2OfK6OfgA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xqhDFQ8-GQ6o7vvKdb2OfK6OfgA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xqhDFQ8-GQ6o7vvKdb2OfK6OfgA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;&lt;a href="http://feeds.feedburner.com/~ff/TheSilverlightBlog?a=eQ3H1Vfsz9g:vtkULEqC-y0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheSilverlightBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheSilverlightBlog?a=eQ3H1Vfsz9g:vtkULEqC-y0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheSilverlightBlog?i=eQ3H1Vfsz9g:vtkULEqC-y0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheSilverlightBlog?a=eQ3H1Vfsz9g:vtkULEqC-y0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheSilverlightBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheSilverlightBlog/~4/eQ3H1Vfsz9g" height="1" width="1"/&gt;</description>      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://blogs.msdn.com/b/silverlight/archive/2011/12/02/silverlight-show-10-laps-around-silverlight-5-part-8-of-10.aspx</origLink>    </item>    <item>      <title>5 Minute Intro to HTML5 Canvas</title>      <link>http://feeds.johnpapa.net/~r/JohnPapa/~3/wEnhqzMtkOo/5-minute-intro-to-html5-canvas</link>      <description>&lt;p&gt;&lt;a href="http://visualstudiomagazine.com/articles/2011/12/01/working-with-the-html5-canvas.aspx"&gt;This month’s Papa’s Perspective shows you how to use some of the fundamental aspects of the HTML5 canvas to draw.&lt;/a&gt; I go over some 101 level functions such as arc, beginPath, lineCap, lineJoin, lineTo, lineWidth, moveTo, stroke, strokeStyle and more. The source code you can download shows you how you can draw letters using these functions, and includes some scaling calculations to make it all a bit easier.&lt;/p&gt; &lt;p&gt;A bit of holiday fun &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://johnpapa.net/Media/Default/Windows-Live-Writer/HTML5-Canvas_F905/wlEmoticon-smile_2.png"&gt;&lt;/p&gt; &lt;p&gt;Enjoy!&lt;/p&gt; &lt;p&gt;&lt;a href="http://johnpapa.net/Media/Default/Windows-Live-Writer/HTML5-Canvas_F905/fig2_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="fig2" border="0" alt="fig2" src="http://johnpapa.net/Media/Default/Windows-Live-Writer/HTML5-Canvas_F905/fig2_thumb.png" width="241" height="141"&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;&lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=wEnhqzMtkOo:nFy3wy3A2JA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?i=wEnhqzMtkOo:nFy3wy3A2JA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=wEnhqzMtkOo:nFy3wy3A2JA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?i=wEnhqzMtkOo:nFy3wy3A2JA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=wEnhqzMtkOo:nFy3wy3A2JA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=wEnhqzMtkOo:nFy3wy3A2JA:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JohnPapa/~4/wEnhqzMtkOo" height="1" width="1"/&gt;</description>      <pubDate>Thu, 01 Dec 2011 22:46:12 GMT</pubDate>      <guid isPermaLink="false">http://johnpapa.net:80/5-minute-intro-to-html5-canvas</guid>      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://johnpapa.net:80/5-minute-intro-to-html5-canvas</origLink>    </item>    <item>      <link>http://feedproxy.google.com/~r/MarkMonster_Silverlight/~3/0HZhJdJ3wU0/does-windows-8-support-gif-images-and-animated-gif-images</link>      <author xmlns="http://www.w3.org/2005/Atom">        <name>Mark Monster</name>      </author>      <category>.NET</category>      <category>Silverlight</category>      <category>Technology</category>      <category>WP7</category>      <category>Used to get articles on www.dotnetmag.nl</category>      <category>WPDev</category>      <category>WinRT</category>      <category>Metro</category>      <category>Win8</category>      <title>Does Windows 8 support Gif images and Animated Gif images?</title>      <description>&lt;p&gt;To some of us it may sound like a strange question, but developers which are used to Silverlight or Windows Phone development know why I ask this question. In both Silverlight and Windows Phone Gif images aren’t directly supported. Don’t ask me why, I don’t know why. Luckily Silverlight and Windows Phone developers are helped by an &lt;a href="http://imagetools.codeplex.com/"&gt;open source project called Image Tools which enables support for Gif and Animated Gif&lt;/a&gt;.&lt;/p&gt;  &lt;h3&gt;Windows 8 – HTML5 + JS&lt;/h3&gt;  &lt;p&gt;For a starter I just downloaded an ordinary gif-image from the internet and with no knowledge about how to add an image to a Windows 8 application I used my web-knowledge.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:BF48545B-72FC-48CD-B241-BB2967E2EF01:35bc7a44-4f96-4d00-ba18-0095b5ea4956" class="wlWriterEditableSmartContent"&gt;&lt;pre class="brush:xml; gutter:true; first-line: 1; tab-size: 4; toolbar: false; collapse: false; "&gt;&amp;lt;img src=&amp;quot;/images/window.gif&amp;quot; /&amp;gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And yes it does work. What about an animated gif? So I recall an interesting animated gif on &lt;a href="http://wildermuth.com/"&gt;Shawn Wildermuth’s blog&lt;/a&gt;, his head-shot. So without do anything else than changing the source of the image tag I created it started working. A surprise? Not really I already heard that the rendering engine for Windows 8 applications that are build in HTML5 + JS is based on IE, so this is what I did expect.&lt;/p&gt;&lt;h3&gt;Windows 8 – XAML + C#&lt;/h3&gt;&lt;p&gt;So I used my Silverlight knowledge to do in XAML what I did in HTML5, add an image.&lt;/p&gt;&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:BF48545B-72FC-48CD-B241-BB2967E2EF01:02801b17-58f1-4662-a4e5-174d7fae356d" class="wlWriterEditableSmartContent"&gt;&lt;pre class="brush:xml; gutter:true; first-line: 1; tab-size: 4; toolbar: false; collapse: false; "&gt;&amp;lt;Image Source=&amp;quot;/Images/window.gif&amp;quot; /&amp;gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;A really fast surprise it started working in the design view of the xaml document even before I ran the project. And also after running the application it seems to work perfectly. And the animated gif? It appears in the designer as well, but doesn’t animate in there. Also when running the application the animation doesn’t work.&lt;/p&gt;&lt;p&gt;Just a quick thought: Silverlight doesn’t support gif at all, what about WPF? After some googling it seems that WPF does support gif images, but not really the animated gifs. But there are &lt;a href="http://stackoverflow.com/questions/210922/how-do-i-get-an-animated-gif-to-work-in-wpf"&gt;people who created solutions that should work to enable animated gifs in WPF&lt;/a&gt;. So let’s see how much of that is possible in Windows 8.&lt;/p&gt;&lt;p&gt;The solution for WPF makes use of the &lt;a href="http://msdn.microsoft.com/en-us/library/ms653429.aspx"&gt;GifBitmapDecoder&lt;/a&gt; which isn’t there in Windows 8. But I found something that sounds similar the &lt;a href="http://msdn.microsoft.com/en-us/library/windows/apps/windows.graphics.imaging.bitmapdecoder(v=vs.85).aspx"&gt;BitmapDecoder&lt;/a&gt;. I tried to get the a small proof-of-concept working, but failed so far. I invite you to solve this Animated Gif problem using the information I’ve given. Please share your solution with the readers of this post.&lt;/p&gt;&lt;h3&gt;Conclusion&lt;/h3&gt;&lt;p&gt;We all know WinRT isn’t finished, we are just looking at a developer preview. If I recall it correctly WinRT should have the same features in XAML+C# as in HTML5+JS. Will this small difference in features be tackled in the final release?&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/MarkMonster_Silverlight/~4/0HZhJdJ3wU0" height="1" width="1"/&gt;</description>      <pubDate>Tue, 29 Nov 2011 21:51:55 +0100</pubDate>      <updated xmlns="http://www.w3.org/2005/Atom">2011-11-29T21:51:55+01:00</updated>      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://mark.mymonster.nl/2011/11/29/does-windows-8-support-gif-images-and-animated-gif-images</origLink>    </item>    <item>      <title>10 Laps around Silverlight 5 (Part 8 of 10)</title>      <description>&lt;div style="border:1px solid #dddddd;padding-bottom: 5px; background-color: #f3f3f3; margin-top: 5px; padding-left: 10px; padding-top: 5px;"&gt;This article is sponsored by &lt;a href="http://ads.silverlightshow.net/a.aspx?ZoneID=53&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=95076" target="_blank"&gt;&lt;img alt="" width="0" height="0" style="border:0px solid;" src="http://ads.silverlightshow.net/a.aspx?ZoneID=53&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=95076" /&gt;Telerik RadControls for Silverlight&lt;/a&gt;. Related content from the sponsor:&lt;p&gt;&lt;strong&gt;Check out what's new!&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;    &lt;li&gt;&lt;span style="font-size: 14px;"&gt;&lt;a href="http://ads.silverlightshow.net/a.aspx?ZoneID=52&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=80309" target="_blank"&gt;    &lt;img alt="" src="http://ads.silverlightshow.net/a.aspx?ZoneID=52&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=80309" width="0" height="0" style="border-width: 0px;border-style: solid;" /&gt;The latest Q3 2011 release is out! Introducing ChartView &amp;amp; next-generation CRM demo with full source code.&lt;/a&gt;&lt;/span&gt; &lt;/li&gt;    &lt;li&gt;&lt;span style="font-size: 14px;"&gt;&lt;a href="http://ads.silverlightshow.net/a.aspx?ZoneID=51&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=78027" target="_blank"&gt;    &lt;img alt="" src="http://ads.silverlightshow.net/a.aspx?ZoneID=51&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=78027" width="0" height="0" style="border-width: 0px;border-style: solid;" /&gt;Introducing Telerik Patterns &amp;amp; Practices for Silverlight and WPF.&lt;/a&gt;&lt;/span&gt; &lt;/li&gt;    &lt;li&gt;&lt;span style="font-size: 14px;"&gt;&lt;a href="http://ads.silverlightshow.net/a.aspx?ZoneID=54&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=39336" target="_blank"&gt;    &lt;img alt="" src="http://ads.silverlightshow.net/a.aspx?ZoneID=54&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=39336" width="0" height="0" style="border-width: 0px;border-style: solid;" /&gt;The RadControls for Silverlight has been redesigned.  Explore it!&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;table width="20"&gt;    &lt;tbody&gt;        &lt;tr&gt;            &lt;td&gt;            &lt;div class="fb-like" data-show-faces="true" data-send="false" data-href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-8-of-10.aspx" data-font="segoe ui" data-layout="button_count"&gt;&lt;/div&gt;            &lt;/td&gt;            &lt;td&gt;&lt;a href="https://twitter.com/share" class="twitter-share-button" data-via="silverlightshow" data-counturl="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-8-of-10.aspx" data-count="horizontal" data-text="Reading SilverlightShow article '10 Laps around Silverlight 5 (Part 8 of 10)' by @mbcrump #sl5" data-url="http://slshow.net/tf6K6i"&gt;Tweet&lt;/a&gt;&lt;/td&gt;            &lt;td&gt;&lt;g:plusone size="medium" href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-8-of-10.aspx"&gt;&lt;/g:plusone&gt;            &lt;/td&gt;            &lt;td&gt;            &lt;/td&gt;        &lt;/tr&gt;    &lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;To contact me directly please visit my blog at &lt;a href="http://michaelcrump.net/"&gt;http://michaelcrump.net/&lt;/a&gt; or through twitter at &lt;a href="http://twitter.com/mbcrump"&gt;http://twitter.com/mbcrump&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;This article is Part 8 of the series &amp;ldquo;10 Laps around Silverlight 5.&amp;rdquo; If you have missed any other section then please see the Roadmap below.    &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="border:1px solid #dddddd;padding-bottom: 5px; background-color: #f3f3f3; margin-top: 5px; padding-left: 10px; width: 200px; float: right; margin-left: 10px; padding-top: 5px;"&gt;&lt;h3&gt;More resources...&lt;/h3&gt;&lt;ul style="list-style-type: circle; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-left: 20px; font-size: 12px;"&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/news/Free-Silverlight-Show-Webinar-Introduction-to-XAML-Development-on-Windows-8.aspx"&gt;Upcoming Webinar on Nov 29th: XAML Development on Windows 8&lt;/a&gt; &lt;/li&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/GetStarted.aspx"&gt;Get Started with Silverlight 4&lt;/a&gt; &lt;/li&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/ebooks/silverlight_exam.aspx"&gt;'Getting Ready for Microsoft Silverlight Exam 70-506' Ebook &lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style="padding-bottom: 5px; text-align: center;"&gt;&lt;a href="http://www.silverlightshow.net/ebooks/silverlight_exam.aspx"&gt;&lt;img style="border:0px solid;" alt="Getting Ready for Microsoft Silverlight Exam 70-506: Ebook" src="http://www.silverlightshow.net/Storage/sl_exam_thumb_small.png" usemap="#rade_img_map_1291385581316" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="font-size: 12px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.silverlightshow.net/ebooks.aspx"&gt;All SilverlightShow Ebooks&lt;/a&gt;&amp;nbsp;&lt;img alt="" src="http://www.silverlightshow.net/Storage/arrow-content.jpg" /&gt;&lt;/p&gt;&lt;/div&gt;To refresh your memory on what Silverlight is:&lt;p&gt;Microsoft Silverlight is an application framework for writing Rich Internet Applications. &lt;/p&gt;The run-time environment is available as a plug-in for most web browsers and works on a variety of operating systems including Windows, Mac and Linux.&lt;p&gt;To recap what we learned in the previous section:&lt;/p&gt;&lt;ul&gt;    &lt;li&gt;We learned how you could specify a default filename when using the SaveFileDialog prompt. We also discussed how you could run the application in elevated trust to prevent the security warning from being displayed.&amp;nbsp; &lt;/li&gt;    &lt;li&gt;We then took a look at 64-bit browser support that is included with Silverlight 5 and learned that if your user is using a 64-bit browser then they will be redirected to a location to download the Silverlight 5 x64 runtime.&amp;nbsp; &lt;/li&gt;    &lt;li&gt;We wrapped up a short section on new and improved power awareness for media applications. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;In this article, I am going to discuss productivity and performance enhancements in Silverlight 5 including: XAML Binding Debugging, Parser Performance Improvements and Multi-core JIT for improved start-up time. Please review the Roadmap for the series before going any further.&lt;/p&gt;&lt;h3&gt;The Roadmap for this Series&lt;/h3&gt;&lt;p&gt;I&amp;rsquo;ve included the Roadmap for the series below as you may want to visit other sections as you learn Silverlight 5. I picked the following features as I thought that you may find them useful in your day-to-day work. If you want a specific topic covered then please leave it in the comments below.&lt;/p&gt;&lt;p&gt;1) &lt;strong&gt;&lt;a href="http://www.silverlightshow.net/items/Silverlight-5-Part-1-of-10.aspx"&gt;Introduction to SL5 &amp;ndash; This post which provides a brief history of Silverlight and relevant links.&lt;/a&gt;&lt;/strong&gt; &lt;/p&gt;&lt;p&gt;2) &lt;strong&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-2-of-10.aspx"&gt;Binding- Ancestor Relative Source Binding and Implicit Data Templates.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;3) &lt;strong&gt;&lt;/strong&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-3.aspx" target="_self"&gt;&lt;strong&gt;Graphics&lt;/strong&gt; &lt;strong&gt;&amp;ndash;XNA 3D API and Improved Graphics Stack&lt;/strong&gt;.&lt;/a&gt;&lt;/p&gt;&lt;p&gt;4) &lt;strong&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-4-of-10.aspx"&gt;Media - Low-Latency Sound using XNA and Remote Control and Media Command (Keys) Support.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;5) &lt;strong&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-5-of-10.aspx"&gt;Text - Text Tracking and Leading, Linked and Multi-column Text, OpenType Support, Pixel Snapped Text and TextOptions.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;6) &lt;strong&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-6-of-10.aspx"&gt;Operating System Integration - Part 1 - P/Invoke, Multiple Windows and Unrestricted File System Access in Full Trust.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;7) &lt;strong&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-7-of-10.aspx"&gt;Operating System Integration - Part 2 - Default Filename for SaveFileDialog, 64-bit browser support and Power Awareness.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;8) &lt;strong&gt;Productivity and Performance [This post] - &lt;/strong&gt;XAML Binding Debugging, Parser Performance Improvements and Multi-core JIT for improved start-up time.&lt;/p&gt;&lt;p&gt;9) &lt;strong&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-9-of-10.aspx"&gt;Controls - Double and Triple click support, PivotViewer and ComboBox Type-Ahead.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;10) &lt;strong&gt;&lt;/strong&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-10-of-10.aspx" target="_self"&gt;&lt;strong&gt;Other items&lt;/strong&gt; - In-Browser HTML, PostScript and Tasks for TPL.&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;&lt;/h3&gt;&lt;h3&gt;XAML Binding Debugging&lt;/h3&gt;&lt;p&gt;XAML Binding Debugging, is one of the most important features in the Silverlight 5. We have all been stuck with Binding expressions at one point or another and wanted an easier way to debug them. Now anywhere that you see a {&lt;strong&gt;Binding&lt;/strong&gt;} expression you can put a break point on it just like your typical C# code. Let&amp;rsquo;s take a look at a sample:&lt;/p&gt;&lt;p&gt;Fire up a new Silverlight 5 project and give it any name that you want. &lt;/p&gt;&lt;p&gt;Go ahead and add a new class to the project named &lt;strong&gt;Podcast.cs&lt;/strong&gt; and add the following code.&lt;/p&gt;&lt;div style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; Podcast&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt;    {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;        &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; Description { get; set; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;        &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; DateTime ReleaseDate { get; set; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;        &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; Uri Link { get; set; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;        &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; Podcast(&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; description, DateTime releasedate, Uri link)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt;        {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt;            Description = description;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt;            ReleaseDate = releasedate;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt;  11:&lt;/span&gt;            Link = link;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt;  12:&lt;/span&gt;        }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt;  13:&lt;/span&gt;    }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Let&amp;rsquo;s switch back over to the MainPage.xaml.cs and add the following code:&lt;/p&gt;&lt;div style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; MainPage()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;     InitializeComponent();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;     Loaded += &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; RoutedEventHandler(MainPage_Loaded);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; MainPage_Loaded(&lt;span style="color: #0000ff;"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.DataContext =&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Podcast(&lt;span style="color: #006080;"&gt;"This Developer's Life - Criticism"&lt;/span&gt;,&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt;  11:&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; DateTime(2011, 4, 21),&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt;  12:&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Uri(&lt;span style="color: #006080;"&gt;"http://thisdeveloperslife.com/post/2-0-1-criticism"&lt;/span&gt;, UriKind.Absolute)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt;  13:&lt;/span&gt;             );&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum14" style="color: #606060;"&gt;  14:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum15" style="color: #606060;"&gt;  15:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Switch back over to the MainPage.xaml and add in the following code replacing the current Grid:&lt;/p&gt;&lt;div style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Grid&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;x:Name&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="LayoutRoot"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Background&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="White"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt;        &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;StackPanel&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Orientation&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="Vertical"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;            &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;TextBlock&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Text&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="{Binding Description}"&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;            &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;TextBlock&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Name&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="txtReleaseDate"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Text&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="{Binding ReleaseDate}"&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;            &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;HyperlinkButton&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Content&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="Listen to this Episode"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;NavigateUri&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="{Binding Lik}"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;TargetName&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="_blank"&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;        &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;StackPanel&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;Grid&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;While here, go ahead and put a break point on the &amp;ldquo;Hyperlink" button line, which you can do by clicking outside its margin as shown below:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/mbcrump/_______1_2.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="1" alt="1" src="http://www.silverlightshow.net/Storage/Users/mbcrump/_______1_thumb.png" width="596" height="199" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Notice the Red Circle and the highlighted &amp;ldquo;&lt;strong&gt;Binding&lt;/strong&gt;&amp;rdquo; word? The Visual Studio 2010 debugger will stop once the XAML parser hits that line. &lt;/p&gt;&lt;p&gt;&lt;em&gt;Please note that if you try to put a breakpoint on any line outside of the &amp;ldquo;Binding&amp;rdquo; keyword, then you will get a message saying, &amp;ldquo;This is not a valid location for a breakpoint&amp;rdquo; at the bottom of your screen:&lt;/em&gt;&lt;/p&gt;&lt;p&gt;We are now ready to begin debugging, so, press &amp;ldquo;F5&amp;rdquo; on your keyboard to begin. You will notice that the Binding breakpoint was hit. If you examine your &lt;strong&gt;Locals window&lt;/strong&gt; then you will see the following: &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/mbcrump/_________2_2.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="2" alt="2" src="http://www.silverlightshow.net/Storage/Users/mbcrump/_________2_thumb.png" width="655" height="167" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;It looks like we have an error in our Binding statement that is telling us the property &lt;strong&gt;&amp;lsquo;Lik&amp;rsquo;&lt;/strong&gt; does not exist on the class called Podcast. If you continue running the application then you will quickly notice that the webpage launches but the &amp;ldquo;Listen to this Episode&amp;rdquo; hyperlink does not work. &lt;/p&gt;&lt;p&gt;If we take a quick look at our &lt;strong&gt;Podcast&lt;/strong&gt; class then we will notice that the property is actually called &lt;strong&gt;Link&lt;/strong&gt;. If we go back to our MainPage.xaml and change &lt;/p&gt;&lt;div style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;HyperlinkButton&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Content&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="Listen to this Episode"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;NavigateUri&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="{Binding Lik}"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;TargetName&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="_blank"&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;to&lt;/p&gt;&lt;div style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;HyperlinkButton&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Content&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="Listen to this Episode"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;NavigateUri&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="{Binding Link}"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;TargetName&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="_blank"&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;and run our application again it will work properly.&lt;p&gt;It is very easy to debug Binding expressions now with that feature. Another undocumented feature is that if you have Silverlight 5 installed then you can also&lt;span style="text-decoration: underline;"&gt; debug your&lt;/span&gt; &lt;span style="text-decoration: underline;"&gt;Silverlight 4 binding statements&lt;/span&gt;! Sweet!&lt;/p&gt;&lt;h3&gt;Productivity and Performance Improvements&lt;/h3&gt;&lt;br /&gt;Silverlight 5 contains many additional performance improvements that you may not be aware of. I have decided to create a short list here:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;    &lt;li&gt;Reduced network latency by using a background thread for networking. &lt;/li&gt;    &lt;li&gt;Hardware acceleration is enabled in windowless mode with Internet Explorer 9. &lt;/li&gt;    &lt;li&gt;XAML parser improvements that speed up startup and runtime performance. &lt;/li&gt;    &lt;li&gt;Support for 64-bit operating systems as discussed in part 7 of this series. &lt;/li&gt;    &lt;li&gt;Multi-core JIT for improved startup time. &lt;/li&gt;    &lt;li&gt;Increased performance of hardware decoding and presentation of H.264 media for lower-power devices. &lt;/li&gt;    &lt;li&gt;Text layout performance improvements &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;As you can see the Silverlight Team has been hard at work not only adding additional features to Silverlight 5 but improving performance all around.&lt;/p&gt;&lt;h3&gt;Conclusion&lt;/h3&gt;&lt;p&gt;At this point, we have seen how you would debug binding statements using Silverlight 5&amp;rsquo;s built-in XAML debugger. We also looked at several productivity and performance improvements in Silverlight 5. In the next part of the series, I am going to take a look at several new controls/features shipping with Silverlight 5 including : Double and Triple click support, PivotViewer and ComboBox Type-Ahead.&amp;nbsp; Again, thanks for reading and please come back for the next part.&lt;/p&gt;&lt;p&gt;To contact me directly please visit my blog at &lt;a href="http://michaelcrump.net/"&gt;http://michaelcrump.net/&lt;/a&gt; or through twitter at &lt;a href="http://twitter.com/mbcrump"&gt;http://twitter.com/mbcrump&lt;/a&gt;.&lt;/p&gt;</description>      <link>http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-8-of-10.aspx</link>      <author>editorial@silverlightshow.net (Michael Crump )</author>      <comments>http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-8-of-10.aspx#comments</comments>      <guid isPermaLink="true">http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-8-of-10.aspx</guid>      <pubDate>Tue, 29 Nov 2011 12:18:00 GMT</pubDate>    </item>    <item>      <title>Entity Framework 4.1 Code First Book Review</title>      <link>http://feeds.johnpapa.net/~r/JohnPapa/~3/alcRNGB0kj8/entity-framework-4.1-code-first-book-reviewcodefirstbookreview</link>      <description>&lt;p&gt;I recently had an opportunity to review an advance copy of Julie Lerman and Rowan Miller's new book "&lt;a href="http://www.amazon.com/dp/1449312942?t=johnpanet-20"&gt;Programming Entity Framework 4.1 Code First&lt;/a&gt;". In short, this is a fantastic book that is a quick read.&lt;a href="http://visualstudiomagazine.com/articles/2011/11/28/an-entity-framework-book-worth-your-time.aspx"&gt; Read more about my review in Papa's Perspective&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.amazon.com/dp/1449312942?t=johnpanet-20"&gt;&lt;img src="http://ecx.images-amazon.com/images/I/514gcrQu-ML._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA300_SH20_OU01_.jpg" width="300" height="300" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;&lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=alcRNGB0kj8:Cs3HCkMzqcA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?i=alcRNGB0kj8:Cs3HCkMzqcA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=alcRNGB0kj8:Cs3HCkMzqcA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?i=alcRNGB0kj8:Cs3HCkMzqcA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=alcRNGB0kj8:Cs3HCkMzqcA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=alcRNGB0kj8:Cs3HCkMzqcA:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JohnPapa/~4/alcRNGB0kj8" height="1" width="1"/&gt;</description>      <pubDate>Mon, 28 Nov 2011 19:39:04 GMT</pubDate>      <guid isPermaLink="false">http://johnpapa.net:80/entity-framework-4.1-code-first-book-reviewcodefirstbookreview</guid>      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://johnpapa.net:80/entity-framework-4.1-code-first-book-reviewcodefirstbookreview</origLink>    </item>    <item>      <title>Silverlight and Sharepoint working together: a Silverlight menu for Sharepoint - Part 2</title>      <description>&lt;table width="20"&gt;    &lt;tbody&gt;        &lt;tr&gt;            &lt;td&gt;            &lt;div class="fb-like" data-show-faces="true" data-send="false" data-href="http://www.silverlightshow.net/items/Silverlight-and-Sharepoint-working-together-a-Silverlight-menu-for-Sharepoint-Part-2.aspx" data-font="segoe ui" data-layout="button_count"&gt;&lt;/div&gt;            &lt;/td&gt;            &lt;td&gt;&lt;a href="https://twitter.com/share" class="twitter-share-button" data-via="silverlightshow" data-counturl="http://www.silverlightshow.net/items/Silverlight-and-Sharepoint-working-together-a-Silverlight-menu-for-Sharepoint-Part-2.aspx" data-count="horizontal" data-text="Reading article: Silverlight &amp;amp; Sharepoint working together: Silverlight menu for Sharepoint Part 2" data-url="http://slshow.net/sgzpki"&gt;Tweet&lt;/a&gt;&lt;/td&gt;            &lt;td&gt;&lt;g:plusone size="medium" href="http://www.silverlightshow.net/items/Silverlight-and-Sharepoint-working-together-a-Silverlight-menu-for-Sharepoint-Part-2.aspx"&gt;&lt;/g:plusone&gt;            &lt;/td&gt;            &lt;td&gt;            &lt;/td&gt;        &lt;/tr&gt;    &lt;/tbody&gt;&lt;/table&gt;&lt;p style="text-align: justify;"&gt;In the first part of the article I introduced the matter, i.e. adding a Silverlight menu in Sharepoint. The first solution presented, defined as &amp;ldquo;the client approach&amp;rdquo;, has a major defect: it cannot be used for anonymous-enabled sites. In this second part we will see another way (that I called the &amp;ldquo;server approach&amp;rdquo;) in order to build a Silverlight menu for Sharepoint that can be used also by anonymous users. To make this new approach clearer I will introduce another few general concepts regarding the Sharepoint platform. As previously, they will be marked with a specific icon and Sharepoint developers can skip these parts.&lt;/p&gt;&lt;div style="border:1px solid #dddddd;padding-bottom: 5px; background-color: #f3f3f3; margin-top: 5px; padding-left: 10px; width: 200px; float: right; margin-left: 10px; padding-top: 5px;"&gt;&lt;h3&gt;Don't miss...&lt;/h3&gt;&lt;ul style="list-style-type: circle; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-left: 20px; font-size: 12px;"&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/items/Discover-Sharepoint-with-Silverlight.aspx"&gt;The article series: Discover Sharepoint with Silverlight&lt;/a&gt; &lt;/li&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/items/Silverlight-and-Sharepoint-working-together-the-Silverlight-SharePoint-Web-Parts-part-1.aspx"&gt;The article series: Silverlight and Sharepoint working together&lt;/a&gt; &lt;/li&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/ebooks/sharepoint.aspx"&gt;Ebook: Discover Sharepoint with Silverlight (also in MOBI and EPUB):&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;p style="padding-bottom: 5px; text-align: center;"&gt;&lt;a href="http://www.silverlightshow.net/ebooks/sharepoint.aspx"&gt;&lt;img style="border:0px solid;" alt="Discover Sharepoint with Silverlight Ebook" src="http://www.silverlightshow.net/Storage/sharepoint_sml.png" usemap="#rade_img_map_1291385581316" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size: 13px;"&gt;($0.99)&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style="font-size: 12px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.silverlightshow.net/ebooks.aspx"&gt;All SilverlightShow Ebooks&lt;/a&gt;&amp;nbsp;&lt;img alt="" src="http://www.silverlightshow.net/Storage/arrow-content.jpg" /&gt;&lt;/p&gt;&lt;/div&gt;&lt;h3&gt;The server approach&lt;/h3&gt;&lt;p&gt;An alternative solution for the anonymous &amp;ndash; enabled menu is illustrated in the picture below:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/walterf/ServerApproach_2.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; width: 369px; height: 300px;        border-width: 0px;border-style: solid;" title="ServerApproach" alt="ServerApproach" src="http://www.silverlightshow.net/Storage/Users/walterf/ServerApproach_thumb.png" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="text-align: justify;"&gt;Why calling it &amp;ldquo;server approach&amp;rdquo;? Because the phase of retrieving the hierarchy of our Sharepoint site is made by code which is running on the server. And who is the owner of this code portion? The answer is: the web part hosting the Silverlight application. Let me take a while to recap some basic concepts I explained in my first article on this series &lt;a href="http://www.silverlightshow.net/items/Silverlight-and-Sharepoint-working-together-the-Silverlight-SharePoint-Web-Parts-part-2.aspx"&gt;&lt;em&gt;Sharepoint and Silverlight working together&lt;/em&gt;&lt;/a&gt;. In that article we sectioned the structure of the Silverlight custom web part we are using here to inject the Silverlight application into a Sharepoint page. We have seen that it is a specialized Visual Studio template which helps us create a web part capable of hosting a Silverlight application. The Silverlight application itself is embedded in a &amp;lt;div&amp;gt; tag inside the custom control which represents the web part. This web part is defined as &amp;ldquo;sandboxed visual web part&amp;rdquo; i.e. a &amp;ldquo;Sharepoint 2010 Visual Web Part&amp;rdquo; with limited power.&lt;/p&gt;&lt;p style="text-align: justify;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="text-align: justify;"&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/walterf/_sharepoint_2010_icon_2.jpg"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="sharepoint_2010_icon" alt="sharepoint_2010_icon" src="http://www.silverlightshow.net/Storage/Users/walterf/_sharepoint_2010_icon_thumb.jpg" width="64" height="63" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="text-align: justify;"&gt;&lt;em&gt;A Silverlight developer could feel a bit bewildered when hearing about visual, sandboxed web parts. In the Sharepoint context, a Web Part is conceptually nothing other than an ASP.NET Web Part. It is an ASP.NET user control which acts as a black box that you can place in one of the zones allowed in the UI layout of a page. Although there is a specific namespace (Microsoft.WebPartPages.WebPart) for the web parts, it is used in rare cases. As usual you can build your own Web Part deriving from System.Web.Ui.WebControls.WebPart. Sharepoint 2010 introduced a few new project templates for Visual Studio 2010, one of these is called &amp;ldquo;Visual Web Part&amp;rdquo;. This template creates a ready-to-deploy Web Part with a built-in user control. Editing the user control in design mode or via code behind you can enrich your pages with new features. &lt;/em&gt;&lt;/p&gt;&lt;p style="text-align: justify;"&gt;&lt;em&gt;The term &amp;ldquo;sandboxed&amp;rdquo; is used in Sharepoint 2010 to describe a restricted environment. A &amp;ldquo;sandboxed solution&amp;rdquo; is something that can have access only to a subset of the Sharepoint server object model and of the .NET 3.5 assemblies (btw Sharepoint 2010 does not use .NET 4.0) and that runs in a restricted code access security policy. Furthermore, server farm admins can regulate resource usage limits for these solutions. A Visual Web Part is &lt;span style="text-decoration: underline;"&gt;not&lt;/span&gt; a sandboxed solution. That&amp;rsquo;s probably why in the Visual Studio Sharepoint Power Tools add-on a new project template called &amp;ldquo;Sandboxed Visual Web Part&amp;rdquo; has been added. A &amp;ldquo;Silverlight Custom Web Part&amp;rdquo; is a &amp;ldquo;Sandboxed Visual Web Part&amp;rdquo; hosting a Silverlight application, nothing more than that.&lt;/em&gt;&lt;/p&gt;&lt;p style="text-align: justify;"&gt;Coming back to the picture above, I put the retrieval of the hierarchy under the Sharepoint side because we will do it by invoking the Server Object Model in a code running on server side. After the hierarchy has been provided it is then put into a custom List (the basic data container of Sharepoint) using a nice technique called &amp;ldquo;Modified Preorder Tree Traversal&amp;rdquo; that we will see later. Finally, the custom List containing the menu hierarchy can be read by the Silverlight application using the Client Object model every time the cache expires. Why using a custom list? Because we can set anonymous access to this list. This allows a Silverlight application to read the List also in the case in which we are not logged in. Don&amp;rsquo;t forget that the Silverlight app uses the default credentials when it queries the server.&lt;/p&gt;&lt;p style="text-align: justify;"&gt;&amp;nbsp;&lt;/p&gt;&lt;h3&gt;Retrieving the hierarchy of the site&lt;/h3&gt;&lt;p style="text-align: justify;"&gt;There is more than one way to get the hierarchy of a Sharepoint site collection. You can use an existing Site Map provider or create your own or, as in this case, use a built-in Sharepoint control, i.e. the &lt;em&gt;SPHierarchyDataSourceControl&lt;/em&gt; which provides hierarchical views of Sharepoint sites, lists, and folders. It is the same control used for the &amp;ldquo;tree view&amp;rdquo; navigation system mentioned in the first part of this article. Extracting the hierarchy from this control is a simple undertaking.&lt;/p&gt;&lt;p style="text-align: justify;"&gt;As shown in the code snippet below it is a matter of instantiating a new &lt;em&gt;SPHierarchyDataSourceControl&lt;/em&gt;, setting some properties in order to define which categories of nodes to retrieve, obtaining a &lt;em&gt;HierarchicalDataSourceView&lt;/em&gt; and performing a Select() over the view to finally have a &lt;em&gt;IHierarchicalEnumerable &lt;/em&gt;collection of menu nodes.&lt;/p&gt;&lt;p style="text-align: justify;"&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;" id="codeSnippet"&gt;&lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; IHierarchicalEnumerable sitemapNodes;&lt;br /&gt;&amp;hellip;&lt;br /&gt;SPHierarchyDataSourceControl HierarchyDataSC = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; SPHierarchyDataSourceControl();&lt;br /&gt;&lt;br /&gt;HierarchyDataSC.IncludeDiscussionFolders = &lt;span style="color: #0000ff;"&gt;true&lt;/span&gt;;&lt;br /&gt;HierarchyDataSC.ShowDocLibChildren = &lt;span style="color: #0000ff;"&gt;true&lt;/span&gt;;&lt;br /&gt;HierarchyDataSC.ShowFolderChildren = &lt;span style="color: #0000ff;"&gt;true&lt;/span&gt;;&lt;br /&gt;HierarchyDataSC.ShowListChildren = &lt;span style="color: #0000ff;"&gt;true&lt;/span&gt;;&lt;br /&gt;HierarchyDataSC.ShowWebChildren = &lt;span style="color: #0000ff;"&gt;true&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;HierarchyDataSC.RootContextObject = &lt;span style="color: #006080;"&gt;"Web"&lt;/span&gt;;&lt;br /&gt;HierarchicalDataSourceView view = HierarchyDataSC.GetHierarchicalViewPublic(&lt;span style="color: #006080;"&gt;""&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;sitemapNodes = view.Select();&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="text-align: justify;"&gt;If you try to include the code above in your Silverlight Custom Web Part unfortunately it won&amp;rsquo;t compile. Why? Because as clarified in the previous paragraph the Web Part is a sandboxed We Part and this prevents you from using some assemblies, amongst them the one needed for the code above. You have two options to get out from the mud: one is to abandon the Silverlight Custom Web Part and use a normal Visual Web Part in the way I described in one of my previous articles entitled &amp;ldquo;&lt;a href="http://www.silverlightshow.net/items/Silverlight-and-Sharepoint-2010-a-step-forward-how-to-build-a-small-Silverlight-4-utility-to-upload-files-in-a-List-or-Library-of-Sharepoint.aspx"&gt;Silverlight and Sharepoint 2010 a step forward: how to build a small Silverlight 4 utility to upload files in a List or Library of Sharepoint&lt;/a&gt;&amp;rdquo;, precisely in paragraph &amp;ldquo;Deploy the Silverlight application using a Visual WebPart&amp;rdquo;. The other is to modify the settings of the Silverlight Custom Web Part in an &amp;ldquo;unconventional&amp;rdquo; way, i.e. by making it become a not-sandboxed solution.&lt;/p&gt;&lt;p style="text-align: justify;"&gt;&amp;nbsp;&lt;/p&gt;&lt;h3 style="text-align: justify;"&gt;Deploy a Silverlight Custom Web Part as a not-sandboxed solution: a dirty trick&lt;/h3&gt;&lt;p&gt;By default when using a Silverlight Custom Web Part, the property &amp;ldquo;Sandboxed Solution&amp;rdquo; of the project is set to true as in the picture below:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/walterf/SandboxedSolution_2.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="SandboxedSolution" alt="SandboxedSolution" src="http://www.silverlightshow.net/Storage/Users/walterf/SandboxedSolution_thumb.png" width="279" height="536" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;If you try to set this property to false and then to include the code above to retrieve the hierarchy, you will be able to build the solution but not to deploy it. The error message that will appear is the following:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/walterf/SandboxedSolution2_2.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="SandboxedSolution2" alt="SandboxedSolution2" src="http://www.silverlightshow.net/Storage/Users/walterf/SandboxedSolution2_thumb.png" width="947" height="117" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="text-align: justify;"&gt;where &amp;ldquo;MenuSCWP&amp;rdquo; is the name I used to replace the default name &amp;ldquo;SilverlightcustomWebPart1&amp;rdquo;. As you can see in the second-last picture this project item is in charge of transporting a &amp;ldquo;MasterpageGallery&amp;rdquo; module in Sharepoint. This module contains the xap file of our Silverlight application. If you open the file &amp;ldquo;Elements.xml&amp;rdquo; nested in the module you can confirm this statement:&lt;/p&gt;&lt;div style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;" id="codeSnippet"&gt;&amp;lt;?xml version=&lt;span style="color: #006080;"&gt;"1.0"&lt;/span&gt; encoding=&lt;span style="color: #006080;"&gt;"utf-8"&lt;/span&gt;?&amp;gt;&lt;br /&gt;&amp;lt;Elements xmlns=&lt;span style="color: #006080;"&gt;"http://schemas.microsoft.com/sharepoint/"&lt;/span&gt;&amp;gt;&lt;br /&gt;  &amp;lt;Module Name=&lt;span style="color: #006080;"&gt;"Menu4U"&lt;/span&gt; Url=&lt;span style="color: #006080;"&gt;"_catalogs/masterpage/ClientBin/$SharePoint.Package.Name$"&lt;/span&gt;&amp;gt;&lt;br /&gt;    &amp;lt;File Path=&lt;span style="color: #006080;"&gt;"Menu4U\Menu4UForSP.xap"&lt;/span&gt; Url=&lt;span style="color: #006080;"&gt;"Menu4UForSP.xap"&lt;/span&gt; /&amp;gt;&lt;br /&gt;  &amp;lt;/Module&amp;gt;&lt;br /&gt;&amp;lt;/Elements&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;p style="text-align: justify;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="text-align: justify;"&gt;And now comes the trick to remove this obstacle, and I would like to warn you: it is a very dirty trick.&lt;/p&gt;&lt;p style="text-align: justify;"&gt;In Visual Studio right-click on the Silverlight custom Web Part item (I renamed it &amp;ldquo;MenuSCWP) as in the picture below:&lt;/p&gt;&lt;p style="text-align: justify;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="text-align: justify;"&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/walterf/Trick1_4.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="Trick1" alt="Trick1" src="http://www.silverlightshow.net/Storage/Users/walterf/Trick1_thumb_1.png" width="529" height="485" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="text-align: justify;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Click on &amp;ldquo;Open Folder in windows Explorer&amp;rdquo; to open the folder. You should see a couple of subdirectories and a file named &amp;ldquo;SharePointProjectItem.spdata&amp;rdquo; as in the picture below:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/walterf/Trick2_4.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="Trick2" alt="Trick2" src="http://www.silverlightshow.net/Storage/Users/walterf/Trick2_thumb_1.png" width="371" height="104" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Open the file. It should have a content similar to this one:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;" id="codeSnippet"&gt;&amp;lt;?xml version=&lt;span style="color: #006080;"&gt;"1.0"&lt;/span&gt; encoding=&lt;span style="color: #006080;"&gt;"utf-8"&lt;/span&gt;?&amp;gt;&lt;br /&gt;&amp;lt;ProjectItem Type=&lt;span style="color: #006080;"&gt;"MicrosoftSilverlightCustomWebPart"&lt;/span&gt; SupportedTrustLevels=&lt;span style="color: #006080;"&gt;"Sandboxed"&lt;/span&gt; SupportedDeploymentScopes=&lt;span style="color: #006080;"&gt;"Site"&lt;/span&gt; xmlns=&lt;span style="color: #006080;"&gt;"http://schemas.microsoft.com/VisualStudio/2010/SharePointTools/SharePointProjectItemModel"&lt;/span&gt;&amp;gt;&lt;br /&gt;  &amp;lt;Files /&amp;gt;&lt;br /&gt;&amp;lt;/ProjectItem&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="text-align: justify;"&gt;Take a look at the &amp;ldquo;SupportedTrustLevels&amp;rdquo; attribute of the projectitem node: actually it is set as &amp;ldquo;Sandboxed&amp;rdquo;. Now write &amp;ldquo;FullTrust&amp;rdquo; instead, and save the file. Come back to Visual Studio and try to deploy the solution. If all the steps have been followed correctly, the solution will be deployed. Pay attention to the fact that when you close the solution and open it again in Visual Studio, the file is overwritten and you have to set the attribute again. It is not so annoying if you make a batch file or a vbscript that performs the replacement for you. You can also launch the execution of the script from the pre-build event.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;h3&gt;Saving the hierarchy in a Sharepoint custom list: the modified preorder traversal tree&lt;/h3&gt;&lt;p style="text-align: justify;"&gt;In the previous paragraph I explained the reason why I want to put the hierarchy into a Custom Sharepoint List: it can be read also by anonymous users. The problem is that a List in Sharepoint is basically a table with rows and columns, while the &lt;em&gt;IHierarchicalEnumerable &lt;/em&gt;object that we have obtained represents a tree hierarchy. How to save a tree-hierarchy in a table then? After a moment of despair I recalled an old article entitled &lt;a href="http://www.sitepoint.com/article/hierarchical-data-database"&gt;Storing Hierarchical Data in a Database&lt;/a&gt; that illustrated an algorithm called &lt;strong&gt;Modified Preorder Tree Traversal&lt;/strong&gt;. The principal assumption of the algorithm is that each node in the hierarchy tree must have a left value and a right value. Then the tree is traversed assigning opportune values for left and right according to the rules shown in the flowchart below:&lt;/p&gt;&lt;p style="text-align: justify;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="text-align: justify;"&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/walterf/FlowChart_2.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="FlowChart" alt="FlowChart" src="http://www.silverlightshow.net/Storage/Users/walterf/FlowChart_thumb.png" width="644" height="397" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="text-align: justify;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="text-align: justify;"&gt;At a first glance it may look a bit complicated but if you try to put on paper a simple tree and assign the left and right values following the flowchart above, it will be a fun exercise. The following picture shows a hierarchy tree, a tree already numbered with the indication of the direction of traversing:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/walterf/TreeNumbered_2.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="TreeNumbered" alt="TreeNumbered" src="http://www.silverlightshow.net/Storage/Users/walterf/TreeNumbered_thumb.png" width="606" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="text-align: justify;"&gt;The nice thing of this approach is that after the hierarchy is put into a table you can retrieve nodes with simple queries. With reference to the picture above, if you want to retrieve the subtree starting from the node title &amp;ldquo;SITE AA&amp;rdquo; you can launch this query:&lt;/p&gt;&lt;p style="text-align: justify;"&gt;&lt;em&gt;&amp;ldquo;SELECT * FROM tree_table WHERE left BETWEEN 3 AND 8 ORDER BY left ASC;&lt;/em&gt;&lt;/p&gt;&lt;p style="text-align: justify;"&gt;If you want all the tree simply write:&lt;/p&gt;&lt;p style="text-align: justify;"&gt;&lt;em&gt;&amp;ldquo;SELECT * FROM tree_table WHERE left BETWEEN 1 AND 22 ORDER BY left ASC;&lt;/em&gt;&lt;/p&gt;&lt;p style="text-align: justify;"&gt;As for the code implementation, I created a class &amp;ldquo;MpttItem&amp;rdquo; representing a single node as below:&lt;/p&gt;&lt;p style="text-align: justify;"&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;" id="codeSnippet"&gt;&lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; MpttItem&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; title;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; Title&lt;br /&gt;    {&lt;br /&gt;        get { &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; title; }&lt;br /&gt;        set { title = &lt;span style="color: #0000ff;"&gt;value&lt;/span&gt;; }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; type;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; Type&lt;br /&gt;    {&lt;br /&gt;        get { &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; type; }&lt;br /&gt;        set { type = &lt;span style="color: #0000ff;"&gt;value&lt;/span&gt;; }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; imageUrl;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; ImageUrl&lt;br /&gt;    {&lt;br /&gt;        get { &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; imageUrl; }&lt;br /&gt;        set { imageUrl = &lt;span style="color: #0000ff;"&gt;value&lt;/span&gt;; }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; serverRelativeUrl;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; ServerRelativeUrl&lt;br /&gt;    {&lt;br /&gt;        get { &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; serverRelativeUrl; }&lt;br /&gt;        set { serverRelativeUrl = &lt;span style="color: #0000ff;"&gt;value&lt;/span&gt;; }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; navigateUrl;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; NavigateUrl&lt;br /&gt;    {&lt;br /&gt;        get { &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; navigateUrl; }&lt;br /&gt;        set { navigateUrl = &lt;span style="color: #0000ff;"&gt;value&lt;/span&gt;; }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; left = 0;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; Left&lt;br /&gt;    {&lt;br /&gt;        get { &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; left; }&lt;br /&gt;        set { left = &lt;span style="color: #0000ff;"&gt;value&lt;/span&gt;; }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; right = 0;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; Right&lt;br /&gt;    {&lt;br /&gt;        get { &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; right; }&lt;br /&gt;        set { right = &lt;span style="color: #0000ff;"&gt;value&lt;/span&gt;; }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; id;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; ID&lt;br /&gt;    {&lt;br /&gt;        get { &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; id; }&lt;br /&gt;        set { id = &lt;span style="color: #0000ff;"&gt;value&lt;/span&gt;; }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;protected&lt;/span&gt; MpttItem parent;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; MpttItem Parent&lt;br /&gt;    {&lt;br /&gt;        get { &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; parent; }&lt;br /&gt;        set { parent = &lt;span style="color: #0000ff;"&gt;value&lt;/span&gt;; }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;protected&lt;/span&gt; IHierarchyData iHierarchyItem;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; IHierarchyData IHierarchyItem&lt;br /&gt;    {&lt;br /&gt;        get { &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; iHierarchyItem; }&lt;br /&gt;        set { iHierarchyItem = &lt;span style="color: #0000ff;"&gt;value&lt;/span&gt;; }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;And then in the code behind the sandboxed (not-sandboxed) Web Part I stored each node in a List of MpttItem using a recursive function as below:&lt;/p&gt;&lt;div style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;" id="codeSnippet"&gt;List&amp;lt;MpttItem&amp;gt; menuRows;&lt;br /&gt;&lt;br /&gt;[&amp;hellip;]&lt;br /&gt;&lt;br /&gt;menuRows = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; List&amp;lt;MpttItem&amp;gt;();&lt;br /&gt;           &lt;br /&gt;MpttItem mpttRootItem = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; MpttItem()&lt;br /&gt;{&lt;br /&gt;    Parent = &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;,&lt;br /&gt;    IHierarchyItem = &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;,&lt;br /&gt;    Title = &lt;span style="color: #006080;"&gt;"root"&lt;/span&gt;,&lt;br /&gt;    Left = 1,&lt;br /&gt;    Right = 0,&lt;br /&gt;&lt;br /&gt;};&lt;br /&gt;menuRows.Add(mpttRootItem);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;foreach&lt;/span&gt; (&lt;span style="color: #0000ff;"&gt;object&lt;/span&gt; item &lt;span style="color: #0000ff;"&gt;in&lt;/span&gt; sitemapNodes)&lt;br /&gt;{&lt;br /&gt;    IHierarchyData menuNode = (IHierarchyData)sitemapNodes.GetHierarchyData(item);&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (menuRows.Count == 1)&lt;br /&gt;    {&lt;br /&gt;        AddMenuRowsRecursive(&lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;, menuNode, 2, 2);&lt;br /&gt;    }&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; startIndex = menuRows[menuRows.Count - 1].Right + 1;&lt;br /&gt;        AddMenuRowsRecursive(&lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;, menuNode, startIndex, startIndex);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;menuRows.Sort(&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;delegate&lt;/span&gt;(MpttItem p1, MpttItem p2)&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; p1.Right.CompareTo(p2.Right);&lt;br /&gt;    }&lt;br /&gt;);&lt;br /&gt;menuRows[0].Right = menuRows[menuRows.Count - 1].Right + 1;&lt;br /&gt;menuRows.Sort(&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;delegate&lt;/span&gt;(MpttItem p1, MpttItem p2)&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; p1.Left.CompareTo(p2.Left);&lt;br /&gt;    }&lt;br /&gt;);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;AddToSPList();&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;The recursive function is the following:&lt;/p&gt;&lt;div style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;" id="codeSnippet"&gt;&lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; AddMenuRowsRecursive(MpttItem mpttParent, IHierarchyData currHIData, &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; leftIndex, &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; rootIndex)&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (mpttParent == &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; leftIndex &amp;gt; rootIndex)&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; 0; &lt;span style="color: #008000;"&gt;// elaboration completed&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; title = GetPropertyDescriptorValue(currHIData, &lt;span style="color: #006080;"&gt;"Name"&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;    Microsoft.SharePoint.Navigation.ISPHierarchyData currHIOtherData = (Microsoft.SharePoint.Navigation.ISPHierarchyData)currHIData.Item;&lt;br /&gt;    &lt;br /&gt;    &lt;span style="color: #008000;"&gt;// look if the current mpttItem was already elaborated&lt;/span&gt;&lt;br /&gt;    MpttItem elaboratedItem = menuRows.Find(i =&amp;gt; ( (i.IHierarchyItem == &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt; || currHIData == &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;) ? &lt;span style="color: #0000ff;"&gt;false&lt;/span&gt; : i.IHierarchyItem.GetHashCode() == currHIData.GetHashCode()));&lt;br /&gt;&lt;br /&gt;    IHierarchyData childHiData = GetFirstAvailableChild(currHIData);&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (childHiData == &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (leftIndex &amp;gt; rootIndex &amp;amp;&amp;amp; elaboratedItem == &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt; &lt;span style="color: #008000;"&gt;/* &amp;amp;&amp;amp; leftIndex &amp;lt; mpttParent.Left + 2*/&lt;/span&gt;)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: #008000;"&gt;// then it is a leaf&lt;/span&gt;&lt;br /&gt;            MpttItem mpttItem = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; MpttItem()&lt;br /&gt;            {&lt;br /&gt;                Parent = mpttParent,&lt;br /&gt;                IHierarchyItem = currHIData,&lt;br /&gt;                Title = title,&lt;br /&gt;                Type = currHIData.Type,&lt;br /&gt;                ServerRelativeUrl = currHIOtherData.ServerRelativeUrl,&lt;br /&gt;                NavigateUrl = SPContext.Current.Web.Site.Url + currHIOtherData.ServerRelativeUrl,&lt;span style="color: #008000;"&gt;//currHIOtherData.NavigateUrl,&lt;/span&gt;&lt;br /&gt;                ImageUrl = currHIOtherData.ImageUrl,&lt;br /&gt;                Left = leftIndex,&lt;br /&gt;                Right = leftIndex + 1&lt;br /&gt;            };&lt;br /&gt;            menuRows.Add(mpttItem);&lt;br /&gt;&lt;br /&gt;            AddMenuRowsRecursive(mpttItem.Parent, mpttItem.Parent.IHierarchyItem, mpttItem.Right + 1, rootIndex);&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; 0;&lt;br /&gt;        }&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (mpttParent == &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;) &lt;br /&gt;                &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; 0;&lt;br /&gt;&lt;br /&gt;            mpttParent.Right = leftIndex;&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (mpttParent.Parent == &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;br /&gt;                &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; 0;&lt;br /&gt;            AddMenuRowsRecursive(mpttParent.Parent, mpttParent.Parent.IHierarchyItem, mpttParent.Right + 1, rootIndex);&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; 0;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: #008000;"&gt;// it is a branch&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (elaboratedItem == &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;br /&gt;        {&lt;br /&gt;            MpttItem mpttItem = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; MpttItem()&lt;br /&gt;            {&lt;br /&gt;                Parent = mpttParent,&lt;br /&gt;                IHierarchyItem = currHIData,&lt;br /&gt;                Title = title,&lt;br /&gt;                Left = leftIndex,&lt;br /&gt;                Type = currHIData.Type,&lt;br /&gt;                ServerRelativeUrl = currHIOtherData.ServerRelativeUrl,&lt;br /&gt;                NavigateUrl = SPContext.Current.Web.Site.Url +  currHIOtherData.ServerRelativeUrl,&lt;span style="color: #008000;"&gt;//currHIOtherData.NavigateUrl,&lt;/span&gt;&lt;br /&gt;                ImageUrl = currHIOtherData.ImageUrl,&lt;br /&gt;            };&lt;br /&gt;            menuRows.Add(mpttItem);&lt;br /&gt;            AddMenuRowsRecursive(mpttItem, childHiData, mpttItem.Left + 1, rootIndex);&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; 0;&lt;br /&gt;        }&lt;br /&gt;        AddMenuRowsRecursive(elaboratedItem, childHiData, leftIndex, rootIndex);&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; 0;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;The AddToSPList() function performs the insertion of the nodes in a Sharepoint custom list which I called &amp;ldquo;MenuTable&amp;rdquo;:&lt;/p&gt;&lt;div style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;" id="codeSnippet"&gt;&lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; AddToSPList()&lt;br /&gt;{&lt;br /&gt;    SPWeb mySite = SPContext.Current.Web;&lt;br /&gt;    SPListItemCollection listItems = mySite.Lists[&lt;span style="color: #006080;"&gt;"MenuTable"&lt;/span&gt;].Items;&lt;br /&gt;    mySite.AllowUnsafeUpdates = &lt;span style="color: #0000ff;"&gt;true&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #008000;"&gt;// clean list&lt;/span&gt;&lt;br /&gt;    PurgeList(listItems);&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;foreach&lt;/span&gt; (MpttItem mpttItem &lt;span style="color: #0000ff;"&gt;in&lt;/span&gt; menuRows)&lt;br /&gt;    {&lt;br /&gt;        SPListItem item = listItems.Add();&lt;br /&gt;&lt;br /&gt;        item[&lt;span style="color: #006080;"&gt;"Left"&lt;/span&gt;] = mpttItem.Left;&lt;br /&gt;        item[&lt;span style="color: #006080;"&gt;"Right"&lt;/span&gt;] = mpttItem.Right;&lt;br /&gt;        item[&lt;span style="color: #006080;"&gt;"Title"&lt;/span&gt;] = mpttItem.Title;&lt;br /&gt;        item[&lt;span style="color: #006080;"&gt;"ImageUrl"&lt;/span&gt;] = mpttItem.ImageUrl;&lt;br /&gt;        item[&lt;span style="color: #006080;"&gt;"NavigateUrl"&lt;/span&gt;] = mpttItem.NavigateUrl;&lt;br /&gt;        item[&lt;span style="color: #006080;"&gt;"ServerRelativeUrl"&lt;/span&gt;] = mpttItem.ServerRelativeUrl;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (mpttItem.Parent != &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;br /&gt;        {&lt;br /&gt;            item[&lt;span style="color: #006080;"&gt;"ParentLeft"&lt;/span&gt;] = mpttItem.Parent.Left;&lt;br /&gt;            item[&lt;span style="color: #006080;"&gt;"ParentRight"&lt;/span&gt;] = mpttItem.Parent.Right;&lt;br /&gt;        }&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;br /&gt;        {&lt;br /&gt;            item[&lt;span style="color: #006080;"&gt;"ParentLeft"&lt;/span&gt;] = menuRows[0].Left;&lt;br /&gt;            item[&lt;span style="color: #006080;"&gt;"ParentRight"&lt;/span&gt;] =menuRows[0].Right;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        item.Update();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;h3&gt;The source code&lt;/h3&gt;&lt;p style="text-align: justify;"&gt;At this &lt;a href="http://www.snello.it/Samples/SLMenuForSP/SPNavigationSilverlight.zip" target="_blank"&gt;link&lt;/a&gt; you find the complete solution discussed in this article. It is not an optimized project but a starting point ready to be improved if you want to create your own Silverlight menu for Sharepoint. It does not contain any cache management either from server side or client side. It is left as an exercise for you. In order to put the menu in practice it is recommended to put it in a master page using Sharepoint Designer.&lt;/p&gt;&lt;h3&gt;Summary&lt;/h3&gt;&lt;p style="text-align: justify;"&gt;In this second part we have seen how to implement a Silverlight menu using a so called &amp;ldquo;server approach&amp;rdquo; where the retrieval of the hierarchy is made at the server side. We have learned a dirty trick to &amp;ldquo;un-sandbox&amp;rdquo; a Silverlight Custom Web Part and a way to retrieve the hierarchy. Then we have explored a fun method to save the hierarchy in a table so that it can be read by the Silverligt menu also in an anonymous context.&lt;/p&gt;</description>      <link>http://www.silverlightshow.net/items/Silverlight-and-Sharepoint-working-together-a-Silverlight-menu-for-Sharepoint-Part-2.aspx</link>      <author>editorial@silverlightshow.net (Walter Ferrari )</author>      <comments>http://www.silverlightshow.net/items/Silverlight-and-Sharepoint-working-together-a-Silverlight-menu-for-Sharepoint-Part-2.aspx#comments</comments>      <guid isPermaLink="true">http://www.silverlightshow.net/items/Silverlight-and-Sharepoint-working-together-a-Silverlight-menu-for-Sharepoint-Part-2.aspx</guid>      <pubDate>Mon, 28 Nov 2011 13:56:00 GMT</pubDate>    </item>    <item>      <title>Windows Client Developer Roundup 085 for 11/28/2011</title>      <author>Pete Brown	</author>      <link>http://10rem.net/blog/2011/11/28/windows-client-developer-roundup-085-for-11-28-2011</link>      <pubDate>Mon, 28 Nov 2011 04:03:08 GMT</pubDate>      <guid>http://10rem.net/blog/2011/11/28/windows-client-developer-roundup-085-for-11-28-2011</guid>      <description>&lt;p&gt;The Windows Client Developer Roundup aggregates information ofinterest to Windows Client Developers, including &lt;ahref="http://dev.windows.com/"&gt;WinRT XAML&lt;/a&gt;, &lt;ahref="http://windowsclient.net/"&gt;WPF&lt;/a&gt;, &lt;ahref="http://silverlight.net/"&gt;Silverlight&lt;/a&gt;, &lt;ahref="http://msdn.microsoft.com/en-us/visualc/default.aspx"&gt;VisualC++&lt;/a&gt;, &lt;a href="http://creators.xna.com/"&gt;XNA&lt;/a&gt;, &lt;ahref="http://expression.microsoft.com/"&gt;Expression Blend&lt;/a&gt;, &lt;ahref="http://www.microsoft.com/surface/"&gt;Surface&lt;/a&gt;, &lt;ahref="http://msdn.microsoft.com/en-us/windows/default.aspx"&gt;Windows7&lt;/a&gt;, &lt;ahref="http://msdn.microsoft.com/en-us/ff380145.aspx"&gt;WindowsPhone&lt;/a&gt;, Visual Studio, &lt;ahref="http://silverlight.net/riaservices/"&gt;WCF RIA Services&lt;/a&gt; andmore. Sometimes I even include a little jQuery and HTML5. If youhave something interesting you've done or have run across, or youblog regularly on the topics included here, please send me the URLand brief description via the &lt;a href="http://10rem.net/contact"&gt;contactlink&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Note that I've started breaking the Netduino, Electronics,Robotics, Synthesizer and similar content into a new roundup seriescalled the &lt;a href="http://10rem.net/blog?filterby=MakerRoundup"&gt;Maker GeekRoundup&lt;/a&gt;.&lt;/p&gt;&lt;h3&gt;Shout-Outs&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://mottishaked.com/training/dot-net-tutorial"&gt;.NETTutorial: Learn .NET and C# interactively&lt;/a&gt; (Motti Shaked)&lt;/li&gt;&lt;li&gt;&lt;ahref="http://blogs.msdn.com/b/vcblog/archive/2011/11/24/10241128.aspx"&gt;Announcing GoingNative 2012 Conference&lt;/a&gt; (Visual C++ TeamBlog)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Windows 8 and WinRT/Metro General&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;ahref="http://blogs.msdn.com/b/vcblog/archive/2011/10/31/10231530.aspx"&gt;Try It Now: Use PPL to Produce Windows 8 AsynchronousOperations&lt;/a&gt; (Visual C++ Team Blog)&lt;/li&gt;&lt;li&gt;&lt;ahref="http://blogs.msdn.com/b/visualstudio/archive/2011/11/01/debugging-contracts-using-windows-simulator.aspx"&gt;Debugging Contracts using Windows Simulator&lt;/a&gt; (Visual StudioBlog)&lt;/li&gt;&lt;li&gt;&lt;ahref="http://blogs.msdn.com/b/seealso/archive/2011/10/14/handling-orientation-changes-and-setting-preferred-orientation-in-metro-style-apps.aspx"&gt;Handling orientation changes and setting preferred orientation inMetro style apps&lt;/a&gt; (Gus Class)&lt;/li&gt;&lt;li&gt;&lt;ahref="http://michaelcrump.net/archive/2011/11/25/1360x768x32-resolution-in-windows-8-in-virtualbox.aspx"&gt;1360x768x32 Resolution in Windows 8 in VirtualBox&lt;/a&gt; (MichaelCrump)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;XAML Technologies (Silverlight, WPF, WinRT Metro XAML)&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;ahref="http://blog.quppa.net/2011/10/24/windows-theme-fonts-redux-sample-code/"&gt;Windows Theme Fonts Redux &amp;amp; Sample Code&lt;/a&gt; (Quppa's Blog)&lt;/li&gt;&lt;li&gt;&lt;ahref="http://www.jonathanantoine.com/2011/11/24/wpf-4-5-%e2%80%93-part-13-binding-to-types-that-implement-icustomtypeprovider-2/"&gt;WPF 4.5 - Part 13 : binding to types that ImplementICustomTypeProvider&lt;/a&gt; (Jonathan Antoine)&lt;/li&gt;&lt;li&gt;&lt;ahref="http://michaelcrump.net/archive/2011/10/12/adding-an-application-bar-to-your-xaml-metro-applications.aspx"&gt;Adding an Application Bar to your XAML Metro Applications.&lt;/a&gt;(Michael Crump)&lt;/li&gt;&lt;li&gt;&lt;ahref="http://www.scottlogic.co.uk/blog/colin/2011/11/an-introduction-to-semantic-zoom-in-windows-8-metro/"&gt;An Introduction to Semantic Zoom in Windows 8 Metro&lt;/a&gt; (ColinEberhardt)&lt;/li&gt;&lt;li&gt;&lt;ahref="http://csharperimage.jeremylikness.com/2011/11/handling-extremely-large-data-sets-in.html"&gt;Handling Extremely Large Data Sets in Silverlight&lt;/a&gt; (JeremyLikness)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Direct X Technologies (DirectX, XNA, WinRT DirectX, General GPUand Game Programming)&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;ahref="http://blogs.msdn.com/b/vcblog/archive/2011/11/08/10235150.aspx"&gt;Game Debugging in Visual Studio 11&lt;/a&gt; (Visual C++ Team Blog)&lt;/li&gt;&lt;li&gt;&lt;ahref="http://blogs.msdn.com/b/shawnhar/archive/2011/11/07/stand-still-and-they-won-t-see-you.aspx"&gt;Stand still and they won't see you&lt;/a&gt; (Shawn Hargreaves)&lt;/li&gt;&lt;li&gt;&lt;ahref="http://blogs.msdn.com/b/rezanour/archive/2011/11/20/math-primer-series-matrices-iii-affine-transformations-and-matrices.aspx"&gt;Math Primer Series: Matrices III: Affine Transformations andMatrices&lt;/a&gt; (Reza Nourai)&lt;/li&gt;&lt;li&gt;&lt;ahref="http://blogs.msdn.com/b/shawnhar/archive/2011/11/18/temporal-sampling-frequency-aka-framerate.aspx"&gt;Temporal sampling frequency (aka 'framerate')&lt;/a&gt; (ShawnHargreaves)&lt;/li&gt;&lt;li&gt;&lt;ahref="http://jcoluna.wordpress.com/2011/11/17/xna-light-pre-pass-instancing/"&gt;XNA Light Pre-Pass: Instancing&lt;/a&gt; (J. Coluna)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;C++ and Native Development&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;ahref="http://blogs.msdn.com/b/vcblog/archive/2011/10/20/10228473.aspx"&gt;Inside the C++/CX Design&lt;/a&gt; (Visual C++ Team Blog)&lt;/li&gt;&lt;li&gt;&lt;ahref="http://blogs.msdn.com/b/vcblog/archive/2011/10/31/10231784.aspx"&gt;GoingNative 3: Marian Luparu answers about C++/CX&lt;/a&gt; (Visual C++Team Blog)&lt;/li&gt;&lt;li&gt;&lt;ahref="http://www.blogmfc.com/n2011/11/09/c-code-analysis-in-visual-studio-2012/"&gt;C++ code analysis in Visual Studio 2012&lt;/a&gt; (BlogMFC)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Visual Studio and .NET General&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;ahref="http://blogs.msdn.com/b/somasegar/archive/2011/11/17/visual-studio-11-ide-advances.aspx"&gt;Visual Studio 11 IDE Advances&lt;/a&gt; (Soma)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;NUI (Kinect, Surface, More)&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;ahref="http://apeoholic.se/post/Our-Kinect-Controlled-livingroom.aspx"&gt;Our Kinect Controlled living room&lt;/a&gt; (Apeoholic's blog)&lt;/li&gt;&lt;li&gt;&lt;ahref="http://kinecthacks.net/kinect-controlled-treadmill-and-robot-navigation/"&gt;Kinect Controlled Treadmill and Robot Navigation&lt;/a&gt;(KinectHacks)&lt;/li&gt;&lt;li&gt;&lt;ahref="http://robrelyea.wordpress.com/2011/11/13/my-shift-from-wpf-xaml-to-kinect-for-windows/"&gt;My shift from WPF-XAML to Kinect for Windows&lt;/a&gt; (Rob Relyea)&lt;/li&gt;&lt;li&gt;&lt;ahref="http://michaelcrump.net/archive/2011/11/14/information-on-upgrading-kinect-applications-to-ms-sdk-beta-2.aspx"&gt;Information on upgrading Kinect Applications to MS SDK Beta 2.&lt;/a&gt;(Michael Crump)&lt;/li&gt;&lt;li&gt;&lt;ahref="http://blogs.msdn.com/b/surface/archive/2011/11/17/preorder.aspx"&gt;Samsung SUR40 for Microsoft Surface Now Available forPre-order!&lt;/a&gt; (Surface Blog)&lt;/li&gt;&lt;li&gt;&lt;ahref="http://robrelyea.wordpress.com/2011/11/13/mobile-developers-and-kinect/"&gt;Mobile developers and Kinect&lt;/a&gt; (Rob Relyea)&lt;/li&gt;&lt;li&gt;&lt;ahref="http://blogs.msdn.com/b/surface/archive/2011/11/16/bown2011.aspx"&gt;Samsung SUR40 for Microsoft Surface Receives "Best of What's New"Award from Popular Science&lt;/a&gt; (Surface Blog)&lt;/li&gt;&lt;li&gt;&lt;ahref="http://channel9.msdn.com/coding4fun/kinect/Kinect-with-your-Eclipse-IDE"&gt;"Kinect with your Eclipse IDE"&lt;/a&gt; (Channel 9)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Off-Topic Fun&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;ahref="http://www.smbc-comics.com/index.php?db=comics&amp;amp;id=2436"&gt;Graphof Life Satisfaction for nerds vs. everyone else&lt;/a&gt; (SMBC)&lt;/li&gt;&lt;li&gt;&lt;ahref="http://www.toxel.com/inspiration/2011/11/25/walkable-roller-coaster/"&gt;Walkable Roller Coaster&lt;/a&gt; (Toxel) (Watch out for the loop!)&lt;/li&gt;&lt;li&gt;&lt;a href="http://xkcd.com/981/"&gt;xkcd: P*rn Folder&lt;/a&gt;(xkcd)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/7EbbaIS5wfqienY2U3e9_Tgovjc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7EbbaIS5wfqienY2U3e9_Tgovjc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/7EbbaIS5wfqienY2U3e9_Tgovjc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7EbbaIS5wfqienY2U3e9_Tgovjc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/PeteBrown-Silverlight/~4/BfUvejuqsKE" height="1" width="1"/&gt;</description>    </item>    <item>      <title>Silverlight Show: 10 Laps around Silverlight 5 (Part 7 of 10)</title>      <link>http://feedproxy.google.com/~r/TheSilverlightBlog/~3/y6mO5phpf-I/silverlight-show-10-laps-around-silverlight-5-part-7-of-10.aspx</link>      <pubDate>Fri, 25 Nov 2011 17:19:31 GMT</pubDate>      <guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10241593</guid>      <creator xmlns="http://purl.org/dc/elements/1.1/">Silverlight Team</creator>      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">1</comments>      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/silverlight/rsscomments.aspx?WeblogPostID=10241593</commentRss>      <comments>http://blogs.msdn.com/b/silverlight/archive/2011/11/25/silverlight-show-10-laps-around-silverlight-5-part-7-of-10.aspx#comments</comments>      <description>&lt;p&gt;In this article, a discussion of a few more operating system integration features in Silverlight 5 including: Default Filename for SaveFileDialog, 64-bit browser support and Power Awareness for Media Applications. Please review the Roadmap for the series before going any further.&lt;/p&gt;  &lt;h2&gt;The Roadmap for this Series&lt;/h2&gt;  &lt;p&gt;Included, the Roadmap for the series below as you may want to visit other sections as you learn Silverlight 5. I picked the following features as I thought that you may find them useful in your day-to-day work. If you want a specific topic covered then please leave it in the comments below.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://www.silverlightshow.net/items/Silverlight-5-Part-1-of-10.aspx"&gt;Introduction to SL5 – provides a brief history of Silverlight and relevant links.&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-2-of-10.aspx"&gt;Binding - Ancestor Relative Source Binding and Implicit Data Templates.&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-4-of-10.aspx"&gt;Graphics - XNA 3D API and Improved Graphics Stack.&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-4-of-10.aspx"&gt;Media - Low-Latency Sound using XNA and Remote Control and Media Command (Keys) Support.&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/silverlight/archive/2011/11/18/silverlight-show-10-laps-around-silverlight-5-part-5-of-10.aspx"&gt;Text - Text Tracking and Leading, Linked and Multi-column Text, OpenType Support, Pixel Snapped Text and TextOptions.&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-6-of-10.aspx"&gt;Operating System Integration Part 1 - P/Invoke, Multiple Windows and Unrestricted File System Access in Full Trust.&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Operating System Integration Part 2 - [This Post] - Default Filename for SaveFileDialog, 64-bit browser support and Power Awareness. &lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;Productivity and Performance - XAML Binding Debugging, Parser Performance Improvements and Multi-core JIT for improved start-up time. &lt;/li&gt;    &lt;li&gt;Controls - Double and Triple click support, PivotViewer and ComboBox Type-Ahead. &lt;/li&gt;    &lt;li&gt;Other items - In-Browser HTML, PostScript and Tasks for TPL. &lt;/li&gt; &lt;/ol&gt;  &lt;h2&gt;Default Filename for SaveFileDialog&lt;/h2&gt;  &lt;p&gt;In previous version of Silverlight, you could not specify the default filename for the SaveFileDialog message. In Silverlight 5 you can very easily. &lt;/p&gt;  &lt;p&gt;Fire up a new Silverlight 5 project and give it any name that you want. We are going to create a simple application that contains one button and when the user clicks it the SaveFileDialog will appear with a default filename. &lt;/p&gt;  &lt;p&gt;Switch over to the MainPage.xaml and add in the following code:&lt;/p&gt;  &lt;blockquote&gt;   &lt;pre&gt;   1: &amp;lt;StackPanel HorizontalAlignment=&amp;quot;Center&amp;quot; VerticalAlignment=&amp;quot;Center&amp;quot;&amp;gt;&lt;/pre&gt;  &lt;pre&gt;   2:         &amp;lt;Button x:Name=&amp;quot;btnSaveFile&amp;quot; Content=&amp;quot;Save File Dialog&amp;quot; Click=&amp;quot;btnSaveFile_Click&amp;quot;/&amp;gt;&lt;/pre&gt;  &lt;pre&gt;   3: &amp;lt;/StackPanel&amp;gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;p&gt;Let’s switch back over to the MainPage.xaml.cs and add the following code to our button event handler:&lt;/p&gt;&lt;blockquote&gt;  &lt;pre&gt;   1: private void btnSaveFile_Click(object sender, RoutedEventArgs e)&lt;/pre&gt;  &lt;pre&gt;   2:        {&lt;/pre&gt;  &lt;pre&gt;   3:            var saveFileDialog1 = new SaveFileDialog&lt;/pre&gt;  &lt;pre&gt;   4:                                      {&lt;/pre&gt;  &lt;pre&gt;   5:                                          Filter = &amp;quot;JPeg Image|*.jpg|Bitmap Image|*.bmp|Gif Image|*.gif&amp;quot;,&lt;/pre&gt;  &lt;pre&gt;   6:                                          DefaultFileName = &amp;quot;YouCanNowHaveADefaultFileName.jpeg&amp;quot;&lt;/pre&gt;  &lt;pre&gt;   7:                                      };&lt;/pre&gt;  &lt;pre&gt;   8:            saveFileDialog1.ShowDialog();&lt;/pre&gt;  &lt;pre&gt;   9:        }&lt;/pre&gt;&lt;/blockquote&gt;&lt;p&gt;If we run the application now, we will see the following prompt. &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-7-of-10.aspx"&gt;Read the full post&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10241593" width="1" height="1"&gt;&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/oyNIVeMfRM6nNANjq8hviwpktb0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oyNIVeMfRM6nNANjq8hviwpktb0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/oyNIVeMfRM6nNANjq8hviwpktb0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oyNIVeMfRM6nNANjq8hviwpktb0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;&lt;a href="http://feeds.feedburner.com/~ff/TheSilverlightBlog?a=y6mO5phpf-I:mmbxW3rueaw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheSilverlightBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheSilverlightBlog?a=y6mO5phpf-I:mmbxW3rueaw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheSilverlightBlog?i=y6mO5phpf-I:mmbxW3rueaw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheSilverlightBlog?a=y6mO5phpf-I:mmbxW3rueaw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheSilverlightBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheSilverlightBlog/~4/y6mO5phpf-I" height="1" width="1"/&gt;</description>      <category domain="http://blogs.msdn.com/b/silverlight/archive/tags/Tips+and+Training/">Tips and Training</category>      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://blogs.msdn.com/b/silverlight/archive/2011/11/25/silverlight-show-10-laps-around-silverlight-5-part-7-of-10.aspx</origLink>    </item>    <item>      <title>Windows Phone 7.5 - Play with music</title>      <description>&lt;p style="text-align: justify;"&gt;If you get the Windows Phone "Mango" update on your phone, and you are use to listen to music on your phone, you have for sure noticed some improvements in the music capabilities of the phone. Since the release of the OS7.0, the music hub is an important application that is able to integrate with the Zune marketplace and enable download and listen of music on the phone. &lt;/p&gt;&lt;div style="border:1px solid #dddddd;padding-bottom: 5px; background-color: #f3f3f3; margin-top: 5px; padding-left: 10px; width: 200px; float: right; margin-left: 10px; padding-top: 5px;"&gt;&lt;h3&gt;Don't miss...&lt;/h3&gt;&lt;ul style="list-style-type: circle; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-left: 20px; font-size: 12px;"&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/items/Data-Access-Strategies-WebClient.aspx"&gt;The article series 'Windows Phone 7 Data Access Strategies'&lt;/a&gt; &lt;/li&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/video/WP-Sockets-webinar-recording.aspx"&gt;&lt;strong&gt;Recording of the webinar&lt;/strong&gt;: Networking with Sockets in Windows Phone&lt;/a&gt;&lt;/li&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/ebooks/wp7_exam.aspx"&gt;The ebook 'Getting Ready for the Windows Phone Exam 70-599':&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;p style="padding-bottom: 5px; text-align: center;"&gt;&lt;a href="http://www.silverlightshow.net/ebooks/wp7_exam.aspx"&gt;&lt;img style="border:0px solid; width: 100px; height: 141px;" alt="Getting Ready for the Windows Phone Exam 70-599" src="http://www.silverlightshow.net/Storage/Ebooks/wp7_exam_cover.png" /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size: 13px;"&gt;($4.99)&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;&lt;a href="http://www.silverlightshow.net/ebooks/wp7_exam.aspx"&gt;&lt;/a&gt;&lt;p style="font-size: 12px; text-align: center;"&gt;&lt;a href="http://www.silverlightshow.net/ebooks.aspx"&gt;All SilverlightShow Ebooks&lt;/a&gt;&amp;nbsp;&lt;img alt="" src="http://www.silverlightshow.net/Storage/arrow-content.jpg" /&gt;&lt;/p&gt;&lt;/div&gt;One of the beautiful capabilities of the hub is the ability of playing music also when the phone is doing other things. Once you started a playlist you can exit from the music hub and the music continue to play in background also if you lock the phone.&lt;p style="text-align: justify;"&gt;In the new OS7.5 these capabilities are improved because now you get a new set of controls in the lock screen that let you control the music without the need of unlocking the phone. But this is only the most visible change in the music capabilities. From the programming side you have much more opportunities of integrating with the music hub, feeding and controlling the player from inside your applications.&lt;/p&gt;&lt;h4 style="text-align: justify;"&gt;The role of Agents&lt;/h4&gt;&lt;p style="text-align: justify;"&gt;Playing background audio is not simply feeding something with a playlist and then leave it free of managing the events occured during its lifetime. if so, it would be very limitative and it would be much simpler to load songs on the music hub and the let it manages them. In Windows Phone 7.5 we can instead directly manage the playlists and being notified about the commands sent by the user from the lock screen and from the audio player bar that usually opens when you press the volume switch.&lt;/p&gt;&lt;p style="text-align: justify;"&gt;As you can figure, these tasks can be accomplished only starting a background thread that runs also when the application exited. It is natural to understand the we have to do some work when there are other application running on the screen and also when the lock screen has been teared down.&lt;/p&gt;&lt;p style="text-align: justify;"&gt;From the OS7.5 the phone has the capability of running background agents and to control the tracks you have to play, you have to build a special kind of agent. There are two classes you can inherit from to start this work. The AudioPlayerAgent is made to be feed with tracks that you can stream from the network or from the Isolated Storage; it is the perfect point to create your own player to connect with a live service and so on. With the AudioStreamingAgent instead you can create your own stream on the fly or you can manipulate different formats not directly supported by the build-in player. For the sample of this article I will show the basic AudioPlayerAgent. First of all open Visual Studio and select File -&amp;gt; New -&amp;gt; Project&lt;/p&gt;&lt;p style="text-align: justify;"&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/AndreaBoschin/_____Capture.png"&gt;&lt;img style="margin-top: 0px; margin-right: 5px; margin-bottom: 0px; margin-left: 0px; display: inline;" title="Capture" alt="Capture" src="http://www.silverlightshow.net/Storage/Users/AndreaBoschin/____Capture_thumb.png" width="715" height="517" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="text-align: justify;"&gt;As you can see there are two project templates that are ready to start your work. Side by side with the generic Scheduled Task Agent there are an Audio Playback Agent and an Audio Streaming Agent. Select the first one as in the figure and then OK to ask to Visualo Studio of create the skeleton of the project. The project that is created by Visual Studio contains a single class called AudioPlayer. &lt;/p&gt;&lt;p style="text-align: justify;"&gt;The project you have created is a class library, so you have to add its reference to a Windows Phone Application. After you done this task your task is ready to be used. Under the hoods Visual Studio addedd a reference to your AudioPlayerAgent into the WMAppManifest.xaml. This reference simply add the class to the extended tasks that runs in background:&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Tasks&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt;   &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;DefaultTask&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Name&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="_default"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;NavigationPage&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="MainPage.xaml"&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;   &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;ExtendedTask&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Name&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="BackgroundTask"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;BackgroundServiceAgent&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Specifier&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="AudioPlayerAgent"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Name&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="AudioPlaybackAgent1"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Source&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="AudioPlaybackAgent1"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Type&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="AudioPlaybackAgent1.AudioPlayer"&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;   &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;ExtendedTask&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;Tasks&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;h4 style="text-align: justify;"&gt;Manage the playlist&lt;/h4&gt;&lt;p style="text-align: justify;"&gt;Now that the Agent is ready to start, it is time to understand its internal work and to write the code to manage the playlist and feed the player. Look at the AudioPlayerAgent class:&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; AudioPlayerAgent : BackgroundAgent&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;virtual&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; OnError(&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;         BackgroundAudioPlayer player, &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;         AudioTrack track, &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;         Exception error, &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;bool&lt;/span&gt; isFatal);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;virtual&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; OnPlayStateChanged(&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt;         BackgroundAudioPlayer player, &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt;         AudioTrack track, &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt;  11:&lt;/span&gt;         PlayState playState);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt;  12:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;virtual&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; OnUserAction(&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt;  13:&lt;/span&gt;         BackgroundAudioPlayer player, &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum14" style="color: #606060;"&gt;  14:&lt;/span&gt;         AudioTrack track, &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum15" style="color: #606060;"&gt;  15:&lt;/span&gt;         UserAction action, &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum16" style="color: #606060;"&gt;  16:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;object&lt;/span&gt; param);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum17" style="color: #606060;"&gt;  17:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="text-align: justify;"&gt;There are two key method you have to handle. The OnUserAction method is made to notify the actions of the user on the playback controls. When the user hits a button on the lock screen this method is called and you are in charge of taking the right action on the current playing track or on the playlist. The method notifies about track-related actions like Play, Pause, Stop, Forward and Rewind but also on SkipNext and SkipPrevious that ask to change the currently playing track.&lt;/p&gt;&lt;p style="text-align: justify;"&gt; The OnPlayerStateChanged method instead, notifies about the progress of the playback and about the changes of its state. So, as an example, if the track is ended this method is called with PlayState.TrackEnded and you have to feed the player with the next track available. Mostly important is that you get notifications also about the actions you trigger in the OnUserAction method. &lt;/p&gt;&lt;p style="text-align: justify;"&gt;The AudioPlayer class created by the Visual Studio template already implements lot of the logic needed to make it work. The sole thing it miss is the tracks. So at the very start of the class add an array of AudioTrack instance and a _current property that identified the number of the current track running in this array:&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;volatile int&lt;/span&gt; _current = 0;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; AudioTrack[] tracks = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; AudioTrack[] &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; AudioTrack(&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Uri(&lt;span style="color: #006080;"&gt;"Hard As Rock.mp3"&lt;/span&gt;, UriKind.Relative),&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;         &lt;span style="color: #006080;"&gt;"Hard as rock"&lt;/span&gt;, &lt;span style="color: #006080;"&gt;"AC/DC"&lt;/span&gt;, &lt;span style="color: #006080;"&gt;"Ballbreaker"&lt;/span&gt;, &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Uri(&lt;span style="color: #006080;"&gt;"Hard As Rock.jpg"&lt;/span&gt;, UriKind.Relative)),&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; AudioTrack(&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Uri(&lt;span style="color: #006080;"&gt;"Run Around.mp3"&lt;/span&gt;, UriKind.Relative),&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt;         &lt;span style="color: #006080;"&gt;"Run around"&lt;/span&gt;, &lt;span style="color: #006080;"&gt;"Blues traveller"&lt;/span&gt;, &lt;span style="color: #006080;"&gt;"Four"&lt;/span&gt;, &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Uri(&lt;span style="color: #006080;"&gt;"Four.jpg"&lt;/span&gt;, UriKind.Relative)),&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt; };&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="text-align: justify;"&gt;In this sample I statically declare the array but you can obviously load it from every kind of media. It can be loaded from the network or generate it dinamically. Also you do not need to have a static array but you can also generate the next track at runtime on a random basis. Important to say is that the _current variable is declared static because the AudioPlayer class is not persistent but an instance is created every time an action is required. &lt;/p&gt;&lt;p style="text-align: justify;"&gt;The AudioTrack class represent a single track of the playlist. It is provided with properties for Title, Artist, Album, AlbumArt and so on. You can use these properties to provide information to the phone and it shows them whenever it is required. The template of the AudioPlayer class declares a GetNextTrack and a GetPreviousTrack methods. Implementing the body of these method let you feed the player with the right track.&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; AudioTrack GetNextTrack()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;    AudioTrack track = &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.tracks[_current];&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;    &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (++_current &amp;gt;= &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.tracks.Length) _current = 0;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;    &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; track;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; AudioTrack GetPreviousTrack()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt;    AudioTrack track = &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.tracks[_current];&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt;  11:&lt;/span&gt;    &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (--_current &amp;lt; 0) _current = &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.tracks.Length - 1;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt;  12:&lt;/span&gt;    &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; track;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt;  13:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;h4 style="text-align: justify;"&gt;Starting the task &lt;/h4&gt;&lt;p style="text-align: justify;"&gt;Adding this class to the WMAppManifest.xaml does not automatically start the playback. To make the last step you have to use the BackgroundAudioPlayer class. This class is designed to simulate the actions of an user and it has methods to Play, Pause, Stop and so on. So when you need to start the audio you have to call the Play method. After this action the phone loads the AudioPlayerAgent and starts the music. You can also use this class to control le lifetime of the track and playlist from your own application user interface:&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; bPlay_Click(&lt;span style="color: #0000ff;"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;    &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (BackgroundAudioPlayer.Instance.PlayerState != PlayState.Playing)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;        BackgroundAudioPlayer.Instance.Play();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; bPause_Click(&lt;span style="color: #0000ff;"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt;    &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (BackgroundAudioPlayer.Instance.CanPause &amp;amp;&amp;amp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt;        BackgroundAudioPlayer.Instance.PlayerState == PlayState.Playing)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt;  11:&lt;/span&gt;        BackgroundAudioPlayer.Instance.Pause();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt;  12:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt;  13:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum14" style="color: #606060;"&gt;  14:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; bStop_Click(&lt;span style="color: #0000ff;"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum15" style="color: #606060;"&gt;  15:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum16" style="color: #606060;"&gt;  16:&lt;/span&gt;    &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (BackgroundAudioPlayer.Instance.PlayerState == PlayState.Playing)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum17" style="color: #606060;"&gt;  17:&lt;/span&gt;        BackgroundAudioPlayer.Instance.Stop();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum18" style="color: #606060;"&gt;  18:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum19" style="color: #606060;"&gt;  19:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum20" style="color: #606060;"&gt;  20:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; bNext_Click(&lt;span style="color: #0000ff;"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum21" style="color: #606060;"&gt;  21:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum22" style="color: #606060;"&gt;  22:&lt;/span&gt;    &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (BackgroundAudioPlayer.Instance.PlayerState == PlayState.Playing)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum23" style="color: #606060;"&gt;  23:&lt;/span&gt;        BackgroundAudioPlayer.Instance.SkipNext();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum24" style="color: #606060;"&gt;  24:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum25" style="color: #606060;"&gt;  25:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum26" style="color: #606060;"&gt;  26:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; bPrev_Click(&lt;span style="color: #0000ff;"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum27" style="color: #606060;"&gt;  27:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum28" style="color: #606060;"&gt;  28:&lt;/span&gt;    &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (BackgroundAudioPlayer.Instance.PlayerState == PlayState.Playing)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum29" style="color: #606060;"&gt;  29:&lt;/span&gt;        BackgroundAudioPlayer.Instance.SkipPrevious();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum30" style="color: #606060;"&gt;  30:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="text-align: justify;"&gt;As you can see the PlayerState property is used to detect the current state of the player. Calling Play when the player is currntly playing will raise an exception so you have to carefully test the current state to avoid unwanter errors. The PlayerState is also useful if it is used in the PlayerStateChanged event that is notified when the value changes. In this snipped it is used to change the buttons IsEnabled property according with the state:&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; Instance_PlayStateChanged(&lt;span style="color: #0000ff;"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;     PlayState state = BackgroundAudioPlayer.Instance.PlayerState;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.bPlay.IsEnabled = state != PlayState.Playing &amp;amp;&amp;amp; state != PlayState.Unknown;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.bPause.IsEnabled = state == PlayState.Playing &amp;amp;&amp;amp; state != PlayState.Unknown;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.bStop.IsEnabled = state == PlayState.Playing &amp;amp;&amp;amp; state != PlayState.Unknown;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.bNext.IsEnabled = state == PlayState.Playing &amp;amp;&amp;amp; state != PlayState.Unknown;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.bPrev.IsEnabled = state == PlayState.Playing &amp;amp;&amp;amp; state != PlayState.Unknown;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt;  11:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (BackgroundAudioPlayer.Instance.Track != &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt;  12:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt;  13:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.txtTrack.Text = BackgroundAudioPlayer.Instance.Track.Title;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum14" style="color: #606060;"&gt;  14:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.txtAuthor.Text = BackgroundAudioPlayer.Instance.Track.Artist;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum15" style="color: #606060;"&gt;  15:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.txtAlbum.Text = BackgroundAudioPlayer.Instance.Track.Album;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum16" style="color: #606060;"&gt;  16:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.txtDuration.Text = BackgroundAudioPlayer.Instance.Track.Duration.ToString();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum17" style="color: #606060;"&gt;  17:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum18" style="color: #606060;"&gt;  18:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; (IsolatedStorageFile file = IsolatedStorageFile.GetUserStoreForApplication())&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum19" style="color: #606060;"&gt;  19:&lt;/span&gt;         {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum20" style="color: #606060;"&gt;  20:&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; coverFile = Uri.UnescapeDataString(BackgroundAudioPlayer.Instance.Track.AlbumArt.OriginalString);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum21" style="color: #606060;"&gt;  21:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum22" style="color: #606060;"&gt;  22:&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (file.FileExists(coverFile))&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum23" style="color: #606060;"&gt;  23:&lt;/span&gt;             {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum24" style="color: #606060;"&gt;  24:&lt;/span&gt;                 Stream stream = file.OpenFile(coverFile, FileMode.Open, FileAccess.Read);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum25" style="color: #606060;"&gt;  25:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum26" style="color: #606060;"&gt;  26:&lt;/span&gt;                 BitmapImage cover = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; BitmapImage();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum27" style="color: #606060;"&gt;  27:&lt;/span&gt;                 cover.SetSource(stream);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum28" style="color: #606060;"&gt;  28:&lt;/span&gt;                 &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.imgCover.Source = cover;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum29" style="color: #606060;"&gt;  29:&lt;/span&gt;             }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum30" style="color: #606060;"&gt;  30:&lt;/span&gt;         }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum31" style="color: #606060;"&gt;  31:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum32" style="color: #606060;"&gt;  32:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="text-align: justify;"&gt;Finally you have access to the currently playing track. The BackgroundAudioPlayer instance exposes a TrackProperty that is the current AudioTrack provider by the background agent. In this code I use this information to display the AlbumArt and other properties on the page:&lt;/p&gt;&lt;h4 style="text-align: justify;"&gt;When to use Audio Agents&lt;/h4&gt;&lt;p style="text-align: justify;"&gt;While I was working on the samples for this article I often ask myself about the usefulness of these features. I think they are a good entry point for provider that want to feed phones with music service that are alternative to the zune marketplace. With the ability of connect to the network to stream content and to save it to the marketplace I think it will be very easy to integrate some source to the phone. Also I think there are interesting opportunities in the AudioStreamingAgent due to its capability of playing audio that is generated on board of the phone. As for any other feature of this operating system ther will be someone ready to take advantage of them.&lt;/p&gt;</description>      <link>http://www.silverlightshow.net/items/Windows-Phone-7.5-Play-with-music.aspx</link>      <author>editorial@silverlightshow.net (Andrea Boschin  )</author>      <comments>http://www.silverlightshow.net/items/Windows-Phone-7.5-Play-with-music.aspx#comments</comments>      <guid isPermaLink="true">http://www.silverlightshow.net/items/Windows-Phone-7.5-Play-with-music.aspx</guid>      <pubDate>Thu, 24 Nov 2011 03:00:00 GMT</pubDate>    </item>    <item>      <title>2011 Virtual and Live Speaking Locations</title>      <link>http://feeds.johnpapa.net/~r/JohnPapa/~3/2taNVN5vYHI/2011-virtual-and-live-speaking-locations</link>      <description>&lt;p&gt;VSLive, Pluralsight WebCast and the inaugural Tampa Windows Developer User Group. That’s all that’s left for me this year for presentations. Actually, it’s a pretty full plate given that the year is almost up and the holidays are upon us. Here is my remaining 2011 schedule:&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Tampa Bay WinDev: Intro to Metro UI&lt;/strong&gt; &lt;/p&gt; &lt;p&gt;(Nov 30 at 6pm ET)&lt;/p&gt; &lt;p&gt;This is the first meeting of the new Windows user group hosted at the Microsoft offices in Tampa. This will be a run through of the Metro app dev landscape. &lt;a href="http://tbwindev11.eventbrite.com/"&gt;You can register here&lt;/a&gt; for this Nov 30 event.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Pluralsight WebCast: Windows 8 Metro App Development &lt;/strong&gt;&lt;/p&gt; &lt;p&gt;(Dec 5th at 4pm ET)&lt;/p&gt; &lt;p&gt;This is a &lt;a href="http://www.pluralsight-training.net/"&gt;Pluralsight&lt;/a&gt; hosted live web cast with both &lt;a href="http://weblogs.asp.net/dwahlin/"&gt;Dan Wahlin&lt;/a&gt; and I talking about our new Windows 8 course and answering your questions. &lt;a href="http://www.pluralsight-training.net/microsoft/Webcasts"&gt;The web site has the wrong date and time, it is indeed Dec 5th at 4pm ET.&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;a href="http://vslive.com/events/orlando-2011/tracks/track-list.aspx"&gt;VSLive Orlando&lt;/a&gt;: JavaScript Patterns for HTML5 &lt;/strong&gt;&lt;/p&gt; &lt;p&gt;(Dec 7th at 9:15am ET)&lt;/p&gt; &lt;p&gt;JavaScript gets a bad rap sometimes for easily confused global variables, script files that are thousands of lines long, and mixing html with script code. But it doesn't have to be that way. This session will demonstrate common techniques to separate structure (HTML), behavior (JavaScript) and presentation (CSS) with modern Web development. I'll offer a few tips to make your JavaScript more maintainable, manage namespacing, and demonstrate how to implement various JavaScript patterns.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;a href="http://vslive.com/events/orlando-2011/tracks/track-list.aspx"&gt;VSLive Orlando&lt;/a&gt;: &lt;/strong&gt;&lt;strong&gt;Advanced Patterns with MVVM in Silverlight and Windows Phone 7 &lt;/strong&gt;&lt;/p&gt; &lt;p&gt;(Dec 7th at 1:30pm ET)&lt;br&gt;Ever wonder what the MVVM pattern is, why it exists, when it works well, and what parts you may want to use or not use? In this session I'll discuss all of these topics and go through important scenarios including messaging, child windows, testing with design timed data, tombstoning, dialogs, and how to apply these principals to both Silverlight desktop and Windows Phone 7 applications.&lt;br&gt;&lt;br&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;a href="http://vslive.com/events/orlando-2011/tracks/track-list.aspx"&gt;VSLive Orlando&lt;/a&gt;: &lt;/strong&gt;&lt;strong&gt;Data Binding and MVVM Patterns in HTML5&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;(Dec 8th at 3:00pm ET)&lt;br&gt;&lt;/p&gt; &lt;p&gt;There are several ways to push and pull data in and out of HTML elements, each with their own advantages. In this session we’ll examine some common techniques to present data in the UI including loading JSON data in and out of HTML elements using jQuery, presentation through&amp;nbsp; templates. We’ll also demonstrate how to apply data binding using the MVVM pattern in our JavaScript &lt;/p&gt;&lt;div class="feedflare"&gt;&lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=2taNVN5vYHI:0A60secvqNk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?i=2taNVN5vYHI:0A60secvqNk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=2taNVN5vYHI:0A60secvqNk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?i=2taNVN5vYHI:0A60secvqNk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=2taNVN5vYHI:0A60secvqNk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=2taNVN5vYHI:0A60secvqNk:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JohnPapa/~4/2taNVN5vYHI" height="1" width="1"/&gt;</description>      <pubDate>Wed, 23 Nov 2011 19:47:27 GMT</pubDate>      <guid isPermaLink="false">http://johnpapa.net:80/2011-virtual-and-live-speaking-locations</guid>      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://johnpapa.net:80/2011-virtual-and-live-speaking-locations</origLink>    </item>    <item>      <title>Knockout JS Pluralsight Course in the Works</title>      <link>http://feeds.johnpapa.net/~r/JohnPapa/~3/yq9axOBrZOM/knockout-js-pluralsight-course-in-the-works</link>      <description>&lt;p&gt;I love data, data binding and development patterns. So it should be no surprise that my next course to be released with Pluralsight is on &lt;a href="http://www.KnockoutJS.com"&gt;KnockoutJS&lt;/a&gt;. I recently released an &lt;a href="http://jpapa.me/Win8IntroPS"&gt;Introduction to Building Windows 8 Metro Applications&lt;/a&gt; course with my good friend &lt;a href="http://weblogs.asp.net/dwahlin/"&gt;Dan Wahlin&lt;/a&gt; for &lt;a href="http://www.pluralsight-training.net/microsoft/"&gt;Pluralsight&lt;/a&gt;. Thanks to all of you who have been watching it! I’ve been asked what else is on my list for Pluralsight videos, so I thought I might share my current plans. &lt;/p&gt; &lt;p&gt;I’ve got several other ideas for courses that I’ve been working on and the one that will be released next will be a course on using JavaScript to build MVVM apps with KnockoutJS. I’m been a big fan of MVVM, separation of concerns (SoC) and structured programming, so &lt;a href="http://knockoutjs.com/"&gt;Knockout&lt;/a&gt; really is a great fit for my style. If you have not used Knockout yet, I think you’ll be pleasantly surprised on how powerful and easy it can be to create rich HTML5 apps using JavaScript. It’s ideal for using the MVVM pattern with JavaScript and getting the benefits of data binding, templating, and SoC. I'm using KO 1.3rc for now which seems pretty solid and soon will become the official 1.3 version of the library.&lt;/p&gt; &lt;p&gt;The course is currently targeted for the beginning of February 2012, mostly because the holidays are between me and the target date. But I am hoping to finish early.&lt;/p&gt; &lt;p&gt;After that, I’ve had a lot of interest in a course using MVVM with XAML. If the interest still holds true, I’ll be sure to put that together as well. Bottom line is that if you want a new course, be sure to &lt;a href="http://support.pluralsight.com/forums/127919-new-course-suggestions"&gt;vote for it on the Pluralsight voting page&lt;/a&gt; (a new feature on their site). You can &lt;a href="http://support.pluralsight.com/forums/127919-new-course-suggestions/suggestions/2391339-knockout-js"&gt;vote for KnockoutJS&lt;/a&gt; here already, vote for another course, or add your own for MVVM or any other topic. &lt;/p&gt; &lt;p&gt;&lt;a href="http://support.pluralsight.com/forums/127919-new-course-suggestions/suggestions/2391339-knockout-js"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="image" border="0" alt="image" src="http://johnpapa.net/Media/Default/Windows-Live-Writer/VSLive_9387/image_3.png" width="506" height="141"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;What else? I have a few others I am mulling, but I don’t want to get too far ahead of myself yet. I’m doing a lot of work with Entity Framework Code First, &lt;a href="https://github.com/BorisMoore/jsrender"&gt;JsRender&lt;/a&gt;, &lt;a href="https://github.com/BorisMoore/jsviews"&gt;JsViews&lt;/a&gt;, and more … but I don’t think I’ll lean towards full courses on those. In fact, I have something else in mind for those topics where I might do some tips and tricks or more specialized courses. at this point, nothing is concrete. My first goal is to get Knockout knocked out &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://johnpapa.net/Media/Default/Windows-Live-Writer/VSLive_9387/wlEmoticon-smile_2.png"&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;&lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=yq9axOBrZOM:dYZUoq1s6TE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?i=yq9axOBrZOM:dYZUoq1s6TE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=yq9axOBrZOM:dYZUoq1s6TE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?i=yq9axOBrZOM:dYZUoq1s6TE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=yq9axOBrZOM:dYZUoq1s6TE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.johnpapa.net/~ff/JohnPapa?a=yq9axOBrZOM:dYZUoq1s6TE:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JohnPapa?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JohnPapa/~4/yq9axOBrZOM" height="1" width="1"/&gt;</description>      <pubDate>Wed, 23 Nov 2011 17:26:49 GMT</pubDate>      <guid isPermaLink="false">http://johnpapa.net:80/knockout-js-pluralsight-course-in-the-works</guid>      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://johnpapa.net:80/knockout-js-pluralsight-course-in-the-works</origLink>    </item>    <item>      <title>Silverlight Show: 10 Laps around Silverlight 5 (Part 6 of 10)</title>      <link>http://feedproxy.google.com/~r/TheSilverlightBlog/~3/D_mYa30FwJk/silverlight-show-10-laps-around-silverlight-5-part-6-of-10.aspx</link>      <pubDate>Wed, 23 Nov 2011 16:12:12 GMT</pubDate>      <guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10240966</guid>      <creator xmlns="http://purl.org/dc/elements/1.1/">Silverlight Team</creator>      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">0</comments>      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/silverlight/rsscomments.aspx?WeblogPostID=10240966</commentRss>      <comments>http://blogs.msdn.com/b/silverlight/archive/2011/11/23/silverlight-show-10-laps-around-silverlight-5-part-6-of-10.aspx#comments</comments>      <description>&lt;p&gt;In this article, a discussion of several new operating system integration features in Silverlight 5 including: P/Invoke, Multiple Windows and Unrestricted File System Access in Full Trust. Please review the Roadmap for the series before going any further.&lt;/p&gt;  &lt;h2&gt;The Roadmap for this Series&lt;/h2&gt;  &lt;p&gt;Included, the Roadmap for the series below as you may want to visit other sections as you learn Silverlight 5. I picked the following features as I thought that you may find them useful in your day-to-day work. If you want a specific topic covered then please leave it in the comments below.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://www.silverlightshow.net/items/Silverlight-5-Part-1-of-10.aspx"&gt;Introduction to SL5 – provides a brief history of Silverlight and relevant links.&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-2-of-10.aspx"&gt;Binding - Ancestor Relative Source Binding and Implicit Data Templates.&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-4-of-10.aspx"&gt;Graphics - XNA 3D API and Improved Graphics Stack.&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-4-of-10.aspx"&gt;Media - Low-Latency Sound using XNA and Remote Control and Media Command (Keys) Support.&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/silverlight/archive/2011/11/18/silverlight-show-10-laps-around-silverlight-5-part-5-of-10.aspx"&gt;Text - Text Tracking and Leading, Linked and Multi-column Text, OpenType Support, Pixel Snapped Text and TextOptions.&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Operating System Integration Part 1 - [This Post] - P/Invoke, Multiple Windows and Unrestricted File System Access in Full Trust.&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;Operating System Integration Part 2 - Default Filename for SaveFileDialog, 64-bit browser support and Power Awareness. &lt;/li&gt;    &lt;li&gt;Productivity and Performance - XAML Binding Debugging, Parser Performance Improvements and Multi-core JIT for improved start-up time. &lt;/li&gt;    &lt;li&gt;Controls - Double and Triple click support, PivotViewer and ComboBox Type-Ahead. &lt;/li&gt;    &lt;li&gt;Other items - In-Browser HTML, PostScript and Tasks for TPL. &lt;/li&gt; &lt;/ol&gt;  &lt;h2&gt;P/Invoke or Platform Invocation&lt;/h2&gt;  &lt;p&gt;Before we dive into an example. Let’s first answer the question, What is it? &lt;strong&gt;Platform Invocation Services&lt;/strong&gt;, commonly referred to as &lt;strong&gt;P/Invoke&lt;/strong&gt;, is a feature of &lt;a href="http://en.wikipedia.org/wiki/Common_Language_Infrastructure"&gt;Common Language Infrastructure&lt;/a&gt; implementations, like &lt;a href="http://en.wikipedia.org/wiki/Microsoft"&gt;Microsoft&lt;/a&gt;'s &lt;a href="http://en.wikipedia.org/wiki/Common_Language_Runtime"&gt;Common Language Runtime&lt;/a&gt;, that enables &lt;a href="http://en.wikipedia.org/wiki/Managed_code"&gt;managed code&lt;/a&gt; to call &lt;a href="http://en.wikipedia.org/wiki/Native_code"&gt;native code&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;*Reference to Wiki&lt;/p&gt;  &lt;p&gt;This feature is new to Silverlight 5 and we will take a look at how to use it in your own applications. &lt;/p&gt;  &lt;p&gt;In order to create a new P/Invoke application in Silverlight 5, we will need to enable “&lt;strong&gt;Require elevated trust&lt;/strong&gt;” in Silverlight 5. We can also use the functionality in-browser or out-of-browser. Let’s begin. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-6-of-10.aspx"&gt;Read the full post&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10240966" width="1" height="1"&gt;&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xG5Mnszqs9GDiTdHN-pcsYAFl5o/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xG5Mnszqs9GDiTdHN-pcsYAFl5o/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xG5Mnszqs9GDiTdHN-pcsYAFl5o/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xG5Mnszqs9GDiTdHN-pcsYAFl5o/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;&lt;a href="http://feeds.feedburner.com/~ff/TheSilverlightBlog?a=D_mYa30FwJk:wnW0TnELzVU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheSilverlightBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheSilverlightBlog?a=D_mYa30FwJk:wnW0TnELzVU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheSilverlightBlog?i=D_mYa30FwJk:wnW0TnELzVU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheSilverlightBlog?a=D_mYa30FwJk:wnW0TnELzVU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheSilverlightBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheSilverlightBlog/~4/D_mYa30FwJk" height="1" width="1"/&gt;</description>      <category domain="http://blogs.msdn.com/b/silverlight/archive/tags/Tips+and+Training/">Tips and Training</category>      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://blogs.msdn.com/b/silverlight/archive/2011/11/23/silverlight-show-10-laps-around-silverlight-5-part-6-of-10.aspx</origLink>    </item>    <item>      <title>OData caching in Windows Phone</title>      <description>&lt;table width="20"&gt;    &lt;tbody&gt;        &lt;tr&gt;            &lt;td&gt;            &lt;div class="fb-like" data-show-faces="true" data-send="false" data-href="http://www.silverlightshow.net/items/OData-caching-in-Windows-Phone.aspx" data-font="segoe ui" data-layout="button_count"&gt;&lt;/div&gt;            &lt;/td&gt;            &lt;td&gt;&lt;a href="https://twitter.com/share" class="twitter-share-button" data-via="silverlightshow" data-counturl="http://www.silverlightshow.net/items/OData-caching-in-Windows-Phone.aspx" data-count="horizontal" data-text="Reading SilverlightShow article 'OData caching in Windows Phone' by @samisip #wpdev" data-url="http://slshow.net/vbrKJG"&gt;Tweet&lt;/a&gt;&lt;/td&gt;            &lt;td&gt;&lt;g:plusone size="medium" href="http://www.silverlightshow.net/items/OData-caching-in-Windows-Phone.aspx"&gt;&lt;/g:plusone&gt;            &lt;/td&gt;            &lt;td&gt;            &lt;/td&gt;        &lt;/tr&gt;    &lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;em&gt;OData&lt;/em&gt; seems to have a lot of promise in simplifying data access across multiple platforms by using fundamental technologies of &lt;em&gt;HTTP&lt;/em&gt; and &lt;em&gt;Atom&lt;/em&gt;/&lt;em&gt;JSon&lt;/em&gt;. Using an OData source for data consumption/updates in your Windows Phone application? &lt;/p&gt;&lt;div style="border:1px solid #dddddd;padding-bottom: 5px; background-color: #f3f3f3; margin-top: 5px; padding-left: 10px; width: 200px; float: right; margin-left: 10px; margin-right: 5px; padding-top: 5px;"&gt;&lt;h3&gt;Don't miss...&lt;/h3&gt;&lt;ul style="list-style-type: circle; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-left: 20px; font-size: 12px;"&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/shows/Recording-of-SilverlightShow-Webinar-by-Emil-Stoychev.aspx"&gt;Webinar recording: Building LOB apps with Silverlight and WCF Data Services&lt;/a&gt; &lt;/li&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/items/Producing-and-Consuming-OData-in-a-Silverlight-and-Windows-Phone-7-application.aspx"&gt;Article series: Producing and Consuming OData in a Silverlight and WP7 application&lt;/a&gt; &lt;/li&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/ebooks/odata_cloud.aspx"&gt;Samisip's Ebook 'OData &amp;amp; Cloud Augmentation of Windows Phone Apps':&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;p style="padding-bottom: 5px; text-align: center;"&gt;&lt;a href="http://www.silverlightshow.net/ebooks/odata_cloud.aspx"&gt;&lt;img alt="Producing and Consuming OData in a Silverlight and WP7 App Ebook" src="http://www.silverlightshow.net/Storage/Ebooks/odata_cloud.png" style="width: 107px; height: 150px;" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="font-size: 12px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.silverlightshow.net/ebooks.aspx"&gt;All SilverlightShow Ebooks&lt;/a&gt;&amp;nbsp;&lt;img alt="" src="http://www.silverlightshow.net/Storage/arrow-content.jpg" /&gt;&lt;/p&gt;&lt;/div&gt;In this short article, we take a quick look at a data caching strategy in our Windows Phone applications while using an OData data source. While we talk about a Windows Phone solution in particular, these concepts are perfectly applicable when using OData on other mobile platforms.&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;As always, the demo solution, along with all code samples is available for download through the link below:&lt;/p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Sources/NetflixDataHandlingDemo.zip"&gt;&lt;h4&gt;Download Source Code&lt;/h4&gt;&lt;/a&gt;&lt;h2&gt;&amp;nbsp;&lt;/h2&gt;&lt;h3&gt;Introduction&lt;/h3&gt;&lt;p&gt;The Open Data Protocol (OData) is an HTTP-based protocol for querying and updating a data source. Based on the platform or type of application we are building, we have the option of using either Atom or JSon as our feed protocol of choice and then utilize support for filtering, sorting &amp;amp; paging in our application. Want to learn more? &lt;a href="http://www.odata.org/"&gt;http://www.odata.org/&lt;/a&gt;is a great place to start. OData has now built up a nice ecosystem around it&amp;rsquo;s support, with proxy-building libraries in a variety of platforms; and it obviously lends itself very nicely to usage from mobile applications.&lt;/p&gt;&lt;p&gt;Also, just about any data source that .NET runtime can connect to, can be exposed as an OData feed. It is essentially a two-step process: First &amp;ndash; put Entity Framework type Object Relational Mapping (ORM) on top of our data source, in particular the &lt;em&gt;ADO.NET Entity Data Model&lt;/em&gt;; and Second &amp;ndash; put a &lt;em&gt;WCF Data Service&lt;/em&gt; on top of the data entities to expose a read-only/updateable feed for the data. Want to try it yourself? Michael Crump&amp;rsquo;s &amp;ldquo;Producing &amp;amp; Consuming OData..&amp;rdquo; series &lt;a href="http://www.silverlightshow.net/items/Producing-and-Consuming-OData-in-a-Silverlight-and-Windows-Phone-7-application.aspx" target="_blank"&gt;here&lt;/a&gt; is a great start. Want to leverage OData as you augment your mobile application with cloud support? My last two articles &lt;a href="http://www.silverlightshow.net/items/Connecting-Azure-Windows-Phone-through-OData.aspx" target="_blank"&gt;here&lt;/a&gt; &amp;amp; &lt;a href="http://www.silverlightshow.net/items/Azure-Services-connecting-Windows-Phone-to-Data.aspx" target="_blank"&gt;here&lt;/a&gt; should be decent starting points.&lt;/p&gt;&lt;h3&gt;&amp;nbsp;&lt;/h3&gt;&lt;h3&gt;The Demo &lt;/h3&gt;&lt;p&gt;One of the best ways to learn more about OData is to start playing with a live OData service. And what better example than that of &lt;em&gt;Netfllix&lt;/em&gt; .. we all love movies, right? &lt;img class="wlEmoticon wlEmoticon-smile" style="border-style: none;" alt="Smile" src="http://www.silverlightshow.net/Storage/Users/samidip/wlEmoticon-smile_2.png" /&gt; Now, Netflix worked with MSFT to expose their entire Movie/Shows catalog as a live OData feed, one that you can hit through the URL below:&lt;/p&gt;&lt;h5&gt;&lt;a href="http://odata.netflix.com/v2/Catalog/"&gt;http://odata.netflix.com/v2/Catalog/&lt;/a&gt;&lt;/h5&gt;&lt;p&gt;Once we look up the catalog, we can see all the supported HTTP endpoints to get various information. Head over to the official Netlfix documentation &lt;a href="http://developer.netflix.com/docs/oData_Catalog" target="_blank"&gt;here&lt;/a&gt; to learn more about the supported Metadata, filters &amp;amp; formats. For our demo purpose, we shall choose to do a very simple lookup against the Netflix OData catalog .. just to get a list of &lt;em&gt;Genres&lt;/em&gt;. Take a guess how many Genres Netflix knows? &amp;ndash; Close to 400 !!&lt;/p&gt;&lt;p&gt;So, we make a simple HTTP Get request through our browser to the following URI to get a list of Genres, in default Atom format. Since this is not huge amount of data, there is no continuation token &amp;amp; we get the whole catalog of Genres back in one request:&lt;/p&gt;&lt;h5&gt;&lt;a href="http://odata.netflix.com/v2/Catalog/Genres"&gt;http://odata.netflix.com/v2/Catalog/Genres&lt;/a&gt;&lt;/h5&gt;&lt;p&gt;So, let&amp;rsquo;s build a simple Windows Phone application which consumes the Netflix OData feed &amp;amp; pulls up the list of Genres programmatically. We begin with the default template of a Windows Phone application with a portrait page. One of the first things we do is to add a reference to the root of the Netflix OData service, so that the proxies are built &amp;amp; we can refer to the Netflix entities in our code. Here&amp;rsquo;s how &amp;amp; the resulting project structure:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/samidip/Netflix%20Service%20Reference_2.png"&gt;&lt;img width="644" height="521" title="Netflix Service Reference" style="border:0px solid; background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" alt="Netflix Service Reference" src="http://www.silverlightshow.net/Storage/Users/samidip/Netflix%20Service%20Reference_thumb.png" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/samidip/Project%20Structure.png"&gt;&lt;img width="504" height="406" title="Project Structure" style="border:0px solid; background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" alt="Project Structure" src="http://www.silverlightshow.net/Storage/Users/samidip/Project%20Structure_thumb.png" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Next, let&amp;rsquo;s add some code to our &lt;em&gt;MainPage.xaml&lt;/em&gt;&amp;rsquo;s code-behind file so we can load the list of Netflix Genres:&lt;/p&gt;&lt;div id="codeSnippetWrapper" style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;"&gt;&lt;div id="codeSnippet" style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt; 1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; NetflixODataService; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt; 2:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt; 3:&lt;/span&gt; DataServiceCollection&amp;lt;Genre&amp;gt; Genres { get; set; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt; 4:&lt;/span&gt; DataServiceContext context = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; DataServiceContext(&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Uri(&lt;span style="color: #006080;"&gt;"http://odata.netflix.com/v2/Catalog/"&lt;/span&gt;));&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt; 5:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt; 6:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; MainPage()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt; 7:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt; 8:&lt;/span&gt;   InitializeComponent();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt; 9:&lt;/span&gt;   &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.LoadAndStoreGenres();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt; 10:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt; 11:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt; 12:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt; 13:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; LoadAndStoreGenres()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum14" style="color: #606060;"&gt; 14:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum15" style="color: #606060;"&gt; 15:&lt;/span&gt;     &lt;span style="color: #008000;"&gt;// Instantiates our collection.&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum16" style="color: #606060;"&gt; 16:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.Genres = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; DataServiceCollection&amp;lt;Genre&amp;gt;(context);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum17" style="color: #606060;"&gt; 17:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum18" style="color: #606060;"&gt; 18:&lt;/span&gt;     &lt;span style="color: #008000;"&gt;// Base HTTP endpoint or custom query goes here.&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum19" style="color: #606060;"&gt; 19:&lt;/span&gt;     Uri uriQuery = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Uri(&lt;span style="color: #006080;"&gt;"/Genres()"&lt;/span&gt;, UriKind.Relative);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum20" style="color: #606060;"&gt; 20:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum21" style="color: #606060;"&gt; 21:&lt;/span&gt;     &lt;span style="color: #008000;"&gt;// Asynchronously load the result of the query.&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum22" style="color: #606060;"&gt; 22:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.Genres.LoadAsync(uriQuery);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum23" style="color: #606060;"&gt; 23:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum24" style="color: #606060;"&gt; 24:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.Genres.LoadCompleted += (sender, args) =&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum25" style="color: #606060;"&gt; 25:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum26" style="color: #606060;"&gt; 26:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (args.Error == &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum27" style="color: #606060;"&gt; 27:&lt;/span&gt;         {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum28" style="color: #606060;"&gt; 28:&lt;/span&gt;             &lt;span style="color: #008000;"&gt;// Databind.&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum29" style="color: #606060;"&gt; 29:&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.genreList.ItemsSource = &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.Genres;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum30" style="color: #606060;"&gt; 30:&lt;/span&gt;     };&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum31" style="color: #606060;"&gt; 31:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Now, let&amp;rsquo;s dig in, since a few interesting things happened. First, we added the reference to the Netflix Service namespace and utilized a special collection class called &lt;em&gt;DataServiceCollection&lt;/em&gt;. A &lt;em&gt;DataServiceCollection&amp;lt;T&amp;gt;&lt;/em&gt; &amp;ldquo;represents a dynamic entity collection that provides notifications when items get added, removed, or when the list is refreshed.&amp;rdquo; So essentially, this has the features of an &lt;em&gt;ObservableCollection&lt;/em&gt; built-in &amp;amp; the &lt;em&gt;INotifyPropertyChanged&lt;/em&gt; interface makes sure that any UI bound to such a collection is informed of changes on bound property values in the collection. In addition, the DataServiceCollection has been optimized to be the representation of an OData HTTP endpoint collection and supports features like query collections, continuation tokens &amp;amp; tracking changes in the collection. Find out more about the DataServiceCollection &lt;a href="http://msdn.microsoft.com/en-us/library/ee474331.aspx" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Also, we used a &lt;em&gt;DataServiceContext&lt;/em&gt; which pointed to the root of the Netflix OData feed as the base context, beyond which we can do our queries/filtering/sorting. Also, once we knew exactly the query to request (in our simple demo &amp;ndash; &amp;ldquo;/Genres()&amp;rdquo;), we used a &lt;em&gt;LoadAsync()&lt;/em&gt; method off of our DataServiceCollection. This, behind the scenes, wraps up our query into an HTTP request to the OData service and does so without blocking the all-important UI thread. When the remote server responds, a &lt;em&gt;LoadCompleted&lt;/em&gt; event triggers to allow us to handle the response &amp;amp; bind to our UI, thus automatically marshaling data back to the UI thread. &lt;/p&gt;&lt;p&gt;Now, how do we display the list of Genres we are fetching? Through a very simple XAML UI as below:&lt;/p&gt;&lt;div id="codeSnippetWrapper" style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;"&gt;&lt;div id="codeSnippet" style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt; 1:&lt;/span&gt; &amp;lt;ListBox Margin=&lt;span style="color: #006080;"&gt;"15,0,15,10"&lt;/span&gt; x:Name=&lt;span style="color: #006080;"&gt;"genreList"&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt; 2:&lt;/span&gt;     &amp;lt;ListBox.ItemTemplate&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt; 3:&lt;/span&gt;         &amp;lt;DataTemplate&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt; 4:&lt;/span&gt;             &amp;lt;StackPanel Margin=&lt;span style="color: #006080;"&gt;"0,0,0,17"&lt;/span&gt; Width=&lt;span style="color: #006080;"&gt;"432"&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt; 5:&lt;/span&gt;                 &amp;lt;TextBlock Text=&lt;span style="color: #006080;"&gt;"{Binding Name}"&lt;/span&gt; TextWrapping=&lt;span style="color: #006080;"&gt;"Wrap"&lt;/span&gt; Style=&lt;span style="color: #006080;"&gt;"{StaticResource PhoneTextExtraLargeStyle}"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt; 6:&lt;/span&gt;             &amp;lt;/StackPanel&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt; 7:&lt;/span&gt;         &amp;lt;/DataTemplate&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt; 8:&lt;/span&gt;     &amp;lt;/ListBox.ItemTemplate&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt; 9:&lt;/span&gt; &amp;lt;/ListBox&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;So, we simply want to display a list of Genres as &amp;ldquo;&lt;em&gt;Name&lt;/em&gt;&amp;rdquo; as we get back from Netflix. With just the little code above added to our &lt;em&gt;MainPage.xaml&lt;/em&gt; page, we can have our application fetch &amp;amp; display Genres as follows. Please note that is for demo only .. so no fancy progress bars, which you might want to add to indicate to the user that some web request is being served.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/samidip/Genres%20in%20App_2.png"&gt;&lt;img width="304" height="549" title="Genres in App" style="border:0px solid; background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;" alt="Genres in App" src="http://www.silverlightshow.net/Storage/Users/samidip/Genres%20in%20App_thumb.png" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;The Problem&lt;/h3&gt;&lt;p&gt;Now, consider this .. let&amp;rsquo;s say the source of the OData feed does not change very often or you want this demo Netflix application to work in offline mode, after the data has been fetched at least once. Both of these indicate that we should figure out a way to not make the HTTP Get request to the OData source every time! So, the first time we fetch the data, we have to cache it in the application&amp;rsquo;s Isolated Storage, to be read on subsequence application runs until something triggers a refresh of the data feed.&lt;/p&gt;&lt;p&gt;So, common sense suggests that we try to put the whole Genres DataServiceCollection in Isolated Storage &amp;amp; rehydrate our entity objects on successive needs for the data. Here&amp;rsquo;s the problem though &amp;ndash; you will get strange error if you simply try to put the DataServiceCollection in Isolated Storage. Something along the lines of :&lt;/p&gt;&lt;p&gt;"&lt;em&gt;An item could not be added to the collection. When items in a DataServiceCollection are tracked by the DataServiceContext, new items cannot be added before items have been loaded into the collection&lt;/em&gt;."&lt;/p&gt;&lt;p&gt;So, what&amp;rsquo;s happening? The problem is that DataServiceCollection&amp;lt;T&amp;gt; was not designed for serialization/deserialization. When we use the DataServiceCollection, the collection is responsible for tracking all the objects that it contains. Because the collection also has a reference to the DataServiceContext, it notifies the DataServiceContext of all changes to the collection and the entities in the collection. This means that we can just add,remove and update objects in the collection and when we want to persist the changes, we call &lt;em&gt;SaveChanges&lt;/em&gt;() on the DataServiceContext.&amp;nbsp; This is the crux of the problem, since Isolated Storage requires the entities to be serialized, which triggers the object being updated events. If we create a new DataServiceCollection&amp;lt;T&amp;gt;() (constructor without parameters), it creates the collection in so called auto-tracking mode. That is the collection has tracking turned on, and in order for tracking to work correctly, we must call Load on it (this will add items and connect the collection to the right DataServiceContext which will track the items). This behavior is by design.&lt;/p&gt;&lt;p&gt;Oops! So, is there no way to store away a DataServiceCollection for re-use? Thankfully &amp;ndash; Yes!&lt;/p&gt;&lt;h3&gt;The Solution&lt;/h3&gt;&lt;p&gt;A new class called &lt;em&gt;DataServiceState&lt;/em&gt; has been added to keep track of the state of a DataServiceCollection &amp;amp; it&amp;rsquo;s backend DataServiceContext. The DataServiceState simply knows how to serialize/deserialize a typed DataServiceContext with one or more DataServiceCollection objects. Essentially, during serialization through an explicit static &lt;em&gt;Serialize()&lt;/em&gt; method, the whole DataServiceCollection is flattened into a string that is the XML serialized representation of the stored objects, along with support for nested collections.&lt;/p&gt;&lt;p&gt;Shall we see this in action? In our case, we have a DataServiceCollection&amp;lt;Genre&amp;gt; that we would serialize &amp;amp; store in Isolated Storage for future use. Also, we would add a boolean flag to indicate whether we have cached data vs when we would have to refetch.&amp;nbsp; So, in our case, the moment we receive a response to our query to fetch Genres, we would serialize the collection into Isolated Storage. You may switch around where you do this for cleaner code .. but here&amp;rsquo;s the demo code that shows serialization:&lt;/p&gt;&lt;div id="codeSnippetWrapper" style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;"&gt;&lt;div id="codeSnippet" style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt; 1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;partial&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; MainPage : PhoneApplicationPage&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt; 2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt; 3:&lt;/span&gt;     &lt;span style="color: #cc6633;"&gt;#region&lt;/span&gt; &lt;span style="color: #006080;"&gt;"Data Members"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt; 4:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt; 5:&lt;/span&gt;     DataServiceCollection&amp;lt;Genre&amp;gt; Genres { get; set; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt; 6:&lt;/span&gt;     DataServiceContext context = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; DataServiceContext(&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Uri(&lt;span style="color: #006080;"&gt;"http://odata.netflix.com/v2/Catalog/"&lt;/span&gt;));&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt; 7:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt; 8:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;bool&lt;/span&gt; AppHasFeed { get; set; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt; 9:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt; 10:&lt;/span&gt;     &lt;span style="color: #cc6633;"&gt;#endregion&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt; 11:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt; 12:&lt;/span&gt;     &lt;span style="color: #cc6633;"&gt;#region&lt;/span&gt; &lt;span style="color: #006080;"&gt;"Constructor"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt; 13:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum14" style="color: #606060;"&gt; 14:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; MainPage()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum15" style="color: #606060;"&gt; 15:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum16" style="color: #606060;"&gt; 16:&lt;/span&gt;         InitializeComponent();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum17" style="color: #606060;"&gt; 17:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum18" style="color: #606060;"&gt; 18:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (IsolatedStorageSettings.ApplicationSettings.Contains(&lt;span style="color: #006080;"&gt;"AppHasFeed"&lt;/span&gt;))&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum19" style="color: #606060;"&gt; 19:&lt;/span&gt;         {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum20" style="color: #606060;"&gt; 20:&lt;/span&gt;             AppHasFeed = (&lt;span style="color: #0000ff;"&gt;bool&lt;/span&gt;)IsolatedStorageSettings.ApplicationSettings[&lt;span style="color: #006080;"&gt;"AppHasFeed"&lt;/span&gt;];&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum21" style="color: #606060;"&gt; 21:&lt;/span&gt;         }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum22" style="color: #606060;"&gt; 22:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum23" style="color: #606060;"&gt; 23:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (!AppHasFeed)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum24" style="color: #606060;"&gt; 24:&lt;/span&gt;         {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum25" style="color: #606060;"&gt; 25:&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.LoadAndStoreGenres();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum26" style="color: #606060;"&gt; 26:&lt;/span&gt;         }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum27" style="color: #606060;"&gt; 27:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum28" style="color: #606060;"&gt; 28:&lt;/span&gt;         {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum29" style="color: #606060;"&gt; 29:&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.HydrateFromIso();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum30" style="color: #606060;"&gt; 30:&lt;/span&gt;         }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum31" style="color: #606060;"&gt; 31:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum32" style="color: #606060;"&gt; 32:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum33" style="color: #606060;"&gt; 33:&lt;/span&gt;     &lt;span style="color: #cc6633;"&gt;#endregion&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum34" style="color: #606060;"&gt; 34:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum35" style="color: #606060;"&gt; 35:&lt;/span&gt;     &lt;span style="color: #cc6633;"&gt;#region&lt;/span&gt; &lt;span style="color: #006080;"&gt;"Methods"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum36" style="color: #606060;"&gt; 36:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum37" style="color: #606060;"&gt; 37:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; LoadAndStoreGenres()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum38" style="color: #606060;"&gt; 38:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum39" style="color: #606060;"&gt; 39:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;// Instantiates our collection.&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum40" style="color: #606060;"&gt; 40:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.Genres = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; DataServiceCollection&amp;lt;Genre&amp;gt;(context);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum41" style="color: #606060;"&gt; 41:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum42" style="color: #606060;"&gt; 42:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;// Base HTTP endpoint or custom query goes here.&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum43" style="color: #606060;"&gt; 43:&lt;/span&gt;         Uri uriQuery = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Uri(&lt;span style="color: #006080;"&gt;"/Genres()"&lt;/span&gt;, UriKind.Relative);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum44" style="color: #606060;"&gt; 44:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum45" style="color: #606060;"&gt; 45:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;// Asynchronously load the result of the query.&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum46" style="color: #606060;"&gt; 46:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.Genres.LoadAsync(uriQuery);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum47" style="color: #606060;"&gt; 47:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum48" style="color: #606060;"&gt; 48:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.Genres.LoadCompleted += (sender, args) =&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum49" style="color: #606060;"&gt; 49:&lt;/span&gt;         {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum50" style="color: #606060;"&gt; 50:&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (args.Error == &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum51" style="color: #606060;"&gt; 51:&lt;/span&gt;             {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum52" style="color: #606060;"&gt; 52:&lt;/span&gt;                 &lt;span style="color: #008000;"&gt;// Databind.&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum53" style="color: #606060;"&gt; 53:&lt;/span&gt;                 &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.genreList.ItemsSource = &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.Genres;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum54" style="color: #606060;"&gt; 54:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum55" style="color: #606060;"&gt; 55:&lt;/span&gt;                 &lt;span style="color: #008000;"&gt;// Set &amp;amp; store the flag indicating we have fetched data once.&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum56" style="color: #606060;"&gt; 56:&lt;/span&gt;                 AppHasFeed = &lt;span style="color: #0000ff;"&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum57" style="color: #606060;"&gt; 57:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum58" style="color: #606060;"&gt; 58:&lt;/span&gt;                 &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (IsolatedStorageSettings.ApplicationSettings.Contains(&lt;span style="color: #006080;"&gt;"AppHasFeed"&lt;/span&gt;))&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum59" style="color: #606060;"&gt; 59:&lt;/span&gt;                     IsolatedStorageSettings.ApplicationSettings.Remove(&lt;span style="color: #006080;"&gt;"AppHasFeed"&lt;/span&gt;);                        &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum60" style="color: #606060;"&gt; 60:&lt;/span&gt;                 &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum61" style="color: #606060;"&gt; 61:&lt;/span&gt;                 IsolatedStorageSettings.ApplicationSettings.Add(&lt;span style="color: #006080;"&gt;"AppHasFeed"&lt;/span&gt;, AppHasFeed);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum62" style="color: #606060;"&gt; 62:&lt;/span&gt;                 &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum63" style="color: #606060;"&gt; 63:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum64" style="color: #606060;"&gt; 64:&lt;/span&gt;                 &lt;span style="color: #008000;"&gt;// Serialize our collection.&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum65" style="color: #606060;"&gt; 65:&lt;/span&gt;                 var GenresCollection = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Dictionary&amp;lt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;, &lt;span style="color: #0000ff;"&gt;object&lt;/span&gt;&amp;gt;();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum66" style="color: #606060;"&gt; 66:&lt;/span&gt;                 GenresCollection[&lt;span style="color: #006080;"&gt;"Genres"&lt;/span&gt;] = &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.Genres;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum67" style="color: #606060;"&gt; 67:&lt;/span&gt;                 &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; GenresDataFeed = DataServiceState.Serialize(context, GenresCollection);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum68" style="color: #606060;"&gt; 68:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum69" style="color: #606060;"&gt; 69:&lt;/span&gt;                 &lt;span style="color: #008000;"&gt;// Store flattened data in Isolated Storage.&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum70" style="color: #606060;"&gt; 70:&lt;/span&gt;                 &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (IsolatedStorageSettings.ApplicationSettings.Contains(&lt;span style="color: #006080;"&gt;"Genres"&lt;/span&gt;))&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum71" style="color: #606060;"&gt; 71:&lt;/span&gt;                     IsolatedStorageSettings.ApplicationSettings.Remove(&lt;span style="color: #006080;"&gt;"Genres"&lt;/span&gt;);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum72" style="color: #606060;"&gt; 72:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum73" style="color: #606060;"&gt; 73:&lt;/span&gt;                 IsolatedStorageSettings.ApplicationSettings.Add(&lt;span style="color: #006080;"&gt;"Genres"&lt;/span&gt;, GenresDataFeed);                    &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum74" style="color: #606060;"&gt; 74:&lt;/span&gt;             }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum75" style="color: #606060;"&gt; 75:&lt;/span&gt;         };&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum76" style="color: #606060;"&gt; 76:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum77" style="color: #606060;"&gt; 77:&lt;/span&gt;     &lt;span style="color: #cc6633;"&gt;#endregion&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum78" style="color: #606060;"&gt; 78:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;So, our boolean flag &amp;ldquo;&lt;em&gt;AppHasFeed&lt;/em&gt;&amp;rdquo; indicates whether we have fetched the Genre collection at least once .. in your actual use, you may choose to implement an explicit way to refresh the data feed. Back in our case, if we don&amp;rsquo;t have any data, we make the one-time asynchronous request to fetch OData as Atom. Next, we utilize the DataServiceState class to serialize the entire DataServiceCollection of Genres with respect to its DataServiceContext and store the resulting string XML into Isolated Storage as a key-value pair. Voila, now we are storing state and caching OData inside our application!&lt;/p&gt;&lt;p&gt;One thing to note is that in our demo case, we simply put the whole DataServiceCollection in Isolated Storage for future use. If you do not want that level of persistence &amp;amp; are dealing with temporary data, there is a way out as well. The same techniques of serialization of a DataServiceCollection apply perfectly well when storing the resulting string in &lt;em&gt;PhoneApplicationService.Current.State, &lt;/em&gt;in case you simply want the data to be available in case your application is tombstoned &amp;amp; you want you data entities to be rehydrated without making a fresh HTTP request.&lt;/p&gt;&lt;p&gt;So, in the code above, we saw how to serialize &amp;amp; store a DataServiceCollection in Isolated Storage. But we also need the same data to be deserialized &amp;amp; re-hydrating our data entities if we are not making another fresh request. So, in our case, if the AppHasFeed flag indicates that we have fetched data already, we simply use the following deserialization technique:&lt;/p&gt;&lt;div id="codeSnippetWrapper" style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;"&gt;&lt;div id="codeSnippet" style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt; 1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; HydrateFromIso()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt; 2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt; 3:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (IsolatedStorageSettings.ApplicationSettings.Contains(&lt;span style="color: #006080;"&gt;"Genres"&lt;/span&gt;))&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt; 4:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt; 5:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;// Fetch flattened data &amp;amp; rehydrate object model.&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt; 6:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; GenresDataFeed = IsolatedStorageSettings.ApplicationSettings[&lt;span style="color: #006080;"&gt;"Genres"&lt;/span&gt;].ToString();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt; 7:&lt;/span&gt;         DataServiceState state = DataServiceState.Deserialize(GenresDataFeed);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt; 8:&lt;/span&gt;         Dictionary&amp;lt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;, &lt;span style="color: #0000ff;"&gt;object&lt;/span&gt;&amp;gt; collections = state.RootCollections;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt; 9:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum10" style="color: #606060;"&gt; 10:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;// Hydrate our DataServiceCollection.&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum11" style="color: #606060;"&gt; 11:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.Genres = collections[&lt;span style="color: #006080;"&gt;"Genres"&lt;/span&gt;] &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; DataServiceCollection&amp;lt;Genre&amp;gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum12" style="color: #606060;"&gt; 12:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum13" style="color: #606060;"&gt; 13:&lt;/span&gt;         &lt;span style="color: #008000;"&gt;// Databind.&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum14" style="color: #606060;"&gt; 14:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.genreList.ItemsSource = &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.Genres;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum15" style="color: #606060;"&gt; 15:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum16" style="color: #606060;"&gt; 16:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;So essentially, we deserialize the string XML from Isolated Storage through the static &lt;em&gt;Deserialize()&lt;/em&gt; method to re-instantiate a DataServiceState. Once done, the &lt;em&gt;RootCollections&lt;/em&gt; property holds the individual DataServiceCollection entities, which we can use to re-hydrate our data model. Easy? &lt;img class="wlEmoticon wlEmoticon-smile" style="border-style: none;" alt="Smile" src="http://www.silverlightshow.net/Storage/Users/samidip/wlEmoticon-smile_2.png" /&gt; Again, where I do this in code is questionable, but this is for the sake of keeping the demo simple. You should be able to take the concept &amp;amp; add code to your application as &amp;amp; when needed to cache/uncache OData collections.&lt;/p&gt;&lt;p&gt;So, after you add the above code, go ahead &amp;amp; run the Netflix Demo again, but this time after turning off all network connectivity for emulator or Windows Phone device. You&amp;rsquo;ll see that we have been able to serialize/deserialize the fetched OData collection and now our applications works perfectly fine in offline mode, on successive attempts!&lt;/p&gt;&lt;h3&gt;Summary&lt;/h3&gt;&lt;p&gt;In this article, we talked about consumption of OData from a Windows Phone application and the subsequent serialization/deserialization of data collections. These techniques should help in building lean applications which are careful about misuse of the user&amp;rsquo;s bandwidth in fetching the same data over &amp;amp; over again. So, what are you waiting for? Expose just about any data store as an OData feed, put appropriate security on the data &amp;amp; consume it responsibly from multiple mobile platforms!&lt;/p&gt;&lt;p&gt;I would appreciate any comments or concerns or how things can be done better. Thanks for reading &amp;amp; happy coding. &lt;/p&gt;&lt;p&gt;Cheers SilverlightShow!&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;h3&gt;About the Author&lt;/h3&gt;&lt;p&gt;&lt;img width="129" height="157" title="ActualPic" style="border:0px solid; background-image: none; margin-top: 0px; margin-right: 10px; margin-bottom: 0px; margin-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; padding-top: 0px;" alt="ActualPic" src="http://www.silverlightshow.net/Storage/Users/samidip/_ActualPic_1.jpg" /&gt;&lt;/p&gt;&lt;p&gt;Samidip Basu (&lt;a href="http://twitter.com/#!/samidip"&gt;@samidip&lt;/a&gt;) is a technologist &amp;amp; gadget-lover working as a Manager &amp;amp; Solutions Lead for Sogeti out of the Columbus Unit. Having worked on WP7 since CTP days, he now spends much of his time in spreading the word to discover the full potential of the Windows Phone platform &amp;amp; cloud-based mobile solutions in general. He passionately runs the Central Ohio Windows Phone User Group (&lt;a href="http://cowpug.org/"&gt;http://cowpug.org/&lt;/a&gt;), labors in M3 Conf (&lt;a href="http://m3conf.com/"&gt;http://m3conf.com/&lt;/a&gt;/) organization and can be found with at-least a couple of hobbyist projects at any time. His spare times call for travel and culinary adventures with the wife. Find out more at &lt;a href="http://samidipbasu.com/"&gt;http://samidipbasu.com/&lt;/a&gt;&lt;a href="http://samidipbasu.com/"&gt;.&lt;/a&gt;&lt;/p&gt;</description>      <link>http://www.silverlightshow.net/items/OData-caching-in-Windows-Phone.aspx</link>      <author>editorial@silverlightshow.net (Samidip Basu )</author>      <comments>http://www.silverlightshow.net/items/OData-caching-in-Windows-Phone.aspx#comments</comments>      <guid isPermaLink="true">http://www.silverlightshow.net/items/OData-caching-in-Windows-Phone.aspx</guid>      <pubDate>Wed, 23 Nov 2011 03:53:00 GMT</pubDate>    </item>    <item>      <title>10 Laps around Silverlight 5 (Part 7 of 10)</title>      <description>&lt;div style="border:1px solid #dddddd;padding-bottom: 5px; background-color: #f3f3f3; margin-top: 5px; padding-left: 10px; padding-top: 5px;"&gt;This article is sponsored by &lt;a href="http://ads.silverlightshow.net/a.aspx?ZoneID=53&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=95076" target="_blank"&gt;&lt;img alt="" width="0" height="0" style="border:0px solid;" src="http://ads.silverlightshow.net/a.aspx?ZoneID=53&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=95076" /&gt;Telerik RadControls for Silverlight&lt;/a&gt;. Related content from the sponsor:&lt;p&gt;&lt;strong&gt;Check out what's new!&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;    &lt;li&gt;&lt;span style="font-size: 14px;"&gt;&lt;a href="http://ads.silverlightshow.net/a.aspx?ZoneID=52&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=80309" target="_blank"&gt;    &lt;img alt="" src="http://ads.silverlightshow.net/a.aspx?ZoneID=52&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=80309" width="0" height="0" style="border-width: 0px;border-style: solid;" /&gt;The latest Q3 2011 release is out! Introducing ChartView &amp;amp; next-generation CRM demo with full source code.&lt;/a&gt;&lt;/span&gt; &lt;/li&gt;    &lt;li&gt;&lt;span style="font-size: 14px;"&gt;&lt;a href="http://ads.silverlightshow.net/a.aspx?ZoneID=51&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=78027" target="_blank"&gt;    &lt;img alt="" src="http://ads.silverlightshow.net/a.aspx?ZoneID=51&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=78027" width="0" height="0" style="border-width: 0px;border-style: solid;" /&gt;Introducing Telerik Patterns &amp;amp; Practices for Silverlight and WPF.&lt;/a&gt;&lt;/span&gt; &lt;/li&gt;    &lt;li&gt;&lt;span style="font-size: 14px;"&gt;&lt;a href="http://ads.silverlightshow.net/a.aspx?ZoneID=54&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=39336" target="_blank"&gt;    &lt;img alt="" src="http://ads.silverlightshow.net/a.aspx?ZoneID=54&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=39336" width="0" height="0" style="border-width: 0px;border-style: solid;" /&gt;The RadControls for Silverlight has been redesigned.  Explore it!&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;table width="20"&gt;    &lt;tbody&gt;        &lt;tr&gt;            &lt;td&gt;            &lt;div class="fb-like" data-show-faces="true" data-send="false" data-href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-7-of-10.aspx" data-font="segoe ui" data-layout="button_count"&gt;&lt;/div&gt;            &lt;/td&gt;            &lt;td&gt;&lt;a href="https://twitter.com/share" class="twitter-share-button" data-via="silverlightshow" data-counturl="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-7-of-10.aspx" data-count="horizontal" data-text="Reading SilverlightShow article '10 Laps around Silverlight 5 (Part 7 of 10)' by @mbcrump #sl5" data-url="http://slshow.net/vuTRyo"&gt;Tweet&lt;/a&gt;&lt;/td&gt;            &lt;td&gt;&lt;g:plusone size="medium" href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-7-of-10.aspx"&gt;&lt;/g:plusone&gt;            &lt;/td&gt;            &lt;td&gt;            &lt;/td&gt;        &lt;/tr&gt;    &lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;To contact me directly please visit my blog at &lt;a href="http://michaelcrump.net/"&gt;http://michaelcrump.net/&lt;/a&gt; or through twitter at &lt;a href="http://twitter.com/mbcrump"&gt;http://twitter.com/mbcrump&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;This article is Part 7 of the series &amp;ldquo;10 Laps around Silverlight 5.&amp;rdquo; If you have missed any other section then please see the Roadmap below.    &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="border:1px solid #dddddd;padding-bottom: 5px; background-color: #f3f3f3; margin-top: 5px; padding-left: 10px; width: 200px; float: right; margin-left: 10px; padding-top: 5px;"&gt;&lt;h3&gt;More resources...&lt;/h3&gt;&lt;ul style="list-style-type: circle; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-left: 20px; font-size: 12px;"&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/news/Free-Silverlight-Show-Webinar-Introduction-to-XAML-Development-on-Windows-8.aspx"&gt;Upcoming Webinar on Nov 29th: XAML Development on Windows 8&lt;/a&gt; &lt;/li&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/GetStarted.aspx"&gt;Get Started with Silverlight 4&lt;/a&gt; &lt;/li&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/ebooks/silverlight_exam.aspx"&gt;'Getting Ready for Microsoft Silverlight Exam 70-506' Ebook &lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style="padding-bottom: 5px; text-align: center;"&gt;&lt;a href="http://www.silverlightshow.net/ebooks/silverlight_exam.aspx"&gt;&lt;img style="border:0px solid;" alt="Getting Ready for Microsoft Silverlight Exam 70-506: Ebook" src="http://www.silverlightshow.net/Storage/sl_exam_thumb_small.png" usemap="#rade_img_map_1291385581316" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="font-size: 12px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.silverlightshow.net/ebooks.aspx"&gt;All SilverlightShow Ebooks&lt;/a&gt;&amp;nbsp;&lt;img alt="" src="http://www.silverlightshow.net/Storage/arrow-content.jpg" /&gt;&lt;/p&gt;&lt;/div&gt;To refresh your memory on what Silverlight is:&lt;p&gt;Microsoft Silverlight is an application framework for writing Rich Internet Applications. &lt;/p&gt;The run-time environment is available as a plug-in for most web browsers and works on a variety of operating systems including Windows, Mac and Linux.&lt;p&gt;To recap what we learned in the &lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-6-of-10.aspx"&gt;previous section&lt;/a&gt;:&lt;/p&gt;&lt;ul&gt;    &lt;li&gt;We spent some time building an application that uses P/Invoke or Platform Invocation to get familiar with Elevated Trust and Out of Browser applications.&amp;nbsp; We also reviewed that P/Invoke allows managed code to call native code. &lt;/li&gt;    &lt;li&gt;We then took a look at how to create a Silverlight 5 application that uses multiple windows that are separate from the main Silverlight window. We discussed how that if you close one of the newly spawned windows then it only closes that instance.&amp;nbsp; &lt;/li&gt;    &lt;li&gt;We wrapped up with creating an application that uses unrestricted file access to demonstrate creating a folder and placing a file inside of it with some content. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;In this article, I am going to discuss a few more operating system integration features in Silverlight 5 including: Default Filename for SaveFileDialog, 64-bit browser support and Power Awareness for Media Applications. Please review the Roadmap for the series before going any further.&lt;/p&gt;&lt;h3&gt;The Roadmap for this Series&lt;/h3&gt;&lt;p&gt;I&amp;rsquo;ve included the Roadmap for the series below as you may want to visit other sections as you learn Silverlight 5. I picked the following features as I thought that you may find them useful in your day-to-day work. If you want a specific topic covered then please leave it in the comments below.&lt;/p&gt;&lt;p&gt;1) &lt;strong&gt;&lt;a href="http://www.silverlightshow.net/items/Silverlight-5-Part-1-of-10.aspx"&gt;Introduction to SL5 &amp;ndash; This post which provides a brief history of Silverlight and relevant links.&lt;/a&gt;&lt;/strong&gt; &lt;/p&gt;&lt;p&gt;2) &lt;strong&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-2-of-10.aspx"&gt;Binding- Ancestor Relative Source Binding and Implicit Data Templates.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;3) &lt;strong&gt;&lt;/strong&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-3.aspx" target="_self"&gt;&lt;strong&gt;Graphics&lt;/strong&gt; &lt;strong&gt;&amp;ndash;XNA 3D API and Improved Graphics Stack&lt;/strong&gt;.&lt;/a&gt;&lt;/p&gt;&lt;p&gt;4) &lt;strong&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-4-of-10.aspx"&gt;Media - Low-Latency Sound using XNA and Remote Control and Media Command (Keys) Support.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;5) &lt;strong&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-5-of-10.aspx"&gt;Text - Text Tracking and Leading, Linked and Multi-column Text, OpenType Support, Pixel Snapped Text and TextOptions.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;6) &lt;strong&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-6-of-10.aspx"&gt;Operating System Integration - Part 1 - P/Invoke, Multiple Windows and Unrestricted File System Access in Full Trust.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;7) &lt;strong&gt;Operating System&lt;/strong&gt; &lt;strong&gt;Integration [This post]&lt;/strong&gt; Part 2 - Default Filename for SaveFileDialog, 64-bit browser support and Power Awareness.&lt;/p&gt;&lt;p&gt;8) &lt;strong&gt;&lt;/strong&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-8-of-10.aspx"&gt;&lt;strong&gt;Productivity and Performance - XAML Binding Debugging, Parser Performance Improvements and Multi-core JIT for improved start-up time.&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;9) &lt;strong&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-9-of-10.aspx"&gt;Controls - Double and Triple click support, PivotViewer and ComboBox Type-Ahead.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;10) &lt;strong&gt;&lt;/strong&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-10-of-10.aspx" target="_self"&gt;&lt;strong&gt;Other items - In-Browser HTML, PostScript and Tasks for TPL.&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;&lt;/h3&gt;&lt;h3&gt;Default Filename for SaveFileDialog&lt;/h3&gt;&lt;p&gt;In previous version of Silverlight, you could not specify the default filename for the SaveFileDialog message. In Silverlight 5 you can very easily. &lt;/p&gt;&lt;p&gt;Fire up a new Silverlight 5 project and give it any name that you want. We are going to create a simple application that contains one button and when the user clicks it the SaveFileDialog will appear with a default filename. &lt;/p&gt;&lt;p&gt;Switch over to the MainPage.xaml and add in the following code:&lt;/p&gt;&lt;div style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;StackPanel&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;HorizontalAlignment&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="Center"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;VerticalAlignment&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="Center"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Button&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;x:Name&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="btnSaveFile"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Content&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="Save File Dialog"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Click&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="btnSaveFile_Click"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;StackPanel&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Let&amp;rsquo;s switch back over to the MainPage.xaml.cs and add the following code to our button event handler:&lt;/p&gt;&lt;div style="border:1px solid silver;padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin-top: 20px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'courier new', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow-x: auto; overflow-y: auto; cursor: text; padding-top: 4px; text-align: left;" id="codeSnippetWrapper"&gt;&lt;div style="padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;     text-align: left;border-style: none;" id="codeSnippet"&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; private void btnSaveFile_Click(&lt;span style="color: #0000ff;"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt;        {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;            &lt;span style="color: #0000ff;"&gt;var&lt;/span&gt; saveFileDialog1 = new SaveFileDialog&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;                                      {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;                                          Filter = "JPeg Image|*&lt;span style="color: #cc6633;"&gt;.jpg&lt;/span&gt;|Bitmap Image|*&lt;span style="color: #cc6633;"&gt;.bmp&lt;/span&gt;|Gif Image|*&lt;span style="color: #cc6633;"&gt;.gif&lt;/span&gt;",&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;                                          DefaultFileName = "YouCanNowHaveADefaultFileName&lt;span style="color: #cc6633;"&gt;.jpeg&lt;/span&gt;"&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;                                      };&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt;            saveFileDialog1&lt;span style="color: #cc6633;"&gt;.ShowDialog&lt;/span&gt;();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'courier new', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow-x: visible; overflow-y: visible; padding-top: 0px;border-style: none;"&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt;        }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;If we run the application now, we will see the following prompt.&amp;nbsp; &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/mbcrump/______1_2.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="1" alt="1" src="http://www.silverlightshow.net/Storage/Users/mbcrump/______1_thumb.png" width="400" height="172" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;(Note: You could run this application in elevated trust to remove the security warning, see this &lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-6-of-10.aspx"&gt;post&lt;/a&gt; for details)&lt;/em&gt;&lt;/p&gt;&lt;p&gt;Go ahead and select OK and you will see the following screen:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/mbcrump/________2_2.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="2" alt="2" src="http://www.silverlightshow.net/Storage/Users/mbcrump/________2_thumb.png" width="494" height="355" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;You should notice that the File name field is filled in for us with a default save as type as Jpeg. Of course, if you didn&amp;rsquo;t want the user to see the security warning then you could run this application in elevated trust as mentioned under the image. &lt;/p&gt;&lt;h3&gt;64-bit browser support &lt;/h3&gt;&lt;p&gt;64-bit browser support is also new to Silverlight 5. If you have installed Windows 7 x64 then you already have a 64-bit version of Internet Explorer. You can find it by going to the &amp;ldquo;&lt;strong&gt;search program and files&lt;/strong&gt;&amp;rdquo; prompt and typing&lt;strong&gt; Internet Explorer&lt;/strong&gt; as shown below. &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/mbcrump/_________3_2.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="3" alt="3" src="http://www.silverlightshow.net/Storage/Users/mbcrump/_________3_thumb.png" width="383" height="104" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;If you launch Internet Explorer x64 and visit a site built with Silverlight 5 then you will see the following message:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/mbcrump/5_4.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="5" alt="5" src="http://www.silverlightshow.net/Storage/Users/mbcrump/5_thumb_1.png" width="397" height="343" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;After you click on the hyperlink then it will take you to a page that says the following: &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/mbcrump/6_4.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="6" alt="6" src="http://www.silverlightshow.net/Storage/Users/mbcrump/6_thumb_1.png" width="544" height="319" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;(Please note this message will change after the final version of Silverlight 5 is released.)&lt;/em&gt;&lt;/p&gt;&lt;p&gt;Don&amp;rsquo;t worry about this prompt, just go ahead and click &amp;ldquo;&lt;strong&gt;Install for Windows&lt;/strong&gt;&amp;rdquo; and you will now be able to run Silverlight 5 applications inside of a browser running in 64-bit mode. Pretty sweet stuff!&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/mbcrump/___7_2.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="7" alt="7" src="http://www.silverlightshow.net/Storage/Users/mbcrump/___7_thumb.png" width="546" height="431" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;&lt;br /&gt;Power Awareness for Media Apps&lt;/h3&gt;&lt;p&gt;Silverlight 5 comes with an improved power awareness feature. When you are watching a video in Silverlight 5, the screensaver will be disabled (for example, it will not kick in and distract you from your movie). It also allows the computer to sleep when the video is not playing. This is all accomplished with no additional code! You just have to be using Silverlight 5. &lt;/p&gt;&lt;h3&gt;Conclusion&lt;/h3&gt;&lt;p&gt;At this point, we have seen how you would use specify a default filename for SaveFileDialog, we looked at 64-bit browser support and power awareness for media applications. We have also discussed a few other features in Silverlight 5. In the next part of the series, I am going to take a look at a few productivity and performance features including : XAML Binding Debugging, Parser Performance Improvements and Multi-core JIT for improved start-up time.&amp;nbsp; Again, thanks for reading and please come back for the next part.&lt;/p&gt;&lt;p&gt;To contact me directly please visit my blog at &lt;a href="http://michaelcrump.net/"&gt;http://michaelcrump.net/&lt;/a&gt; or through twitter at &lt;a href="http://twitter.com/mbcrump"&gt;http://twitter.com/mbcrump&lt;/a&gt;.&lt;/p&gt;</description>      <link>http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-7-of-10.aspx</link>      <author>editorial@silverlightshow.net (Michael Crump )</author>      <comments>http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-7-of-10.aspx#comments</comments>      <guid isPermaLink="true">http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-7-of-10.aspx</guid>      <pubDate>Tue, 22 Nov 2011 10:53:00 GMT</pubDate>    </item>    <item>      <title>Working with Prism 4 Part 2: MVVM Basics and Commands</title>      <description>&lt;table width="20"&gt;    &lt;tbody&gt;        &lt;tr&gt;            &lt;td&gt;            &lt;div class="fb-like" data-show-faces="true" data-send="false" data-href="http://www.silverlightshow.net/items/Working-with-Prism-4-Part-2-MVVM-Basics-and-Commands.aspx" data-font="segoe ui" data-layout="button_count"&gt;&lt;/div&gt;            &lt;/td&gt;            &lt;td&gt;&lt;a href="https://twitter.com/share" class="twitter-share-button" data-via="silverlightshow" data-counturl="http://www.silverlightshow.net/items/Working-with-Prism-4-Part-2-MVVM-Basics-and-Commands.aspx" data-count="horizontal" data-text="Reading SilverlightShow article 'Working w/ Prism 4: MVVM Basics and Commands' by @briannoyes" data-url="http://slshow.net/vLP4um"&gt;Tweet&lt;/a&gt;&lt;/td&gt;            &lt;td&gt;&lt;g:plusone size="medium" href="http://www.silverlightshow.net/items/Working-with-Prism-4-Part-2-MVVM-Basics-and-Commands.aspx"&gt;&lt;/g:plusone&gt;            &lt;/td&gt;            &lt;td&gt;            &lt;/td&gt;        &lt;/tr&gt;    &lt;/tbody&gt;&lt;/table&gt;&lt;div style="border:1px solid #dddddd;padding-bottom: 5px; background-color: #f3f3f3; margin-top: 5px; padding-left: 10px; margin-left: 10px; padding-top: 5px;"&gt;&lt;div style="text-align: center;"&gt;&lt;div style="text-align: center;"&gt;&lt;strong&gt;This&amp;nbsp;article is also available&amp;nbsp;in print (Word, PDF) and e-reader formats (MOBI, EPUB).&lt;/strong&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;strong&gt;&lt;strong&gt;Download all formats, including source code for&lt;/strong&gt;&lt;span style="font-weight: normal;"&gt;&amp;nbsp;&lt;strong&gt;$0.99.&lt;/strong&gt;&amp;nbsp;&lt;/span&gt; &lt;a href="https://www.e-junkie.com/ecom/gb.php?c=cart&amp;amp;i=1020897&amp;amp;cl=173172&amp;amp;ejc=2" target="ej_ejc" class="ec_ejc_thkbx" onclick="javascript:return EJEJC_lc(this);"&gt;&lt;img src="http://www.e-junkie.com/ej/ej_add_to_cart.gif" alt="Add to Cart" style="border-width: 0px;border-style: solid;" /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;This is Part 2 in the series Working with Prism 4.&lt;/p&gt;&lt;h3&gt;Introduction&lt;/h3&gt;&lt;p&gt;In the &lt;a href="http://www.silverlightshow.net/items/Working-with-Prism-4-Part-1-Getting-Started.aspx" target="_self"&gt;first part of this series&lt;/a&gt;, I introduced you to the concepts of Prism 4 &amp;ndash; what the toolkit is for, as well as what the top level features are. Additionally, I stepped through the basic setup of getting a Prism application up and running &amp;ndash; creating the shell project, a module, declaring a region in the shell, and plugging a view into that region from the module.&lt;/p&gt;&lt;div style="border:1px solid #dddddd;padding-bottom: 5px; background-color: #f3f3f3; margin-top: 5px; padding-left: 10px; width: 200px; float: right; margin-left: 10px; padding-top: 5px;"&gt;&lt;h3&gt;More resources...&lt;/h3&gt;&lt;ul style="list-style-type: circle; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-left: 20px; font-size: 12px;"&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/Webinars.aspx"&gt;Upcoming SilverlightShow Webinars&lt;/a&gt; &lt;/li&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/video/WCF-RIA-Services-Webinar-4.aspx"&gt;Recordings of the Webinar Series: WCF RIA Services&lt;/a&gt; &lt;/li&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/ebooks/wcf_ria_services.aspx"&gt;'WCF RIA Services' Ebook by Brian Noyes &lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style="padding-bottom: 5px; text-align: center;"&gt;&lt;a href="http://www.silverlightshow.net/ebooks/wcf_ria_services.aspx"&gt;&lt;img style="border:0px solid;" alt="WCF RIA Services - ebook by Brian Noyes" src="http://www.silverlightshow.net/Storage/Ebooks/wcf_ria_ebook_thumb.png" usemap="#rade_img_map_1291385581316" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="font-size: 12px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.silverlightshow.net/ebooks.aspx"&gt;All SilverlightShow Ebooks&lt;/a&gt;&amp;nbsp;&lt;img alt="" src="http://www.silverlightshow.net/Storage/arrow-content.jpg" /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;In this article, I will flesh out that application a little more and show you some of the basic support for the Model-View-ViewModel (MVVM) pattern that Prism has, as well as how to use the &lt;strong&gt;DelegateCommand&lt;/strong&gt; type that Prism provides, which fits well with MVVM scenarios. An important thing to understand is that Prism is not first-and-foremost an MVVM framework. It is a toolkit for building composite applications, which may or may not choose to use the MVVM pattern. As a result, there is not a ton of framework infrastructure provided in Prism that is specifically focused on MVVM. There are other good toolkits out there, such as the &lt;a href="http://mvvmlight.codeplex.com/" target="_blank"&gt;MVVM Light&lt;/a&gt; or &lt;a href="http://caliburnmicro.codeplex.com/" target="_blank"&gt;Caliburn Micro&lt;/a&gt; toolkits that can be used in conjunction with Prism or instead of Prism if your primary goal is just to put together an MVVM application. However, I have found the combination of features of Prism for composition and MVVM to be more than sufficient for many big and small real world applications, so I usually just use Prism on its own without mixing in other toolkits, and I will keep the focus just on Prism in these articles. &lt;/p&gt;&lt;p&gt;This article will build on the sample application developed in Part 1. You can &lt;a href="http://www.silverlightshow.net/Storage/Sources/Prism101Part1.zip" target="_blank"&gt;download the starting point code from Part 1 here&lt;/a&gt;. You can &lt;a href="http://www.silverlightshow.net/Storage/Sources/Prism4MVVMAndCommandsSamplePart2.zip"&gt;download the finished sample for this article here&lt;/a&gt;.&lt;/p&gt;&lt;h3&gt;MVVM Basics&lt;/h3&gt;&lt;p&gt;I don&amp;rsquo;t intend this article to be a starting point for learning the MVVM pattern. There are many other good resources out there for that, including the &lt;a href="http://msdn.microsoft.com/en-us/magazine/dd419663.aspx" target="_blank"&gt;excellent article by Josh Smith&lt;/a&gt; and the two chapters we wrote in the &lt;a href="http://my.safaribooksonline.com/book/programming/microsoft-wpf/9780735660663" target="_blank"&gt;Prism book&lt;/a&gt; which is also &lt;a href="http://msdn.microsoft.com/en-us/library/gg406140.aspx" target="_blank"&gt;available online in various electronic forms&lt;/a&gt;. But just so you don&amp;rsquo;t have to go brush up on MVVM too much to follow along with what I will show in this article, here are the key essentials.&lt;/p&gt;&lt;p&gt;MVVM is a UI separation pattern for keeping the structural aspects of the UI (the XAML elements that you see on the screen) separated from the state and logic that supports that view. The view is just the structure of what you see on the screen. It may contain some dynamic elements such as animations, but it has no logic defining the behavior of the application from a user interaction perspective. Ideally in an MVVM application, there is no code in the code-behind class of a XAML view, just the constructor with its &lt;strong&gt;InitializeComponent&lt;/strong&gt; method call. The state (data) that is presented in the view is provided and manipulated by the view model, and interactions from the user such as selections, button presses, etc. are handled in the view model. The data that the user interacts with is stored in the model, which may not structure the data exactly as it is shown on the screen. The model data structures should be chosen based on the needs of the application as a whole. Another responsibility of the view model is to transform, as necessary, the data from the way the model wants to store and manipulate it to the shape that the view wants to see the data in.&lt;/p&gt;&lt;p&gt;The basic structure of MVVM is that the view&amp;rsquo;s &lt;strong&gt;DataContext&lt;/strong&gt; property at the root of the view will be set to an instance of the view model (View.DataContext = ViewModel). There is typically a 1:1 relationship of the class defined for the view and the class defined for the view model &amp;ndash; for example a &lt;strong&gt;CustomerListView&lt;/strong&gt; will have a &lt;strong&gt;CustomerListViewModel&lt;/strong&gt;. But there are situations where one view model definition might support more than one view or vice versa. But at runtime, the view&amp;rsquo;s &lt;strong&gt;DataContext&lt;/strong&gt; gets set to a reference to some view model instance that will provide its data and interaction logic. There are many ways the &lt;strong&gt;DataContext&lt;/strong&gt; of the view can get set to an instance of a view model. In this article I will just focus on a couple of those, specifically hooking them up statically from the XAML of the view or using &lt;strong&gt;DataTemplates&lt;/strong&gt;. But you can find many other variants out there in samples of ways to get the two hooked up to one another.&lt;/p&gt;&lt;p&gt;To hook up a view to its view model statically from the XAML, you simply create an instance of it in the XAML like the following snippet:&lt;/p&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;div id="codeSnippet" class="csharpcode"&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum1" class="lnum"&gt;   1:&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;UserControl&lt;/span&gt; &lt;span class="attr"&gt;x:Class&lt;/span&gt;&lt;span class="kwrd"&gt;="Prism101.Modules.Core.CustomerListView"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum2" class="lnum"&gt;   2:&lt;/span&gt;              ...&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum3" class="lnum"&gt;   3:&lt;/span&gt;              &lt;span class="attr"&gt;xmlns:local&lt;/span&gt;&lt;span class="kwrd"&gt;="clr-namespace:Prism101.Modules.Core"&lt;/span&gt; ...&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum4" class="lnum"&gt;   4:&lt;/span&gt;     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;UserControl.DataContext&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum5" class="lnum"&gt;   5:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;local:CustomerListViewModel&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum6" class="lnum"&gt;   6:&lt;/span&gt;     &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;UserControl.DataContext&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;To use a &lt;strong&gt;DataTemplate&lt;/strong&gt; to get them hooked up, you bind something in a parent view (typically a &lt;strong&gt;ContentControl&lt;/strong&gt; or &lt;strong&gt;ItemsControl&lt;/strong&gt;) to an instance of the view model whose view you want to render. Then you define a data template in the resources of the parent view that ties the view and view model together, and through the way &lt;strong&gt;DataTemplates&lt;/strong&gt; work, sets the &lt;strong&gt;DataContext&lt;/strong&gt; of the rendered view to the bound instance of the view model.&lt;/p&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;div id="codeSnippet" class="csharpcode"&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum1" class="lnum"&gt;   1:&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;UserControl&lt;/span&gt; &lt;span class="attr"&gt;x:Class&lt;/span&gt;&lt;span class="kwrd"&gt;="Prism101.Modules.Core.ParentView"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum2" class="lnum"&gt;   2:&lt;/span&gt;              ...&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum3" class="lnum"&gt;   3:&lt;/span&gt;              &lt;span class="attr"&gt;xmlns:local&lt;/span&gt;&lt;span class="kwrd"&gt;="clr-namespace:Prism101.Modules.Core"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum4" class="lnum"&gt;   4:&lt;/span&gt;              ...&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum5" class="lnum"&gt;   5:&lt;/span&gt;     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;UserControl.Resources&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum6" class="lnum"&gt;   6:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;DataTemplate&lt;/span&gt; &lt;span class="attr"&gt;DataType&lt;/span&gt;&lt;span class="kwrd"&gt;="local:CustomerListViewModel"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum7" class="lnum"&gt;   7:&lt;/span&gt;             &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;local:CustomerListView&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum8" class="lnum"&gt;   8:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;DataTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum9" class="lnum"&gt;   9:&lt;/span&gt;     &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;UserControl.Resources&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum10" class="lnum"&gt;  10:&lt;/span&gt;     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Grid&lt;/span&gt; &lt;span class="attr"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;="LayoutRoot"&lt;/span&gt; &lt;span class="attr"&gt;Background&lt;/span&gt;&lt;span class="kwrd"&gt;="White"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum11" class="lnum"&gt;  11:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ContentControl&lt;/span&gt; &lt;span class="attr"&gt;Content&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding ChildViewModel}"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum12" class="lnum"&gt;  12:&lt;/span&gt; ...&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;h3&gt;Commanding Basics&lt;/h3&gt;&lt;p&gt;Commands in WPF and Silverlight are based on the &lt;a href="http://en.wikipedia.org/wiki/Design_Patterns" target="_blank"&gt;Gang of Four&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/Command_pattern" target="_blank"&gt;Command&lt;/a&gt; design pattern. With commands you have an invoker and a receiver and some infrastructure in between to keep those two parties decoupled from one another as much as possible. The invoker is typically a UI element of some sort like a button, menu, or possibly a &lt;strong&gt;ComboBox&lt;/strong&gt; selection. The receiver is the handling code that takes some action based on the command being invoked. With traditional code-behind event handling of UI control events, the event handling code represented that receiver code, but it was tightly coupled to the UI element event and had to be co-located in the code behind of the view to work. With commands, particularly with the support of bindings in WPF and Silverlight, and with dependency injection support in Prism, you can have the command invoker and receiver be very loosely coupled from one another &amp;ndash; often defined in separate modules that have no references to one another or knowledge of each other&amp;rsquo;s presence.&lt;/p&gt;&lt;p&gt;Prism has two command types I&amp;rsquo;ll be covering in this series: the &lt;strong&gt;DelegateCommand&lt;/strong&gt; type which is perfect for hooking up interaction logic between an MVVM view and its view model, and the &lt;strong&gt;CompositeCommand&lt;/strong&gt;, which supports more loosely coupled, cross-module kinds of communication. Both are implementations of the &lt;strong&gt;ICommand&lt;/strong&gt; interface defined in WPF and Silverlight, which defines three members: an &lt;strong&gt;Execute&lt;/strong&gt; method, a &lt;strong&gt;CanExecute&lt;/strong&gt; method, and a &lt;strong&gt;CanExecuteChanged&lt;/strong&gt; event. The &lt;strong&gt;Execute&lt;/strong&gt; method is the crux of the &lt;strong&gt;ICommand&lt;/strong&gt; interface, it is what will be invoked whenever the invoker element has the triggering action happen to it (i.e. a button is clicked that has a command hooked up to it). The &lt;strong&gt;CanExecute&lt;/strong&gt; method can be optionally hooked up to conditionally say whether the associated invoker should be enabled or not &amp;ndash; for example if a document is not dirty, the Save command should be disabled. The associated &lt;strong&gt;CanExecuteChanged&lt;/strong&gt; event is a way for the supporting logic that determines whether the command should be enabled to notify the invoker that it should re-evaluate the &lt;strong&gt;CanExecute&lt;/strong&gt; state of the command and update the UI appropriately as things are changing behind the scenes (i.e. the document just went dirty because the user input some text or some other formatting command was invoked on the document that the Save command relates to).&lt;/p&gt;&lt;h3&gt;Step 1: Getting Some Data Into the Application&lt;/h3&gt;&lt;p&gt;Message boxes and Hello World prompts can only keep your attention for so long. So the first thing I am going to do is to use some Northwind data to add a little more real world structure to the application that I will be expanding on in this article. The sample code for this article includes a SQL script for creating the Northwind DB on your machine (assumes you have SQL Server on your machine in one of its forms). Additionally, the sample code has a WCF RIA Services domain service added to the host Web project to make it easy to retrieve and update the Northwind data from the Silverlight sample application. I am not going to go into any detail on the structure of how to do that since I have covered it in detail in my article series on &lt;a href="http://www.silverlightshow.net/items/WCF-RIA-Services-Part-1-Getting-Started.aspx" target="_blank"&gt;WCF RIA Services here&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;The steps I followed for the Silverlight sample application here is as follows:&lt;/p&gt;&lt;ul&gt;    &lt;li&gt;Ran the SQL script to create a clean copy of the Northwind database on my machine. &lt;/li&gt;    &lt;li&gt;Added an ADO.NET Entity Data Model to the Prism101.Web project from the Data project item templates in the Add New Item dialog, using the Database-first model approach to generate an entity framework model including the Customers, Orders, and Order Details tables from the Northwind database. &lt;/li&gt;    &lt;li&gt;Build the project so that the next step will see the EF model. &lt;/li&gt;    &lt;li&gt;Add a Domain Service Class to the Prism101.Web project from the Web project item templates in the Add New Item dialog, naming it &lt;strong&gt;CustomersDomainService&lt;/strong&gt;. In the wizard, I selected those same three tables from the entity model. &lt;/li&gt;    &lt;li&gt;Build the project so that it code generates the client side support for consuming the domain service and the client side entity types.    &lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Step 2: Creating a CustomerListView&lt;/h3&gt;&lt;p&gt;To get started with some MVVM views, I will replace the &lt;strong&gt;WelcomeView&lt;/strong&gt; view that was plugged in from the Core module in the last article with a &lt;strong&gt;CustomerListView&lt;/strong&gt; with a supporting view model.&lt;/p&gt;&lt;p&gt;In the Prism101.Modules.Core project, add a new Silverlight User Control to the project and name it &lt;strong&gt;CustomerListView&lt;/strong&gt;. With the designer showing in the editor, bring up the Data Sources window (Data menu, Show Data Sources). This allows you to code generate user interface controls and have the bindings for them set up (at least partially) from data types in your application. I wrote about these features in details in my book &lt;a href="http://www.amazon.com/Data-Binding-Windows-Forms-2-0/dp/032126892X" target="_blank"&gt;Data Binding with Windows Forms 2.0&lt;/a&gt; a long time ago, but you can find a more recent coverage in this &lt;a href="http://www.google.com/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;frm=1&amp;amp;source=web&amp;amp;cd=10&amp;amp;sqi=2&amp;amp;ved=0CHgQFjAJ&amp;amp;url=http%3A%2F%2Faz12722.vo.msecnd.net%2Fvs2010trainingcourse2-0%2Flabs%2Fwpf4datadrivenmasterdetailbusinessform1-1-0%2FWPF4DataDrivenMasterDetailBusinessForm.docx&amp;amp;ei=1bvHTqDeNuPW0QHLneUX&amp;amp;usg=AFQjCNHsE0J_iuJr2A3qSjUa8WW3sGAngA" target="_blank"&gt;Hands on Lab from Microsoft for WPF&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;After a moment, if you have done the steps in Step 1, you should see the Data Sources window populate with the &lt;strong&gt;Customer&lt;/strong&gt;, &lt;strong&gt;Order&lt;/strong&gt;, and &lt;strong&gt;Order_Detail&lt;/strong&gt; types.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/brian.noyes/__Figure1_2.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="Figure1" alt="Figure1" src="http://www.silverlightshow.net/Storage/Users/brian.noyes/__Figure1_thumb.png" width="244" height="182" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;If you drag and drop the Customer type from this window into the Grid in the designer, it will code generate a &lt;strong&gt;DataGrid&lt;/strong&gt; with the appropriate columns based on the properties of the &lt;strong&gt;Customer&lt;/strong&gt; entity. Because these entities are generated by RIA Services, it will also add some additional stuff into the XAML that I stripped out to transform it into an MVVM structure, specifically a &lt;strong&gt;DomainDataSource&lt;/strong&gt;. I did some other clean up in the sample code to reorder the columns from the order they were generated in. But after the cleanup, the XAML looks like that shown in the following code listing.&lt;/p&gt;&lt;div id="codeSnippetWrapper" class="csharpcode-wrapper"&gt;&lt;div id="codeSnippet" class="csharpcode"&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum1" class="lnum"&gt;   1:&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;UserControl&lt;/span&gt; &lt;span class="attr"&gt;x:Class&lt;/span&gt;&lt;span class="kwrd"&gt;="Prism101.Modules.Core.CustomerListView"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum2" class="lnum"&gt;   2:&lt;/span&gt;              &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum3" class="lnum"&gt;   3:&lt;/span&gt;              &lt;span class="attr"&gt;xmlns:x&lt;/span&gt;&lt;span class="kwrd"&gt;="http://schemas.microsoft.com/winfx/2006/xaml"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum4" class="lnum"&gt;   4:&lt;/span&gt;              &lt;span class="attr"&gt;xmlns:d&lt;/span&gt;&lt;span class="kwrd"&gt;="http://schemas.microsoft.com/expression/blend/2008"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum5" class="lnum"&gt;   5:&lt;/span&gt;              &lt;span class="attr"&gt;xmlns:mc&lt;/span&gt;&lt;span class="kwrd"&gt;="http://schemas.openxmlformats.org/markup-compatibility/2006"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum6" class="lnum"&gt;   6:&lt;/span&gt;              &lt;span class="attr"&gt;xmlns:sdk&lt;/span&gt;&lt;span class="kwrd"&gt;="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum7" class="lnum"&gt;   7:&lt;/span&gt;              &lt;span class="attr"&gt;mc:Ignorable&lt;/span&gt;&lt;span class="kwrd"&gt;="d"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum8" class="lnum"&gt;   8:&lt;/span&gt;              &lt;span class="attr"&gt;d:DesignHeight&lt;/span&gt;&lt;span class="kwrd"&gt;="300"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum9" class="lnum"&gt;   9:&lt;/span&gt;              &lt;span class="attr"&gt;d:DesignWidth&lt;/span&gt;&lt;span class="kwrd"&gt;="400"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum10" class="lnum"&gt;  10:&lt;/span&gt;     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Grid&lt;/span&gt; &lt;span class="attr"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;="LayoutRoot"&lt;/span&gt; &lt;span class="attr"&gt;Background&lt;/span&gt;&lt;span class="kwrd"&gt;="White"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum11" class="lnum"&gt;  11:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;sdk:DataGrid&lt;/span&gt; &lt;span class="attr"&gt;ItemsSource&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding Customers}"&lt;/span&gt; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum12" class="lnum"&gt;  12:&lt;/span&gt;                       &lt;span class="attr"&gt;AutoGenerateColumns&lt;/span&gt;&lt;span class="kwrd"&gt;="False"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum13" class="lnum"&gt;  13:&lt;/span&gt;                       &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;="customerDataGrid"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum14" class="lnum"&gt;  14:&lt;/span&gt;                       &lt;span class="attr"&gt;RowDetailsVisibilityMode&lt;/span&gt;&lt;span class="kwrd"&gt;="VisibleWhenSelected"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum15" class="lnum"&gt;  15:&lt;/span&gt;             &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;sdk:DataGrid.Columns&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum16" class="lnum"&gt;  16:&lt;/span&gt;                 &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;sdk:DataGridTextColumn&lt;/span&gt; &lt;span class="attr"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;="customerIDColumn"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum17" class="lnum"&gt;  17:&lt;/span&gt;                                         &lt;span class="attr"&gt;Binding&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding Path=CustomerID, Mode=OneWay}"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum18" class="lnum"&gt;  18:&lt;/span&gt;                                         &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;="Customer ID"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum19" class="lnum"&gt;  19:&lt;/span&gt;                                         &lt;span class="attr"&gt;IsReadOnly&lt;/span&gt;&lt;span class="kwrd"&gt;="True"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum20" class="lnum"&gt;  20:&lt;/span&gt;                                         &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;="SizeToHeader"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum21" class="lnum"&gt;  21:&lt;/span&gt;                 &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;sdk:DataGridTextColumn&lt;/span&gt; &lt;span class="attr"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;="companyNameColumn"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum22" class="lnum"&gt;  22:&lt;/span&gt;                                         &lt;span class="attr"&gt;Binding&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding Path=CompanyName}"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum23" class="lnum"&gt;  23:&lt;/span&gt;                                         &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;="Company Name"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum24" class="lnum"&gt;  24:&lt;/span&gt;                                         &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;="SizeToHeader"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum25" class="lnum"&gt;  25:&lt;/span&gt;                 &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;sdk:DataGridTextColumn&lt;/span&gt; &lt;span class="attr"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;="contactNameColumn"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum26" class="lnum"&gt;  26:&lt;/span&gt;                                         &lt;span class="attr"&gt;Binding&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding Path=ContactName}"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum27" class="lnum"&gt;  27:&lt;/span&gt;                                         &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;="Contact Name"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum28" class="lnum"&gt;  28:&lt;/span&gt;                                         &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;="SizeToHeader"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum29" class="lnum"&gt;  29:&lt;/span&gt;                 &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;sdk:DataGridTextColumn&lt;/span&gt; &lt;span class="attr"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;="contactTitleColumn"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum30" class="lnum"&gt;  30:&lt;/span&gt;                                         &lt;span class="attr"&gt;Binding&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding Path=ContactTitle}"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum31" class="lnum"&gt;  31:&lt;/span&gt;                                         &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;="Contact Title"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum32" class="lnum"&gt;  32:&lt;/span&gt;                                         &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;="SizeToHeader"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum33" class="lnum"&gt;  33:&lt;/span&gt;                 &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;sdk:DataGridTextColumn&lt;/span&gt; &lt;span class="attr"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;="phoneColumn"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum34" class="lnum"&gt;  34:&lt;/span&gt;                                         &lt;span class="attr"&gt;Binding&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding Path=Phone}"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum35" class="lnum"&gt;  35:&lt;/span&gt;                                         &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;="Phone"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum36" class="lnum"&gt;  36:&lt;/span&gt;                                         &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;="SizeToHeader"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum37" class="lnum"&gt;  37:&lt;/span&gt;                 &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;sdk:DataGridTextColumn&lt;/span&gt; &lt;span class="attr"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;="faxColumn"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum38" class="lnum"&gt;  38:&lt;/span&gt;                                         &lt;span class="attr"&gt;Binding&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding Path=Fax}"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum39" class="lnum"&gt;  39:&lt;/span&gt;                                         &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;="Fax"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum40" class="lnum"&gt;  40:&lt;/span&gt;                                         &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;="SizeToHeader"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum41" class="lnum"&gt;  41:&lt;/span&gt;                 &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;sdk:DataGridTextColumn&lt;/span&gt; &lt;span class="attr"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;="addressColumn"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum42" class="lnum"&gt;  42:&lt;/span&gt;                                         &lt;span class="attr"&gt;Binding&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding Path=Address}"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum43" class="lnum"&gt;  43:&lt;/span&gt;                                         &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;="Address"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum44" class="lnum"&gt;  44:&lt;/span&gt;                                         &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;="SizeToHeader"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum45" class="lnum"&gt;  45:&lt;/span&gt;                 &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;sdk:DataGridTextColumn&lt;/span&gt; &lt;span class="attr"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;="cityColumn"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum46" class="lnum"&gt;  46:&lt;/span&gt;                                         &lt;span class="attr"&gt;Binding&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding Path=City}"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum47" class="lnum"&gt;  47:&lt;/span&gt;                                         &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;="City"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum48" class="lnum"&gt;  48:&lt;/span&gt;                                         &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;="SizeToHeader"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum49" class="lnum"&gt;  49:&lt;/span&gt;                 &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;sdk:DataGridTextColumn&lt;/span&gt; &lt;span class="attr"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;="countryColumn"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum50" class="lnum"&gt;  50:&lt;/span&gt;                                         &lt;span class="attr"&gt;Binding&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding Path=Country}"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum51" class="lnum"&gt;  51:&lt;/span&gt;                                         &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;="Country"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum52" class="lnum"&gt;  52:&lt;/span&gt;                                         &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;="SizeToHeader"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum53" class="lnum"&gt;  53:&lt;/span&gt;                 &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;sdk:DataGridTextColumn&lt;/span&gt; &lt;span class="attr"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;="postalCodeColumn"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum54" class="lnum"&gt;  54:&lt;/span&gt;                                         &lt;span class="attr"&gt;Binding&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding Path=PostalCode}"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum55" class="lnum"&gt;  55:&lt;/span&gt;                                         &lt;span class="attr"&gt;Header&lt;/span&gt;&lt;span class="kwrd"&gt;="Postal Code"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum56" class="lnum"&gt;  56:&lt;/span&gt;                                         &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;="SizeToHeader"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum57" class="lnum"&gt;  57:&lt;/span&gt;             &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;sdk:DataGrid.Columns&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum58" class="lnum"&gt;  58:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;sdk:DataGrid&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum59" class="lnum"&gt;  59:&lt;/span&gt;     &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Grid&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum60" class="lnum"&gt;  60:&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;UserControl&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;You can see that the code just contains a &lt;strong&gt;DataGrid&lt;/strong&gt; and its columns for the properties of a &lt;strong&gt;Customer&lt;/strong&gt;. I&amp;rsquo;ve modified it to assume that the &lt;strong&gt;DataContext&lt;/strong&gt; of the view has a property called &lt;strong&gt;Customers&lt;/strong&gt; that the &lt;strong&gt;DataGrid.ItemsSource&lt;/strong&gt; property is bound to. There is also a Loaded event handler for the &lt;strong&gt;DomainDataSource&lt;/strong&gt; that is added into the code behind of the view from the Data Sources window drag/drop operation that I stripped out after deleting the &lt;strong&gt;DomainDataSource&lt;/strong&gt;.&lt;/p&gt;&lt;h3&gt;Step 3: Replace WelcomeView with CustomerListView&lt;/h3&gt;&lt;p&gt;Open the &lt;strong&gt;CoreModule&lt;/strong&gt; class in the Prism101.Modules.Core project and replace the creation of the &lt;strong&gt;WelcomeView&lt;/strong&gt; with the &lt;strong&gt;CustomerListView&lt;/strong&gt;.&lt;/p&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;div id="codeSnippet" class="csharpcode"&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum1" class="lnum"&gt;   1:&lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Initialize()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum2" class="lnum"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum3" class="lnum"&gt;   3:&lt;/span&gt;     var view = &lt;span class="kwrd"&gt;new&lt;/span&gt; CustomerListView();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum4" class="lnum"&gt;   4:&lt;/span&gt;     RegionManager.AddToRegion(&lt;span class="str"&gt;"MainContent"&lt;/span&gt;, view);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum5" class="lnum"&gt;   5:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;You can now delete the &lt;strong&gt;WelcomeView.xaml&lt;/strong&gt; from that project. You should be able to build and run at this point and see that the grid shows up in the MainContent region in the shell now instead of the Hello Prism of the &lt;strong&gt;WelcomeView&lt;/strong&gt;. This helps to emphasize that when using regions in Prism, the hosting view that contains a region does not need to be touched to completely alter its content, you just change what is being plugged into that container.&lt;/p&gt;&lt;h3&gt;Step 4: Add a View Model&lt;/h3&gt;&lt;p&gt;Add a class named &lt;strong&gt;CustomerListViewModel&lt;/strong&gt; to the Prism101.Modules.Core project. Add the following code to that class.&lt;/p&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;div id="codeSnippet" class="csharpcode"&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum1" class="lnum"&gt;   1:&lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; CustomerListViewModel : NotificationObject&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum2" class="lnum"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum3" class="lnum"&gt;   3:&lt;/span&gt;     CustomersDomainContext _Context = &lt;span class="kwrd"&gt;new&lt;/span&gt; CustomersDomainContext();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum4" class="lnum"&gt;   4:&lt;/span&gt;     IEnumerable&amp;lt;Customer&amp;gt; _Customers;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum5" class="lnum"&gt;   5:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum6" class="lnum"&gt;   6:&lt;/span&gt;     &lt;span class="kwrd"&gt;public&lt;/span&gt; CustomerListViewModel()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum7" class="lnum"&gt;   7:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum8" class="lnum"&gt;   8:&lt;/span&gt;         &lt;span class="kwrd"&gt;if&lt;/span&gt; (!DesignerProperties.IsInDesignTool)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum9" class="lnum"&gt;   9:&lt;/span&gt;         {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum10" class="lnum"&gt;  10:&lt;/span&gt;             _Context.Load(_Context.GetCustomersQuery(), OnLoadComplete, &lt;span class="kwrd"&gt;null&lt;/span&gt;);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum11" class="lnum"&gt;  11:&lt;/span&gt;         }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum12" class="lnum"&gt;  12:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum13" class="lnum"&gt;  13:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum14" class="lnum"&gt;  14:&lt;/span&gt;     &lt;span class="kwrd"&gt;public&lt;/span&gt; IEnumerable&amp;lt;Customer&amp;gt; Customers&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum15" class="lnum"&gt;  15:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum16" class="lnum"&gt;  16:&lt;/span&gt;         get { &lt;span class="kwrd"&gt;return&lt;/span&gt; _Customers; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum17" class="lnum"&gt;  17:&lt;/span&gt;         set&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum18" class="lnum"&gt;  18:&lt;/span&gt;         {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum19" class="lnum"&gt;  19:&lt;/span&gt;             &lt;span class="kwrd"&gt;if&lt;/span&gt; (_Customers != &lt;span class="kwrd"&gt;value&lt;/span&gt;)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum20" class="lnum"&gt;  20:&lt;/span&gt;             {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum21" class="lnum"&gt;  21:&lt;/span&gt;                 _Customers = &lt;span class="kwrd"&gt;value&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum22" class="lnum"&gt;  22:&lt;/span&gt;                 RaisePropertyChanged(() =&amp;gt; Customers);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum23" class="lnum"&gt;  23:&lt;/span&gt;             }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum24" class="lnum"&gt;  24:&lt;/span&gt;         }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum25" class="lnum"&gt;  25:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum26" class="lnum"&gt;  26:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum27" class="lnum"&gt;  27:&lt;/span&gt;     &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; OnLoadComplete(LoadOperation&amp;lt;Customer&amp;gt; loadOp)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum28" class="lnum"&gt;  28:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum29" class="lnum"&gt;  29:&lt;/span&gt;         &lt;span class="kwrd"&gt;if&lt;/span&gt; (loadOp.HasError)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum30" class="lnum"&gt;  30:&lt;/span&gt;         {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum31" class="lnum"&gt;  31:&lt;/span&gt;             MessageBox.Show(loadOp.Error.Message);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum32" class="lnum"&gt;  32:&lt;/span&gt;             loadOp.MarkErrorAsHandled();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum33" class="lnum"&gt;  33:&lt;/span&gt;             &lt;span class="kwrd"&gt;return&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum34" class="lnum"&gt;  34:&lt;/span&gt;         }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum35" class="lnum"&gt;  35:&lt;/span&gt;         Customers = _Context.Customers;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum36" class="lnum"&gt;  36:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum37" class="lnum"&gt;  37:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;The view model provides the &lt;strong&gt;Customers&lt;/strong&gt; collection of data that the view wants to bind to. It does that by having WCF RIA Services make a call to the back end and load the customer data using the &lt;strong&gt;CustomersDomainContext&lt;/strong&gt; that is a member of the view model, then exposes the resulting customer data through a property on the view model that the view will bind to. The &lt;strong&gt;CustomersDomainContext&lt;/strong&gt; is part of the code generated client code for RIA Services that acts as a proxy to the server side domain service. You can see that the Load call is an asynchronous service calls with a callback hooked up to the &lt;strong&gt;OnLoadComplete&lt;/strong&gt; method to handle errors and to populate the Customers collection property once the call is complete.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;There are a couple of important things to point out about this code. One is that in the next step I will be hooking this view model up to the view statically. That means it will get created in the designer as well. The WCF RIA Service calls to load data are not going to work in the designer. Often you will have things in your view model initialization or construction that will break the designer. To guard against this, you can use the &lt;strong&gt;DesignerProperties&lt;/strong&gt; class to avoid executing that code if you are in the designer. So the call to the &lt;strong&gt;CustomerDomainContext.Load&lt;/strong&gt; method is only done at runtime, not at design time.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Another is to notice the base class that I added to the view model class &amp;ndash; &lt;strong&gt;NotificationObject&lt;/strong&gt;. This is a base class that Prism provides that encapsulates the implementation of the &lt;strong&gt;INotifyPropertyChanged&lt;/strong&gt; interface, which is important for your view models to support for the properties they expose. The base class exposes several overloaded &lt;strong&gt;RaisePropertyChanged&lt;/strong&gt; methods you can call from your property set{} blocks to make sure that bindings in the view are refreshed when the underlying properties change. The call to &lt;strong&gt;RaisePropertyChanged&lt;/strong&gt; in the Customers property set{} block shows that the Prism base class supporting using strongly typed lambda expressions to point to the property (Customers) itself, instead of using a string for the name of the property as is normally done when raising the &lt;strong&gt;PropertyChanged&lt;/strong&gt; event directly. This makes the code more maintainable because refactoring the property name will update the &lt;strong&gt;RaisePropertyChanged&lt;/strong&gt; calls as well. If declared as a string, it may not be picked up depending on what refactoring tools you use.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;h3&gt;Step 5: Hook the view up to the view model&lt;/h3&gt;&lt;div&gt;Add a XAML namespace to the &lt;strong&gt;CustomerListView&lt;/strong&gt; so it has access to the types in its own assembly:&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;div id="codeSnippet" class="csharpcode"&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum1" class="lnum"&gt;   1:&lt;/span&gt; xmlns:local="clr-namespace:Prism101.Modules.Core"&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Then set the &lt;strong&gt;DataContext&lt;/strong&gt; of the view in the XAML to an instance of the view model as shown earlier:&lt;/p&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;div id="codeSnippet" class="csharpcode"&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum1" class="lnum"&gt;   1:&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;UserControl.DataContext&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum2" class="lnum"&gt;   2:&lt;/span&gt;     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;local:CustomerListViewModel&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum3" class="lnum"&gt;   3:&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;UserControl.DataContext&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;You should now be able to run and see the data pop into the view after the asynchronous call completes.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/brian.noyes/_Figure2_2.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="Figure2" alt="Figure2" src="http://www.silverlightshow.net/Storage/Users/brian.noyes/_Figure2_thumb.png" width="547" height="318" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;This structuring of view and view model is often referred to as &amp;ldquo;view-first&amp;rdquo;, because the view is constructed, and then it constructs and wires up its own view model (either from XAML as done here or from code behind). View-first has advantages of simplicity as well as the fact that you can leverage the design time data support of Visual Studio and Expression Blend.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;h3&gt;Step 6: Adding an Edit Command&lt;/h3&gt;&lt;div&gt;To demonstrate using &lt;strong&gt;DelegateCommands&lt;/strong&gt; to hook up communication between our view and view model for some interaction logic as well as navigating to another view using regions, I will modify the &lt;strong&gt;CustomerListView&lt;/strong&gt; slightly to add an Edit button to the top of the form.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;The XAML for the button looks like this.&lt;/div&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;div id="codeSnippet" class="csharpcode"&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum1" class="lnum"&gt;   1:&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Button&lt;/span&gt; &lt;span class="attr"&gt;Content&lt;/span&gt;&lt;span class="kwrd"&gt;="Edit"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum2" class="lnum"&gt;   2:&lt;/span&gt;         &lt;span class="attr"&gt;Command&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding EditCustomerCommand}"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum3" class="lnum"&gt;   3:&lt;/span&gt;         &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;="23"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum4" class="lnum"&gt;   4:&lt;/span&gt;         &lt;span class="attr"&gt;HorizontalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;="Left"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum5" class="lnum"&gt;   5:&lt;/span&gt;         &lt;span class="attr"&gt;VerticalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;="Top"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum6" class="lnum"&gt;   6:&lt;/span&gt;         &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;="75"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Notice the binding on the &lt;strong&gt;Command&lt;/strong&gt; property assumes there is a property on the &lt;strong&gt;DataContext&lt;/strong&gt; (the view model) named &lt;strong&gt;EditCustomerCommand&lt;/strong&gt;. Buttons in Silverlight and WPF have a &lt;strong&gt;Command&lt;/strong&gt; property that can point to an instance of an &lt;strong&gt;ICommand&lt;/strong&gt; object. If that is hooked up, the button will be enabled or disabled based on calls to the &lt;strong&gt;CanExecute&lt;/strong&gt; method of the &lt;strong&gt;ICommand&lt;/strong&gt; interface as described earlier. Additionally, when the button is clicked, it will call the &lt;strong&gt;Execute&lt;/strong&gt; method of the &lt;strong&gt;ICommand&lt;/strong&gt; object.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Rather than implementing &lt;strong&gt;ICommand&lt;/strong&gt; directly on an object, a common approach is to use an intermediary class that implements &lt;strong&gt;ICommand&lt;/strong&gt; to dispatch the calls to target methods on some other object, which in this case will be our view model. The first command type that Prism provides is the &lt;strong&gt;DelegateCommand&lt;/strong&gt; class. To add this support, first we declare the property that the button Command binding points to in the &lt;strong&gt;CustomerListViewModel&lt;/strong&gt; class, passing the target &lt;strong&gt;Execute&lt;/strong&gt; and &lt;strong&gt;CanExecute&lt;/strong&gt; handling methods through &lt;a href="http://msdn.microsoft.com/en-us/magazine/cc163970.aspx#S10" target="_blank"&gt;delegate inference&lt;/a&gt; to the constructor.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;div id="codeSnippet" class="csharpcode"&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum1" class="lnum"&gt;   1:&lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; DelegateCommand EditCustomerCommand { get; &lt;span class="kwrd"&gt;private&lt;/span&gt; set; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Next we populate that property in the constructor of the view model class:&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;div id="codeSnippet" class="csharpcode"&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum1" class="lnum"&gt;   1:&lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; CustomerListViewModel()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum2" class="lnum"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum3" class="lnum"&gt;   3:&lt;/span&gt;     EditCustomerCommand = &lt;span class="kwrd"&gt;new&lt;/span&gt; DelegateCommand(OnEditCustomer, CanEditCustomer);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum4" class="lnum"&gt;   4:&lt;/span&gt;     ...&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum5" class="lnum"&gt;   5:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Then we define the handling method that those point to.&lt;/p&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;div id="codeSnippet" class="csharpcode"&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum1" class="lnum"&gt;   1:&lt;/span&gt; &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; CanEditCustomer()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum2" class="lnum"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum3" class="lnum"&gt;   3:&lt;/span&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum4" class="lnum"&gt;   4:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum5" class="lnum"&gt;   5:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum6" class="lnum"&gt;   6:&lt;/span&gt; &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; OnEditCustomer()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum7" class="lnum"&gt;   7:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum8" class="lnum"&gt;   8:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;At this point you should be able to build and run, set a breakpoint in the &lt;strong&gt;OnEditCustomer&lt;/strong&gt; method and see that your command handler is being called. Because right now the &lt;strong&gt;CanEditCustomer&lt;/strong&gt; method returns true, the command will always be enabled. I will remedy that shortly.&lt;/p&gt;&lt;h3&gt;Step 7: Pushing selection state into the view model&lt;/h3&gt;&lt;p&gt;An important aspect of user interaction is selection in the view. But as mentioned before, in an MVVM design, all state and state manipulation should happen in the view model, not in the view. So when the user selects something in the view, the view model needs to know about it so it can take any appropriate action at that point, as well as making that selection available to command handling logic like our edit command.&lt;/p&gt;&lt;p&gt;Add the following property to the &lt;strong&gt;CustomerListViewModel&lt;/strong&gt;.&lt;/p&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;div id="codeSnippet" class="csharpcode"&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum1" class="lnum"&gt;   1:&lt;/span&gt; Customer _SelectedCustomer;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum2" class="lnum"&gt;   2:&lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; Customer SelectedCustomer&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum3" class="lnum"&gt;   3:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum4" class="lnum"&gt;   4:&lt;/span&gt;     get { &lt;span class="kwrd"&gt;return&lt;/span&gt; _SelectedCustomer; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum5" class="lnum"&gt;   5:&lt;/span&gt;     set&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum6" class="lnum"&gt;   6:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum7" class="lnum"&gt;   7:&lt;/span&gt;         &lt;span class="kwrd"&gt;if&lt;/span&gt; (_SelectedCustomer != &lt;span class="kwrd"&gt;value&lt;/span&gt;)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum8" class="lnum"&gt;   8:&lt;/span&gt;         {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum9" class="lnum"&gt;   9:&lt;/span&gt;             _SelectedCustomer = &lt;span class="kwrd"&gt;value&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum10" class="lnum"&gt;  10:&lt;/span&gt;             RaisePropertyChanged(() =&amp;gt; SelectedCustomer);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum11" class="lnum"&gt;  11:&lt;/span&gt;             EditCustomerCommand.RaiseCanExecuteChanged();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum12" class="lnum"&gt;  12:&lt;/span&gt;         }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum13" class="lnum"&gt;  13:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum14" class="lnum"&gt;  14:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Notice that in addition to doing raising the &lt;strong&gt;PropertyChanged&lt;/strong&gt; event through the base class &lt;strong&gt;RaisePropertyChanged&lt;/strong&gt; method, whenever the selected customer changes, the code makes a call to the &lt;strong&gt;EditCustomerCommand.RaiseCanExecuteChanged&lt;/strong&gt; method. This causes the &lt;strong&gt;CanExecuteChanged&lt;/strong&gt; event of the &lt;strong&gt;DelegateCommand&amp;rsquo;s&lt;/strong&gt; implementation of &lt;strong&gt;ICommand&lt;/strong&gt; to fire, which causes any command invoker such as our Edit button to update its enabled state by calling &lt;strong&gt;CanExecute&lt;/strong&gt; again.&lt;/p&gt;&lt;p&gt;Change the &lt;strong&gt;CanEditCustomer&lt;/strong&gt; method to the following.&lt;/p&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;div id="codeSnippet" class="csharpcode"&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum1" class="lnum"&gt;   1:&lt;/span&gt; &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; CanEditCustomer()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum2" class="lnum"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum3" class="lnum"&gt;   3:&lt;/span&gt;     &lt;span class="kwrd"&gt;if&lt;/span&gt; (SelectedCustomer == &lt;span class="kwrd"&gt;null&lt;/span&gt;) &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum4" class="lnum"&gt;   4:&lt;/span&gt;     &lt;span class="kwrd"&gt;else&lt;/span&gt; &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum5" class="lnum"&gt;   5:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Finally, on the &lt;strong&gt;DataGrid&lt;/strong&gt; in the view, bind the &lt;strong&gt;SelectedItem&lt;/strong&gt; property to the &lt;strong&gt;SelectedCustomer&lt;/strong&gt; property in the view model.&lt;/p&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;div id="codeSnippet" class="csharpcode"&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum1" class="lnum"&gt;   1:&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;sdk:DataGrid&lt;/span&gt; &lt;span class="attr"&gt;ItemsSource&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding Customers}"&lt;/span&gt; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum2" class="lnum"&gt;   2:&lt;/span&gt;               &lt;span class="attr"&gt;SelectedItem&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding Path=SelectedCustomer, Mode=TwoWay}"&lt;/span&gt; ...&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;As a result of this change, the Edit button will now be disabled if there is no selection in the &lt;strong&gt;DataGrid&lt;/strong&gt;. One the user selects a row in the &lt;strong&gt;DataGrid&lt;/strong&gt;, the &lt;strong&gt;SelectedItem&lt;/strong&gt; binding will push a reference to that Customer bound object into the &lt;strong&gt;SelectedCustomer&lt;/strong&gt; property in the view model. That will fire the &lt;strong&gt;CanExecuteChanged&lt;/strong&gt; event on the command, which will cause the button to requery &lt;strong&gt;CanExecute&lt;/strong&gt;, and it will enable the button since the &lt;strong&gt;SelectedCustomer&lt;/strong&gt; will no longer be null at that point.&lt;/p&gt;&lt;h3&gt;Step 8: Define an edit view to switch to&lt;/h3&gt;&lt;p&gt;As you have already seen with the &lt;strong&gt;MainContent&lt;/strong&gt; region in &lt;a href="http://www.silverlightshow.net/items/Working-with-Prism-4-Part-1-Getting-Started.aspx" target="_blank"&gt;Part 1&lt;/a&gt;, regions in Prism allow you to plug a view into a parent view&amp;rsquo;s region for presentation. This can be used to logically navigate the user from view to view. What I want to do when the edit command is invoked is to swap out the main view from presenting a list of customers to one that presents an edit form for the selected customer. To do this, I can just plug another view into the &lt;strong&gt;MainContent&lt;/strong&gt; region, replacing the list view as the active view.&lt;/p&gt;&lt;p&gt;A region is a logical container for a collection of views that can be presented within that region. You can add multiple views into the region, and depending on what kind of control the region is, it can present those views either one at a time or all at once. So far I am using a &lt;strong&gt;ContentControl&lt;/strong&gt; in the MainPage.xaml shell view as the &lt;strong&gt;MainContent&lt;/strong&gt; region. A &lt;strong&gt;ContentControl&lt;/strong&gt; can only have a single child element as its &lt;strong&gt;Content&lt;/strong&gt; at one time. But the Prism &lt;strong&gt;IRegion&lt;/strong&gt; abstraction can keep track of a collection of views and set the appropriate view as the &lt;strong&gt;Content&lt;/strong&gt; for that control when you tell it to. This concept is called activating a view in a region in Prism. The thing that actually maps the abstract region to a concrete container control is called a region adapters. There are built in region adapters supporting &lt;strong&gt;ContentControl&lt;/strong&gt;, &lt;strong&gt;ItemsControl&lt;/strong&gt;, and &lt;strong&gt;Selector&lt;/strong&gt; controls in Prism.&lt;/p&gt;&lt;p&gt;To switch to the edit view for a customer, we first have to have one. I won&amp;rsquo;t go through all the details of defining the &lt;strong&gt;CustomerEditView&lt;/strong&gt;, that is Silverlight basics and is similar to what I described earlier for creating the &lt;strong&gt;CustomerListView&lt;/strong&gt;. Instead of dragging and dropping the &lt;strong&gt;Customer&lt;/strong&gt; type from the Data Sources window with the default settings, you drop down the selection on the &lt;strong&gt;Customer&lt;/strong&gt; type in that window and select Details. Then when you do the drag and drop onto the designer, it generates a data form for a single instance of the type instead of a data grid for a collection of the type. I again trimmed out the &lt;strong&gt;DomainDataSource&lt;/strong&gt; that is added in that operation and patched up the bindings to expect a &lt;strong&gt;Customer&lt;/strong&gt; property exposed from the view&amp;rsquo;s &lt;strong&gt;DataContext&lt;/strong&gt; (view model) once it is hooked up. &lt;/p&gt;&lt;p&gt;Notice the &lt;strong&gt;Button&lt;/strong&gt; at the bottom of the listing that is bound to a &lt;strong&gt;SaveCommand&lt;/strong&gt; property it also expects to be exposed from the view model. I will hook that up once I get to defining the view model for this view in the next step. Also notice that in this case I did not wire up the view model as the &lt;strong&gt;DataContext&lt;/strong&gt; from the XAML. I will do that programmatically for this sample when the Edit command is invoked in the listing view.&lt;/p&gt;&lt;div id="codeSnippetWrapper" class="csharpcode-wrapper"&gt;&lt;div id="codeSnippet" class="csharpcode"&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum1" class="lnum"&gt;   1:&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;UserControl&lt;/span&gt; &lt;span class="attr"&gt;x:Class&lt;/span&gt;&lt;span class="kwrd"&gt;="Prism101.Modules.Core.CustomerEditView"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum2" class="lnum"&gt;   2:&lt;/span&gt;              &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum3" class="lnum"&gt;   3:&lt;/span&gt;              &lt;span class="attr"&gt;xmlns:x&lt;/span&gt;&lt;span class="kwrd"&gt;="http://schemas.microsoft.com/winfx/2006/xaml"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum4" class="lnum"&gt;   4:&lt;/span&gt;              &lt;span class="attr"&gt;xmlns:d&lt;/span&gt;&lt;span class="kwrd"&gt;="http://schemas.microsoft.com/expression/blend/2008"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum5" class="lnum"&gt;   5:&lt;/span&gt;              &lt;span class="attr"&gt;xmlns:mc&lt;/span&gt;&lt;span class="kwrd"&gt;="http://schemas.openxmlformats.org/markup-compatibility/2006"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum6" class="lnum"&gt;   6:&lt;/span&gt;              &lt;span class="attr"&gt;xmlns:sdk&lt;/span&gt;&lt;span class="kwrd"&gt;="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum7" class="lnum"&gt;   7:&lt;/span&gt;              &lt;span class="attr"&gt;mc:Ignorable&lt;/span&gt;&lt;span class="kwrd"&gt;="d"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum8" class="lnum"&gt;   8:&lt;/span&gt;              &lt;span class="attr"&gt;d:DesignHeight&lt;/span&gt;&lt;span class="kwrd"&gt;="212"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum9" class="lnum"&gt;   9:&lt;/span&gt;              &lt;span class="attr"&gt;d:DesignWidth&lt;/span&gt;&lt;span class="kwrd"&gt;="301"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum10" class="lnum"&gt;  10:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Grid&lt;/span&gt; &lt;span class="attr"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;="LayoutRoot"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum11" class="lnum"&gt;  11:&lt;/span&gt;           &lt;span class="attr"&gt;Background&lt;/span&gt;&lt;span class="kwrd"&gt;="White"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum12" class="lnum"&gt;  12:&lt;/span&gt;  &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum13" class="lnum"&gt;  13:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Grid&lt;/span&gt; &lt;span class="attr"&gt;DataContext&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding Customer}"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum14" class="lnum"&gt;  14:&lt;/span&gt;               &lt;span class="attr"&gt;HorizontalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;="Left"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum15" class="lnum"&gt;  15:&lt;/span&gt;               &lt;span class="attr"&gt;Margin&lt;/span&gt;&lt;span class="kwrd"&gt;="12,12,0,0"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum16" class="lnum"&gt;  16:&lt;/span&gt;               &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;="grid1"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum17" class="lnum"&gt;  17:&lt;/span&gt;               &lt;span class="attr"&gt;VerticalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;="Top"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum18" class="lnum"&gt;  18:&lt;/span&gt;               &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;="272"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum19" class="lnum"&gt;  19:&lt;/span&gt;             &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum20" class="lnum"&gt;  20:&lt;/span&gt;                 &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ColumnDefinition&lt;/span&gt; &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;="Auto"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum21" class="lnum"&gt;  21:&lt;/span&gt;                 &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ColumnDefinition&lt;/span&gt; &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;="Auto"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum22" class="lnum"&gt;  22:&lt;/span&gt;                 &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ColumnDefinition&lt;/span&gt; &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;="5*"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum23" class="lnum"&gt;  23:&lt;/span&gt;             &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum24" class="lnum"&gt;  24:&lt;/span&gt;             &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Grid.RowDefinitions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum25" class="lnum"&gt;  25:&lt;/span&gt;                 &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;RowDefinition&lt;/span&gt; &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;="Auto"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum26" class="lnum"&gt;  26:&lt;/span&gt;                 &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;RowDefinition&lt;/span&gt; &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;="Auto"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum27" class="lnum"&gt;  27:&lt;/span&gt;                 &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;RowDefinition&lt;/span&gt; &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;="Auto"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum28" class="lnum"&gt;  28:&lt;/span&gt;                 &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;RowDefinition&lt;/span&gt; &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;="Auto"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum29" class="lnum"&gt;  29:&lt;/span&gt;             &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Grid.RowDefinitions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum30" class="lnum"&gt;  30:&lt;/span&gt;             &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;sdk:Label&lt;/span&gt; &lt;span class="attr"&gt;Content&lt;/span&gt;&lt;span class="kwrd"&gt;="Company Name:"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum31" class="lnum"&gt;  31:&lt;/span&gt;                        &lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Column&lt;/span&gt;&lt;span class="kwrd"&gt;="0"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum32" class="lnum"&gt;  32:&lt;/span&gt;                        &lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Row&lt;/span&gt;&lt;span class="kwrd"&gt;="0"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum33" class="lnum"&gt;  33:&lt;/span&gt;                        &lt;span class="attr"&gt;HorizontalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;="Left"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum34" class="lnum"&gt;  34:&lt;/span&gt;                        &lt;span class="attr"&gt;Margin&lt;/span&gt;&lt;span class="kwrd"&gt;="3"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum35" class="lnum"&gt;  35:&lt;/span&gt;                        &lt;span class="attr"&gt;VerticalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;="Center"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum36" class="lnum"&gt;  36:&lt;/span&gt;             &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TextBox&lt;/span&gt; &lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Column&lt;/span&gt;&lt;span class="kwrd"&gt;="1"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum37" class="lnum"&gt;  37:&lt;/span&gt;                      &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;="23"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum38" class="lnum"&gt;  38:&lt;/span&gt;                      &lt;span class="attr"&gt;HorizontalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;="Left"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum39" class="lnum"&gt;  39:&lt;/span&gt;                      &lt;span class="attr"&gt;Margin&lt;/span&gt;&lt;span class="kwrd"&gt;="3,3,0,3"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum40" class="lnum"&gt;  40:&lt;/span&gt;                      &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;="companyNameTextBox"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum41" class="lnum"&gt;  41:&lt;/span&gt;                      &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding Path=CompanyName, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true, TargetNullValue=''}"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum42" class="lnum"&gt;  42:&lt;/span&gt;                      &lt;span class="attr"&gt;VerticalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;="Center"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum43" class="lnum"&gt;  43:&lt;/span&gt;                      &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;="164"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum44" class="lnum"&gt;  44:&lt;/span&gt;             &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;sdk:Label&lt;/span&gt; &lt;span class="attr"&gt;Content&lt;/span&gt;&lt;span class="kwrd"&gt;="Contact Name:"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum45" class="lnum"&gt;  45:&lt;/span&gt;                        &lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Column&lt;/span&gt;&lt;span class="kwrd"&gt;="0"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum46" class="lnum"&gt;  46:&lt;/span&gt;                        &lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Row&lt;/span&gt;&lt;span class="kwrd"&gt;="1"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum47" class="lnum"&gt;  47:&lt;/span&gt;                        &lt;span class="attr"&gt;HorizontalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;="Left"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum48" class="lnum"&gt;  48:&lt;/span&gt;                        &lt;span class="attr"&gt;Margin&lt;/span&gt;&lt;span class="kwrd"&gt;="3"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum49" class="lnum"&gt;  49:&lt;/span&gt;                        &lt;span class="attr"&gt;VerticalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;="Center"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum50" class="lnum"&gt;  50:&lt;/span&gt;             &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TextBox&lt;/span&gt; &lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Column&lt;/span&gt;&lt;span class="kwrd"&gt;="1"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum51" class="lnum"&gt;  51:&lt;/span&gt;                      &lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Row&lt;/span&gt;&lt;span class="kwrd"&gt;="1"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum52" class="lnum"&gt;  52:&lt;/span&gt;                      &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;="23"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum53" class="lnum"&gt;  53:&lt;/span&gt;                      &lt;span class="attr"&gt;HorizontalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;="Left"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum54" class="lnum"&gt;  54:&lt;/span&gt;                      &lt;span class="attr"&gt;Margin&lt;/span&gt;&lt;span class="kwrd"&gt;="3,3,0,3"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum55" class="lnum"&gt;  55:&lt;/span&gt;                      &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;="contactNameTextBox"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum56" class="lnum"&gt;  56:&lt;/span&gt;                      &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding Path=ContactName, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true, TargetNullValue=''}"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum57" class="lnum"&gt;  57:&lt;/span&gt;                      &lt;span class="attr"&gt;VerticalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;="Center"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum58" class="lnum"&gt;  58:&lt;/span&gt;                      &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;="164"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum59" class="lnum"&gt;  59:&lt;/span&gt;             &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;sdk:Label&lt;/span&gt; &lt;span class="attr"&gt;Content&lt;/span&gt;&lt;span class="kwrd"&gt;="Contact Title:"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum60" class="lnum"&gt;  60:&lt;/span&gt;                        &lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Column&lt;/span&gt;&lt;span class="kwrd"&gt;="0"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum61" class="lnum"&gt;  61:&lt;/span&gt;                        &lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Row&lt;/span&gt;&lt;span class="kwrd"&gt;="2"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum62" class="lnum"&gt;  62:&lt;/span&gt;                        &lt;span class="attr"&gt;HorizontalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;="Left"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum63" class="lnum"&gt;  63:&lt;/span&gt;                        &lt;span class="attr"&gt;Margin&lt;/span&gt;&lt;span class="kwrd"&gt;="3"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum64" class="lnum"&gt;  64:&lt;/span&gt;                        &lt;span class="attr"&gt;VerticalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;="Center"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum65" class="lnum"&gt;  65:&lt;/span&gt;             &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TextBox&lt;/span&gt; &lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Column&lt;/span&gt;&lt;span class="kwrd"&gt;="1"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum66" class="lnum"&gt;  66:&lt;/span&gt;                      &lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Row&lt;/span&gt;&lt;span class="kwrd"&gt;="2"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum67" class="lnum"&gt;  67:&lt;/span&gt;                      &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;="23"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum68" class="lnum"&gt;  68:&lt;/span&gt;                      &lt;span class="attr"&gt;HorizontalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;="Left"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum69" class="lnum"&gt;  69:&lt;/span&gt;                      &lt;span class="attr"&gt;Margin&lt;/span&gt;&lt;span class="kwrd"&gt;="3,3,0,3"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum70" class="lnum"&gt;  70:&lt;/span&gt;                      &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;="contactTitleTextBox"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum71" class="lnum"&gt;  71:&lt;/span&gt;                      &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding Path=ContactTitle, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true, TargetNullValue=''}"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum72" class="lnum"&gt;  72:&lt;/span&gt;                      &lt;span class="attr"&gt;VerticalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;="Center"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum73" class="lnum"&gt;  73:&lt;/span&gt;                      &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;="164"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum74" class="lnum"&gt;  74:&lt;/span&gt;             &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;sdk:Label&lt;/span&gt; &lt;span class="attr"&gt;Content&lt;/span&gt;&lt;span class="kwrd"&gt;="Phone:"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum75" class="lnum"&gt;  75:&lt;/span&gt;                        &lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Column&lt;/span&gt;&lt;span class="kwrd"&gt;="0"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum76" class="lnum"&gt;  76:&lt;/span&gt;                        &lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Row&lt;/span&gt;&lt;span class="kwrd"&gt;="3"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum77" class="lnum"&gt;  77:&lt;/span&gt;                        &lt;span class="attr"&gt;HorizontalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;="Left"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum78" class="lnum"&gt;  78:&lt;/span&gt;                        &lt;span class="attr"&gt;Margin&lt;/span&gt;&lt;span class="kwrd"&gt;="3"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum79" class="lnum"&gt;  79:&lt;/span&gt;                        &lt;span class="attr"&gt;VerticalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;="Center"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum80" class="lnum"&gt;  80:&lt;/span&gt;             &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TextBox&lt;/span&gt; &lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Column&lt;/span&gt;&lt;span class="kwrd"&gt;="1"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum81" class="lnum"&gt;  81:&lt;/span&gt;                      &lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Row&lt;/span&gt;&lt;span class="kwrd"&gt;="3"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum82" class="lnum"&gt;  82:&lt;/span&gt;                      &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;="23"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum83" class="lnum"&gt;  83:&lt;/span&gt;                      &lt;span class="attr"&gt;HorizontalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;="Left"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum84" class="lnum"&gt;  84:&lt;/span&gt;                      &lt;span class="attr"&gt;Margin&lt;/span&gt;&lt;span class="kwrd"&gt;="3,3,0,3"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum85" class="lnum"&gt;  85:&lt;/span&gt;                      &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;="phoneTextBox"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum86" class="lnum"&gt;  86:&lt;/span&gt;                      &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding Path=Phone, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true, TargetNullValue=''}"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum87" class="lnum"&gt;  87:&lt;/span&gt;                      &lt;span class="attr"&gt;VerticalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;="Center"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum88" class="lnum"&gt;  88:&lt;/span&gt;                      &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;="164"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum89" class="lnum"&gt;  89:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Grid&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum90" class="lnum"&gt;  90:&lt;/span&gt;         &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Button&lt;/span&gt; &lt;span class="attr"&gt;Content&lt;/span&gt;&lt;span class="kwrd"&gt;="Save"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum91" class="lnum"&gt;  91:&lt;/span&gt;                 &lt;span class="attr"&gt;Command&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding SaveCommand}"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum92" class="lnum"&gt;  92:&lt;/span&gt;                 &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;="23"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum93" class="lnum"&gt;  93:&lt;/span&gt;                 &lt;span class="attr"&gt;HorizontalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;="Left"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum94" class="lnum"&gt;  94:&lt;/span&gt;                 &lt;span class="attr"&gt;Margin&lt;/span&gt;&lt;span class="kwrd"&gt;="162,134,0,0"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum95" class="lnum"&gt;  95:&lt;/span&gt;                 &lt;span class="attr"&gt;VerticalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;="Top"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum96" class="lnum"&gt;  96:&lt;/span&gt;                 &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;="75"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum97" class="lnum"&gt;  97:&lt;/span&gt;     &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Grid&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum98" class="lnum"&gt;  98:&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;UserControl&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;h3&gt;Step 9: Define the CustomerEditViewModel&lt;/h3&gt;&lt;p&gt;When you define a view like the edit view, you quickly identify what properties are needed from your view model to support the view, in this case a &lt;strong&gt;Customer&lt;/strong&gt; property and a &lt;strong&gt;SaveCommand&lt;/strong&gt; property. Add a &lt;strong&gt;CustomerEditViewModel&lt;/strong&gt; class to the project and add the following contents to it.&lt;/p&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;div id="codeSnippet" class="csharpcode"&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum1" class="lnum"&gt;   1:&lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; CustomerEditViewModel : NotificationObject&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum2" class="lnum"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum3" class="lnum"&gt;   3:&lt;/span&gt;     &lt;span class="kwrd"&gt;public&lt;/span&gt; CustomerEditViewModel()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum4" class="lnum"&gt;   4:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum5" class="lnum"&gt;   5:&lt;/span&gt;         SaveCommand = &lt;span class="kwrd"&gt;new&lt;/span&gt; DelegateCommand(OnSave);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum6" class="lnum"&gt;   6:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum7" class="lnum"&gt;   7:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum8" class="lnum"&gt;   8:&lt;/span&gt;     &lt;span class="kwrd"&gt;public&lt;/span&gt; DelegateCommand SaveCommand { get; &lt;span class="kwrd"&gt;private&lt;/span&gt; set; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum9" class="lnum"&gt;   9:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum10" class="lnum"&gt;  10:&lt;/span&gt;     Customer _Customer;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum11" class="lnum"&gt;  11:&lt;/span&gt;     &lt;span class="kwrd"&gt;public&lt;/span&gt; Customer Customer&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum12" class="lnum"&gt;  12:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum13" class="lnum"&gt;  13:&lt;/span&gt;         get { &lt;span class="kwrd"&gt;return&lt;/span&gt; _Customer; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum14" class="lnum"&gt;  14:&lt;/span&gt;         set&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum15" class="lnum"&gt;  15:&lt;/span&gt;         {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum16" class="lnum"&gt;  16:&lt;/span&gt;             &lt;span class="kwrd"&gt;if&lt;/span&gt; (_Customer != &lt;span class="kwrd"&gt;value&lt;/span&gt;)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum17" class="lnum"&gt;  17:&lt;/span&gt;             {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum18" class="lnum"&gt;  18:&lt;/span&gt;                 _Customer = &lt;span class="kwrd"&gt;value&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum19" class="lnum"&gt;  19:&lt;/span&gt;                 RaisePropertyChanged(() =&amp;gt; Customer);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum20" class="lnum"&gt;  20:&lt;/span&gt;             }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum21" class="lnum"&gt;  21:&lt;/span&gt;         }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum22" class="lnum"&gt;  22:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum23" class="lnum"&gt;  23:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum24" class="lnum"&gt;  24:&lt;/span&gt;     &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; OnSave()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum25" class="lnum"&gt;  25:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum26" class="lnum"&gt;  26:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum27" class="lnum"&gt;  27:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;h3&gt;Step 10: Switch to the edit view when the Edit command executes&lt;/h3&gt;&lt;p&gt;As you learned in Part 1, the &lt;strong&gt;RegionManager&lt;/strong&gt; service provides the mechanism for plugging views into regions. That means if you are going to switch to the edit view from the list view model, you will need access to that service there. To gain access, you can leverage dependency injection through MEF in your view model. Add the following property declaration in the &lt;strong&gt;CustomerListViewModel&lt;/strong&gt;.&lt;/p&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;div id="codeSnippet" class="csharpcode"&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum1" class="lnum"&gt;   1:&lt;/span&gt; [Import]&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum2" class="lnum"&gt;   2:&lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; IRegionManager RegionManager { get; set; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;This view model gets constructed from the XAML of the view, so the container is not involved and can&amp;rsquo;t do the dependency injection automatically. But thanks to the &lt;strong&gt;CompositionInitializer&lt;/strong&gt; class, you can ask the container to do the injection as the view model gets constructed explicitly. Add line 7 in the the following code to the constructor of the &lt;strong&gt;CustomerListViewModel&lt;/strong&gt;. &lt;/p&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;div id="codeSnippet" class="csharpcode"&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum1" class="lnum"&gt;   1:&lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; CustomerListViewModel()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum2" class="lnum"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum3" class="lnum"&gt;   3:&lt;/span&gt;     EditCustomerCommand = &lt;span class="kwrd"&gt;new&lt;/span&gt; DelegateCommand(OnEditCustomer, CanEditCustomer);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum4" class="lnum"&gt;   4:&lt;/span&gt;     &lt;span class="kwrd"&gt;if&lt;/span&gt; (!DesignerProperties.IsInDesignTool)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum5" class="lnum"&gt;   5:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum6" class="lnum"&gt;   6:&lt;/span&gt;         _Context.Load(_Context.GetCustomersQuery(), OnLoadComplete, &lt;span class="kwrd"&gt;null&lt;/span&gt;);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum7" class="lnum"&gt;   7:&lt;/span&gt;         CompositionInitializer.SatisfyImports(&lt;span class="kwrd"&gt;this&lt;/span&gt;);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum8" class="lnum"&gt;   8:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum9" class="lnum"&gt;   9:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;That will get the &lt;strong&gt;IRegionManager&lt;/strong&gt; reference injected (the set block of the property will be called to provide the reference) by the container. However, to make sure there is a single container used by both Prism and the &lt;strong&gt;CompositionInitializer&lt;/strong&gt; class, you need to add one more overload to the &lt;strong&gt;Bootstrapper&lt;/strong&gt; class in the Prism101 shell project. &lt;/p&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;div id="codeSnippet" class="csharpcode"&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum1" class="lnum"&gt;   1:&lt;/span&gt; &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; CompositionContainer CreateContainer()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum2" class="lnum"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum3" class="lnum"&gt;   3:&lt;/span&gt;     var container = &lt;span class="kwrd"&gt;base&lt;/span&gt;.CreateContainer();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum4" class="lnum"&gt;   4:&lt;/span&gt;     CompositionHost.Initialize(container);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum5" class="lnum"&gt;   5:&lt;/span&gt;     &lt;span class="kwrd"&gt;return&lt;/span&gt; container;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum6" class="lnum"&gt;   6:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;This makes it so the container that Prism sets up is the one that is used by the &lt;strong&gt;CompositionHost&lt;/strong&gt; that sits underneath the &lt;strong&gt;CompositionInitializer&lt;/strong&gt; class.&lt;/p&gt;&lt;p&gt;Now you are ready to actually do the view switching with the region manager. Modify the &lt;strong&gt;OnEditCustomer&lt;/strong&gt; code with the following.&lt;/p&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;div id="codeSnippet" class="csharpcode"&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum1" class="lnum"&gt;   1:&lt;/span&gt; &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; OnEditCustomer()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum2" class="lnum"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum3" class="lnum"&gt;   3:&lt;/span&gt;     IRegion mainContentRegion = RegionManager.Regions[&lt;span class="str"&gt;"MainContent"&lt;/span&gt;];&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum4" class="lnum"&gt;   4:&lt;/span&gt;     &lt;span class="kwrd"&gt;bool&lt;/span&gt; alreadyExists = &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum5" class="lnum"&gt;   5:&lt;/span&gt;     &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (var view &lt;span class="kwrd"&gt;in&lt;/span&gt; mainContentRegion.Views)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum6" class="lnum"&gt;   6:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum7" class="lnum"&gt;   7:&lt;/span&gt;         &lt;span class="kwrd"&gt;if&lt;/span&gt; (view &lt;span class="kwrd"&gt;is&lt;/span&gt; CustomerEditView)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum8" class="lnum"&gt;   8:&lt;/span&gt;         {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum9" class="lnum"&gt;   9:&lt;/span&gt;             CustomerEditViewModel viewModel = ((FrameworkElement)view).DataContext &lt;span class="kwrd"&gt;as&lt;/span&gt; CustomerEditViewModel;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum10" class="lnum"&gt;  10:&lt;/span&gt;             viewModel.Customer = SelectedCustomer;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum11" class="lnum"&gt;  11:&lt;/span&gt;             mainContentRegion.Activate(view);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum12" class="lnum"&gt;  12:&lt;/span&gt;             alreadyExists = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum13" class="lnum"&gt;  13:&lt;/span&gt;         }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum14" class="lnum"&gt;  14:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum15" class="lnum"&gt;  15:&lt;/span&gt;     &lt;span class="kwrd"&gt;if&lt;/span&gt; (!alreadyExists)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum16" class="lnum"&gt;  16:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum17" class="lnum"&gt;  17:&lt;/span&gt;         CustomerEditView editView = &lt;span class="kwrd"&gt;new&lt;/span&gt; CustomerEditView();&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum18" class="lnum"&gt;  18:&lt;/span&gt;         CustomerEditViewModel viewModel = &lt;span class="kwrd"&gt;new&lt;/span&gt; CustomerEditViewModel { Customer = SelectedCustomer };&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum19" class="lnum"&gt;  19:&lt;/span&gt;         editView.DataContext = viewModel;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum20" class="lnum"&gt;  20:&lt;/span&gt;         mainContentRegion.Add(editView);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum21" class="lnum"&gt;  21:&lt;/span&gt;         mainContentRegion.Activate(editView);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum22" class="lnum"&gt;  22:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum23" class="lnum"&gt;  23:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;If you look at what this code is doing, first it obtains a reference to the &lt;strong&gt;IRegion&lt;/strong&gt; reference for the &lt;strong&gt;MainContent&lt;/strong&gt; region. Then it loops through the &lt;strong&gt;Views&lt;/strong&gt; collection exposed on the region to see if it contains an instance of a &lt;strong&gt;CustomerEditView&lt;/strong&gt;. That would be the case if the user had already switched to the edit view at least once before. If so, it obtains a reference to the view model for that view by casting the &lt;strong&gt;DataContext&lt;/strong&gt; of the view. Remember that in MVVM, View.DataContext = ViewModel. Once it has the view model reference, it can push the reference to the selected customer into the Customer property of the edit view model. Finally in that case it calls &lt;strong&gt;Activate&lt;/strong&gt; on the region to get that as the currently presented view. &lt;/p&gt;&lt;p&gt;If the view was not in the &lt;strong&gt;Views&lt;/strong&gt; collection, it simply constructs a new instance and goes through a similar process, first calling &lt;strong&gt;Add&lt;/strong&gt; before &lt;strong&gt;Activate&lt;/strong&gt;. This chunk of code should only execute the first time the edit view is visited, because the region will cache the reference to the edit view in its Views collection.&lt;/p&gt;&lt;p&gt;One thing to point out here is that I am kind of violating the principles of MVVM by explicitly constructing the &lt;strong&gt;CustomerEditView&lt;/strong&gt; type in the list view model. Typically if you were going to do it this way you would factor this code out to a Controller that managed multiple views and their view models and use a &lt;strong&gt;CompositeCommand&lt;/strong&gt; to hook things up. I&amp;rsquo;ll show that kind of structure in the next article, and in a later one I&amp;rsquo;ll highlight the newer navigation features of Prism regions that were added in Prism 4 as an even more decoupled way to switch views. But for now I wanted to show the basic view switching mechanisms of Prism regions and not have too many moving parts, so I am sacrificing a little bit of view model cleanliness for compactness for writing purposes here.&lt;/p&gt;&lt;p&gt;Once you have this code in place, you should be able to build, fire up the application, select a &lt;strong&gt;Customer&lt;/strong&gt; in the grid, press the Edit button and have the main view&amp;rsquo;s content switch to the edit form.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/brian.noyes/_Figure3_2.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px;        border-width: 0px;border-style: solid;" title="Figure3" alt="Figure3" src="http://www.silverlightshow.net/Storage/Users/brian.noyes/_Figure3_thumb.png" width="464" height="291" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The last piece for this article is to hook up the Save button in the edit form so that it can at least switch back to the main form. That means you need access to the region manager from that view model as well. The code there is very similar: &lt;/p&gt;&lt;ul&gt;    &lt;li&gt;Add an Import property for the &lt;strong&gt;IRegionManager&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;Call &lt;strong&gt;CompositionInitializer.SatifyImports&lt;/strong&gt; from the constructor in a guard clause checking to see if you are in the designer &lt;/li&gt;    &lt;li&gt;Use the region manager to activate the list view in the region &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The following code shows those changes to the &lt;strong&gt;CustomerEditViewModel&lt;/strong&gt;.&lt;/p&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;div id="codeSnippet" class="csharpcode"&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum1" class="lnum"&gt;   1:&lt;/span&gt; [Import]&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum2" class="lnum"&gt;   2:&lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; IRegionManager RegionManager { get; set; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum3" class="lnum"&gt;   3:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum4" class="lnum"&gt;   4:&lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; CustomerEditViewModel()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum5" class="lnum"&gt;   5:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum6" class="lnum"&gt;   6:&lt;/span&gt;     SaveCommand = &lt;span class="kwrd"&gt;new&lt;/span&gt; DelegateCommand(OnSave);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum7" class="lnum"&gt;   7:&lt;/span&gt;     &lt;span class="kwrd"&gt;if&lt;/span&gt; (!DesignerProperties.IsInDesignTool)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum8" class="lnum"&gt;   8:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum9" class="lnum"&gt;   9:&lt;/span&gt;         CompositionInitializer.SatisfyImports(&lt;span class="kwrd"&gt;this&lt;/span&gt;);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum10" class="lnum"&gt;  10:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum11" class="lnum"&gt;  11:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum12" class="lnum"&gt;  12:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum13" class="lnum"&gt;  13:&lt;/span&gt; &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; OnSave()&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum14" class="lnum"&gt;  14:&lt;/span&gt; {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum15" class="lnum"&gt;  15:&lt;/span&gt;     IRegion mainContentRegion = RegionManager.Regions[&lt;span class="str"&gt;"MainContent"&lt;/span&gt;];&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum16" class="lnum"&gt;  16:&lt;/span&gt;     &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (var view &lt;span class="kwrd"&gt;in&lt;/span&gt; mainContentRegion.Views)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum17" class="lnum"&gt;  17:&lt;/span&gt;     {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum18" class="lnum"&gt;  18:&lt;/span&gt;         &lt;span class="kwrd"&gt;if&lt;/span&gt; (view &lt;span class="kwrd"&gt;is&lt;/span&gt; CustomerListView)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum19" class="lnum"&gt;  19:&lt;/span&gt;         {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum20" class="lnum"&gt;  20:&lt;/span&gt;             mainContentRegion.Activate(view);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum21" class="lnum"&gt;  21:&lt;/span&gt;         }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum22" class="lnum"&gt;  22:&lt;/span&gt;     }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre class="alteven"&gt;&lt;span id="lnum23" class="lnum"&gt;  23:&lt;/span&gt; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;At this point you have a simple but functioning example of an MVVM Prism application that uses a bit of view model base class infrastructure that Prism provides in the &lt;strong&gt;NotificationObject&lt;/strong&gt; base class, &lt;strong&gt;DelegateCommands&lt;/strong&gt; to communicate from the view to the view model, and regions to do the switching of views in the main window.&lt;h3&gt;Summary&lt;/h3&gt;&lt;p&gt;You can see that it is not a lot of code, nor a lot of complexity that Prism provides&amp;nbsp; with respect to MVVM and commanding, but it provides the common pieces you need for a clean MVVM application. There is no built in implementation of the &lt;strong&gt;ICommand&lt;/strong&gt; interface in Silverlight, so it provides the &lt;strong&gt;DelegateCommand&lt;/strong&gt; to step in nicely for hooking up views to view model logic. There are other discrete pieces of functionality related to MVVM that Prism supports. I&amp;rsquo;ll touch on some of those when we get to the navigation services in Prism in a later article. There are also features like the &lt;a href="http://briannoyes.net/2011/01/15/Prism4GemsRenderingHeterogeneousCollectionsWithDataTemplateSelector.aspx" target="_blank"&gt;DataTemplateSelector capabilities&lt;/a&gt;, which are not as necessary in Silverlight 5 with the addition of implicit data templates, but can still come in handy in other scenarios. Another piece is the &lt;a href="http://briannoyes.net/2010/11/15/PromptingTheUserFromAViewModelndashPrism4Gems.aspx" target="_blank"&gt;interaction request capabilities&lt;/a&gt; that allow you to be more decoupled in your view model and not directly present pop ups but leave it up to the view to decide what the appearance of the notification to a user looks like.&lt;/p&gt;&lt;p&gt;In the next article I will expand on the communication by looking at &lt;strong&gt;CompositeCommands&lt;/strong&gt; and loosely coupled events in Prism. You can &lt;a href="http://www.silverlightshow.net/Storage/Sources/Prism4MVVMAndCommandsSamplePart2.zip" target="_blank"&gt;download the completed code for this article here&lt;/a&gt;.&lt;/p&gt;&lt;h3&gt;About the Author&lt;/h3&gt;&lt;p&gt;Brian Noyes is Chief Architect of &lt;a href="http://www.idesign.net/" target="_blank"&gt;IDesign&lt;/a&gt;, a &lt;a href="http://theregion.com/" target="_blank"&gt;Microsoft Regional Director&lt;/a&gt;, and Silverlight MVP. He is a frequent top rated speaker at conferences worldwide including Microsoft TechEd, DevConnections, VSLive!, DevTeach, and others. Brian worked directly on the Prism team with Microsoft patterns and practices and co-authored the book &lt;a href="http://my.safaribooksonline.com/book/programming/microsoft-wpf/9780735660663" target="_blank"&gt;Developers Guide to Microsoft Prism 4&lt;/a&gt;. He is also the author of Developing Applications with Windows Workflow Foundation, Smart Client Deployment with ClickOnce, and Data Binding in Windows Forms 2.0. Brian got started programming as a hobby while flying F-14 Tomcats in the U.S. Navy, later turning his passion for code into his current career. You can contact Brian through his blog at &lt;a href="http://briannoyes.net/"&gt;http://briannoyes.net/&lt;/a&gt; or on Twitter @briannoyes.&lt;/p&gt;</description>      <link>http://www.silverlightshow.net/items/Working-with-Prism-4-Part-2-MVVM-Basics-and-Commands.aspx</link>      <author>editorial@silverlightshow.net (Brian Noyes )</author>      <comments>http://www.silverlightshow.net/items/Working-with-Prism-4-Part-2-MVVM-Basics-and-Commands.aspx#comments</comments>      <guid isPermaLink="true">http://www.silverlightshow.net/items/Working-with-Prism-4-Part-2-MVVM-Basics-and-Commands.aspx</guid>      <pubDate>Mon, 21 Nov 2011 00:13:00 GMT</pubDate>    </item>    <item>      <title>Silverlight Show: 10 Laps around Silverlight 5 (Part 5 of 10)</title>      <link>http://feedproxy.google.com/~r/TheSilverlightBlog/~3/ncdFIZgMJqs/silverlight-show-10-laps-around-silverlight-5-part-5-of-10.aspx</link>      <pubDate>Fri, 18 Nov 2011 16:07:00 GMT</pubDate>      <guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10238559</guid>      <creator xmlns="http://purl.org/dc/elements/1.1/">Silverlight Team</creator>      <comments xmlns="http://purl.org/rss/1.0/modules/slash/">0</comments>      <commentRss xmlns="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/silverlight/rsscomments.aspx?WeblogPostID=10238559</commentRss>      <comments>http://blogs.msdn.com/b/silverlight/archive/2011/11/18/silverlight-show-10-laps-around-silverlight-5-part-5-of-10.aspx#comments</comments>      <description>&lt;p&gt;In this article, a discussion of the new text improvements in Silverlight 5 including: Text Tracking and Leading, Linked and Multi-column Text, OpenType Support, Pixel Snapped Text and TextOptions. Please review the Roadmap for the series before going any further.&lt;/p&gt;  &lt;h2&gt;The Roadmap for this Series&lt;/h2&gt;  &lt;p&gt;Included, the Roadmap for the series below as you may want to visit other sections as you learn Silverlight 5. I picked the following features as I thought that you may find them useful in your day-to-day work. If you want a specific topic covered then please leave it in the comments below.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://www.silverlightshow.net/items/Silverlight-5-Part-1-of-10.aspx"&gt;Introduction to SL5 – provides a brief history of Silverlight and relevant links.&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-2-of-10.aspx"&gt;Binding - Ancestor Relative Source Binding and Implicit Data Templates.&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-4-of-10.aspx"&gt;Graphics - XNA 3D API and Improved Graphics Stack.&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-4-of-10.aspx"&gt;Media - Low-Latency Sound using XNA and Remote Control and Media Command (Keys) Support.&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Text [This Post] - Text Tracking and Leading, Linked and Multi-column Text, OpenType Support, Pixel Snapped Text and TextOptions. &lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;Operating System Integration Part 1 - P/Invoke, Multiple Windows and Unrestricted File System Access in Full Trust. &lt;/li&gt;    &lt;li&gt;Operating System Integration Part 2 - Default Filename for SaveFileDialog, 64-bit browser support and Power Awareness. &lt;/li&gt;    &lt;li&gt;Productivity and Performance - XAML Binding Debugging, Parser Performance Improvements and Multi-core JIT for improved start-up time. &lt;/li&gt;    &lt;li&gt;Controls - Double and Triple click support, PivotViewer and ComboBox Type-Ahead. &lt;/li&gt;    &lt;li&gt;Other items - In-Browser HTML, PostScript and Tasks for TPL. &lt;/li&gt; &lt;/ol&gt;  &lt;h2&gt;Linked and Multi-Column Text&lt;/h2&gt;  &lt;p&gt;We will use an example that I’ve demonstrated in the past that many have found helpful. The Linked and Multi-Column Text feature enables the text of a RichTextBlock control to overflow from one into the next. Multiple RichTextBlockOverflows can be chained together to spread text across a layout. Let’s go ahead and take a look at a screenshot of a RichTextBlock with a RichTextBlockOverflow working together.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.silverlightshow.net/Storage/Users/mbcrump/1_6.png"&gt;&lt;img title="1" alt="1" src="http://www.silverlightshow.net/Storage/Users/mbcrump/1_thumb_2.png" width="705" height="512" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;As you can see from this screenshot, we had a RichTextBlock in the upper left and its content overflowed onto the RichTextBlockOverFlow #1, #2 and #3. You can think of this as something that is similar to a newspaper article. As the browser expands or contracts the content fills the available area.&lt;/p&gt;  &lt;p&gt;Let’s check out the code that made it happen: &lt;/p&gt;      &lt;p&gt;&lt;a href="http://www.silverlightshow.net/items/10-Laps-around-Silverlight-5-Part-5-of-10.aspx"&gt;Read the full post&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10238559" width="1" height="1"&gt;&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ZaZ12zJ2iuhDxYAUEm_cDVGgmCc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZaZ12zJ2iuhDxYAUEm_cDVGgmCc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ZaZ12zJ2iuhDxYAUEm_cDVGgmCc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZaZ12zJ2iuhDxYAUEm_cDVGgmCc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;&lt;a href="http://feeds.feedburner.com/~ff/TheSilverlightBlog?a=ncdFIZgMJqs:5FP2t6671Pk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheSilverlightBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheSilverlightBlog?a=ncdFIZgMJqs:5FP2t6671Pk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheSilverlightBlog?i=ncdFIZgMJqs:5FP2t6671Pk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheSilverlightBlog?a=ncdFIZgMJqs:5FP2t6671Pk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheSilverlightBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheSilverlightBlog/~4/ncdFIZgMJqs" height="1" width="1"/&gt;</description>      <category domain="http://blogs.msdn.com/b/silverlight/archive/tags/Tips+and+Training/">Tips and Training</category>      <origLink xmlns="http://rssnamespace.org/feedburner/ext/1.0">http://blogs.msdn.com/b/silverlight/archive/2011/11/18/silverlight-show-10-laps-around-silverlight-5-part-5-of-10.aspx</origLink>    </item>    <item>      <title>Facebook Graph API and Silverlight Part 2 – Publishing data</title>      <description>&lt;table&gt;    &lt;tbody&gt;        &lt;tr&gt;            &lt;td&gt;            &lt;div class="fb-like" data-show-faces="true" data-send="false" data-href="http://www.silverlightshow.net/items/Facebook-Graph-API-and-Silverlight-Part-2-Publishing-data.aspx" data-font="segoe ui" data-layout="button_count"&gt;&lt;/div&gt;            &lt;/td&gt;            &lt;td&gt;&lt;a href="https://twitter.com/share" class="twitter-share-button" data-via="silverlightshow" data-counturl="http://www.silverlightshow.net/items/Facebook-Graph-API-and-Silverlight-Part-2-Publishing-data.aspx" data-count="horizontal" data-text="Reading SilverlightShow article: Facebook Graph API &amp;amp; Silverlight Part 2 &amp;ndash; Publishing data" data-url="http://slshow.net/twq3Rs"&gt;Tweet&lt;/a&gt;&lt;/td&gt;            &lt;td&gt;&lt;g:plusone size="medium" href="http://www.silverlightshow.net/items/Facebook-Graph-API-and-Silverlight-Part-2-Publishing-data.aspx"&gt;&lt;/g:plusone&gt;            &lt;/td&gt;        &lt;/tr&gt;    &lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;This article is compatible with the latest version of Silverlight.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;This is the follow up of my article &lt;a href="http://www.silverlightshow.net/items/Facebook-Graph-API-and-Silverlight.aspx"&gt;Facebook Graph API and Silverlight&lt;/a&gt;. Don&amp;rsquo;t miss to check it out to learn more about the Facebook Graph API and how to access Facebook data in the easy way.&amp;nbsp;&lt;/p&gt;&lt;div style="border:1px solid #dddddd;width: 200px; padding-top: 5px; padding-bottom: 5px; padding-left: 10px; margin-top: 5px; margin-left: 10px; float: right; background-color: #f3f3f3;"&gt;&lt;h3&gt;More resources...&lt;/h3&gt;&lt;ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-left: 20px; font-size: 12px; list-style-type: circle;"&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/Webinars.aspx"&gt;Free SilverlightShow Webinars&lt;/a&gt; &lt;/li&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/GetStarted.aspx"&gt;Get Started with Silverlight 4&lt;/a&gt; &lt;/li&gt;    &lt;li style="padding-bottom: 5px;"&gt;&lt;a href="http://www.silverlightshow.net/ebooks/silverlight_exam.aspx"&gt;'Getting Ready for Microsoft Silverlight Exam 70-506' Ebook &lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style="padding-bottom: 5px; text-align: center;"&gt;&lt;a href="http://www.silverlightshow.net/ebooks/silverlight_exam.aspx"&gt;&lt;img style="border:0px solid;" alt="Getting Ready for Microsoft Silverlight Exam 70-506: Ebook" src="http://www.silverlightshow.net/Storage/sl_exam_thumb_small.png" usemap="#rade_img_map_1291385581316" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size: 13px;"&gt;($9.99)&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style="font-size: 12px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.silverlightshow.net/ebooks.aspx"&gt;All SilverlightShow Ebooks&lt;/a&gt;&amp;nbsp;&lt;img alt="" src="http://www.silverlightshow.net/Storage/arrow-content.jpg" /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;No API can be complete if you can&amp;rsquo;t publish data through it. Facebook Graph API sets you no boundaries. This time I focus on posting data in your or your friends&amp;rsquo; Facebook profiles &amp;ndash; like or comment on a photo, post to someone&amp;rsquo;s wall, responding to event request as attending, and so on.&lt;/p&gt;&lt;h2&gt;The big picture&lt;/h2&gt;&lt;p&gt;Again, when publishing to Facebook, you use an &lt;em&gt;access token&lt;/em&gt;. Depending on what you need to do, the access token must grant you &lt;em&gt;user data permissions, friends&amp;rsquo; data permissions or extended permissions&lt;/em&gt;. In most cases you will need combined permissions. To publish stream on public profile (that includes like or comment on a public photo) you need only &lt;em&gt;publish_stream&lt;/em&gt; permission from the extended permissions. But, if you want to use your or your friend profile, you must get access token with all sufficient permissions. That means that:&lt;/p&gt;&lt;ul&gt;    &lt;li&gt;When posting a like or comment on a photo in your own profile, you need additional &lt;em&gt;user_photos&lt;/em&gt; permission.&lt;/li&gt;    &lt;li&gt;When posting a like or comment on a friend&amp;rsquo;s photo, you need to grand &lt;em&gt;friends_photos&lt;/em&gt; permission.&lt;/li&gt;    &lt;li&gt;When responding to an event request, you need the &lt;em&gt;rsvp_event&lt;/em&gt; permission from the extended permissions set.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;And counting... It&amp;rsquo;s impossible to cover all scenarios, but you got the logic. Or just experiment with the permission sets. Facebook provides you with the Graph API Explorer to easy generate your access token - &lt;a href="https://developers.facebook.com/tools/explorer"&gt;Facebook Graph API Explorer&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;I think that&amp;rsquo;s enough for the sufficient permissions. This is only the first step. What you must do after that is issuing a &lt;em&gt;HTTP POST&lt;/em&gt; request to the appropriate url. Here are several examples again:&lt;/p&gt;&lt;ul&gt;    &lt;li&gt;If you need to like a photo, you issue a POST request to &lt;a href="https://graph.facebook.com/OBJECT_ID/likes"&gt;https://graph.facebook.com/OBJECT_ID/likes&lt;/a&gt;, where &lt;em&gt;OBJECT_ID&lt;/em&gt; is the id of the photo. You are not limited only to photos. You like any object that has a &lt;em&gt;/likes&lt;/em&gt; connection. When liking, you don&amp;rsquo;t need to send any additional information.&lt;/li&gt;    &lt;li&gt;If you need to comment a photo, you issue a POST request to &lt;a href="https://graph.facebook.com/OBJECT_ID/comments"&gt;https://graph.facebook.com/OBJECT_ID/comments&lt;/a&gt;, where &lt;em&gt;OBJECT_ID&lt;/em&gt; is the id of the photo. Again, you can comment on any object that has&lt;em&gt; /comments&lt;/em&gt; connection in the graph. The difference from liking a photo, here, is that you must send the comment message with the POST request.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;These are only examples that you apply in any other scenario. Responding to event request is posting to /EVENT_ID/response, where &lt;em&gt;response&lt;/em&gt; is attending, maybe or declined depending on whether you intend to attend the event or not. Posting to wall is sending the request to /PROFILE_ID/feed, where &lt;em&gt;PROFILE_ID&lt;/em&gt; is the id of the profile of your friend.&lt;/p&gt;&lt;p&gt;All HTTP requests can be issued in the graph API explorer.&lt;/p&gt;&lt;h2&gt;Posting in Silverlight&lt;/h2&gt;&lt;p&gt;In my first article in this series, I used &lt;em&gt;WebClient&lt;/em&gt; to get Facebook data through the Graph API. This was like a GET request. This time we need a POST request.&lt;/p&gt;After you identify the action for your request (like, comment, etc.), generate the sufficient permission set and make it clear what is the appropriate url you are to post to, it&amp;rsquo;s Silverlight show time!&lt;br /&gt;&lt;p&gt;Let me first go through liking a photo.&lt;/p&gt;&lt;div class="reCodeBlock" style="border:1px solid #7f9db9;overflow-y: auto;"&gt;&lt;div style="background-color: #ffffff;"&gt;&lt;span style="line-height: 115%; margin-left: 0px !important; font-family: 'times new roman', serif; font-size: 11px;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;private&lt;/code&gt; &lt;code style="color: #006699; font-weight: bold;"&gt;void&lt;/code&gt; &lt;code style="color: #000000;"&gt;FacebookPOSTRequest()&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f8f8f8;"&gt;&lt;span style="line-height: 115%; margin-left: 0px !important; font-family: 'times new roman', serif; font-size: 11px;"&gt;&lt;code style="color: #000000;"&gt;{&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #ffffff;"&gt;&lt;span style="line-height: 115%; font-family: 'times new roman', serif; font-size: 11px;"&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px !important; font-size: 11px;"&gt;&lt;code style="color: #000000;"&gt;HttpWebRequest request = (HttpWebRequest)WebRequest.Create(&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;new&lt;/code&gt; &lt;code style="color: #000000;"&gt;Uri(&lt;/code&gt;&lt;code style="color: blue;"&gt;"&lt;a href="https://graph.facebook.com/"&gt;https://graph.facebook.com/&lt;/a&gt;"&lt;/code&gt; &lt;code style="color: #000000;"&gt;+ picId + &lt;/code&gt;&lt;code style="color: blue;"&gt;"/likes?access_token="&lt;/code&gt; &lt;code style="color: #000000;"&gt;+ AccessToken));&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f8f8f8;"&gt;&lt;span style="line-height: 115%; font-family: 'times new roman', serif; font-size: 11px;"&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px !important; font-size: 11px;"&gt;&lt;code style="color: #000000;"&gt;request.Method = &lt;/code&gt;&lt;code style="color: blue;"&gt;"POST"&lt;/code&gt;&lt;code style="color: #000000;"&gt;;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #ffffff;"&gt;&lt;span style="line-height: 115%; font-family: 'times new roman', serif; font-size: 11px;"&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px !important; font-size: 11px;"&gt;&lt;code style="color: #000000;"&gt;request.ContentLength = 0;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f8f8f8;"&gt;&lt;span style="line-height: 115%; font-family: 'times new roman', serif; font-size: 11px;"&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px !important; font-size: 11px;"&gt;&lt;code style="color: #000000;"&gt;request.BeginGetRequestStream(&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;new&lt;/code&gt; &lt;code style="color: #000000;"&gt;AsyncCallback(RequestReady), request); &lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #ffffff;"&gt;&lt;span style="line-height: 115%; margin-left: 0px !important; font-family: 'times new roman', serif; font-size: 11px;"&gt;&lt;code style="color: #000000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;This code issues a POST request that likes the photo with id &lt;em&gt;picId&lt;/em&gt;. The sufficient permission set is in &lt;em&gt;AccessToken&lt;/em&gt;. Remember, you can like any object that has &lt;em&gt;/likes&lt;/em&gt; connection.&lt;/p&gt;If you need to comment on a photo, you replace &lt;em&gt;/likes&lt;/em&gt; in the url with &lt;em&gt;/comments&lt;/em&gt;. And, later you must also set the arguments with the comment message. When comment, you don&amp;rsquo;t need to set &lt;em&gt;ContentLength&lt;/em&gt;:&lt;br /&gt;&lt;p&gt;&lt;span style="line-height: 17px; font-family: 'times new roman', serif; font-size: 15px;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="reCodeBlock" style="border:1px solid #7f9db9;overflow-y: auto;"&gt;&lt;div style="background-color: #ffffff;"&gt;&lt;span style="margin-left: 0px !important; font-family: 'times new roman', serif; font-size: 11px;"&gt;&lt;code style="color: #000000;"&gt;HttpWebRequest request = (HttpWebRequest)WebRequest.Create(&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;new&lt;/code&gt; &lt;code style="color: #000000;"&gt;Uri(&lt;/code&gt;&lt;code style="color: blue;"&gt;"&lt;a href="https://graph.facebook.com/"&gt;https://graph.facebook.com/&lt;/a&gt;"&lt;/code&gt; &lt;code style="color: #000000;"&gt;+ picId + &lt;/code&gt;&lt;code style="color: blue;"&gt;"/comments?access_token="&lt;/code&gt; &lt;code style="color: #000000;"&gt;+ AccessToken));&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f8f8f8;"&gt;&lt;span style="margin-left: 0px !important; font-family: 'times new roman', serif; font-size: 11px;"&gt;&lt;code style="color: #000000;"&gt;request.Method = &lt;/code&gt;&lt;code style="color: blue;"&gt;"POST"&lt;/code&gt;&lt;code style="color: #000000;"&gt;;&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #ffffff;"&gt;&lt;span style="margin-left: 0px !important; font-family: 'times new roman', serif; font-size: 11px;"&gt;&lt;code style="color: #000000;"&gt;request.BeginGetRequestStream(&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;new&lt;/code&gt; &lt;code style="color: #000000;"&gt;AsyncCallback(RequestReady), request);&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;You write the comment message in the &lt;em&gt;RequestReady&lt;/em&gt; method:&lt;/p&gt;&lt;div class="reCodeBlock" style="border:1px solid #7f9db9;overflow-y: auto;"&gt;&lt;div style="background-color: #ffffff;"&gt;&lt;span style="margin-left: 0px !important; font-family: 'times new roman', serif; font-size: 11px;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;private&lt;/code&gt; &lt;code style="color: #006699; font-weight: bold;"&gt;void&lt;/code&gt; &lt;code style="color: #000000;"&gt;RequestReady(IAsyncResult asyncResult)&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f8f8f8;"&gt;&lt;span style="margin-left: 0px !important; font-family: 'times new roman', serif; font-size: 11px;"&gt;&lt;code style="color: #000000;"&gt;{&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #ffffff;"&gt;&lt;span style="font-family: 'times new roman', serif; font-size: 11px;"&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px !important; font-size: 11px;"&gt;&lt;code style="color: #000000;"&gt;HttpWebRequest request = asyncResult.AsyncState &lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;as&lt;/code&gt; &lt;code style="color: #000000;"&gt;HttpWebRequest;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f8f8f8;"&gt;&lt;span style="font-family: 'times new roman', serif; font-size: 11px;"&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px !important; font-size: 11px;"&gt;&lt;code style="color: #000000;"&gt;Stream stream = request.EndGetRequestStream(asyncResult);&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #ffffff;"&gt;&lt;span style="margin-left: 0px !important; font-family: 'times new roman', serif; font-size: 11px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f8f8f8;"&gt;&lt;span style="font-family: 'times new roman', serif; font-size: 11px;"&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px !important; font-size: 11px;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;this&lt;/code&gt;&lt;code style="color: #000000;"&gt;.Dispatcher.BeginInvoke(&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;delegate&lt;/code&gt;&lt;code style="color: #000000;"&gt;()&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #ffffff;"&gt;&lt;span style="font-family: 'times new roman', serif; font-size: 11px;"&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px !important; font-size: 11px;"&gt;&lt;code style="color: #000000;"&gt;{&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f8f8f8;"&gt;&lt;span style="font-family: 'times new roman', serif; font-size: 11px;"&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px !important; font-size: 11px;"&gt;&lt;code style="color: #008200;"&gt;// Write the POST arguments&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #ffffff;"&gt;&lt;span style="font-family: 'times new roman', serif; font-size: 11px;"&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px !important; font-size: 11px;"&gt;&lt;code style="color: #000000;"&gt;StreamWriter writer = &lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;new&lt;/code&gt; &lt;code style="color: #000000;"&gt;StreamWriter(stream);&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f8f8f8;"&gt;&lt;span style="font-family: 'times new roman', serif; font-size: 11px;"&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px !important; font-size: 11px;"&gt;&lt;code style="color: #000000;"&gt;writer.Write(&lt;/code&gt;&lt;code style="color: blue;"&gt;"message=my comment"&lt;/code&gt;&lt;code style="color: #000000;"&gt;);&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #ffffff;"&gt;&lt;span style="font-family: 'times new roman', serif; font-size: 11px;"&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px !important; font-size: 11px;"&gt;&lt;code style="color: #000000;"&gt;writer.Flush();&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f8f8f8;"&gt;&lt;span style="font-family: 'times new roman', serif; font-size: 11px;"&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px !important; font-size: 11px;"&gt;&lt;code style="color: #000000;"&gt;writer.Close();&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #ffffff;"&gt;&lt;span style="font-family: 'times new roman', serif; font-size: 11px;"&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px !important; font-size: 11px;"&gt;&lt;code style="color: #000000;"&gt;request.BeginGetResponse(&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;new&lt;/code&gt; &lt;code style="color: #000000;"&gt;AsyncCallback(ResponseReady), request);&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f8f8f8;"&gt;&lt;span style="font-family: 'times new roman', serif; font-size: 11px;"&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px !important; font-size: 11px;"&gt;&lt;code style="color: #000000;"&gt;});&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #ffffff;"&gt;&lt;span style="margin-left: 0px !important; font-family: 'times new roman', serif; font-size: 11px;"&gt;&lt;code style="color: #000000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;span style="line-height: 17px; font-family: 'times new roman', serif; font-size: 15px;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;You find the required arguments with their names on &lt;a href="http://developers.facebook.com/docs/reference/api/"&gt;http://developers.facebook.com/docs/reference/api/&lt;/a&gt;.&lt;/p&gt;&lt;span&gt; When liking a photo you just flush and close the &lt;em&gt;StreamWriter &lt;/em&gt;after creating it:&lt;/span&gt;&lt;p&gt;&lt;span style="line-height: 17px; font-family: 'times new roman', serif; font-size: 15px;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="reCodeBlock" style="border:1px solid #7f9db9;overflow-y: auto;"&gt;&lt;div style="background-color: #ffffff;"&gt;&lt;span style="margin-left: 0px !important; font-family: 'times new roman', serif; font-size: 11px;"&gt;&lt;code style="color: #000000;"&gt;StreamWriter writer = &lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;new&lt;/code&gt; &lt;code style="color: #000000;"&gt;StreamWriter(stream);&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f8f8f8;"&gt;&lt;span style="margin-left: 0px !important; font-family: 'times new roman', serif; font-size: 11px;"&gt;&lt;code style="color: #000000;"&gt;writer.Flush();&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #ffffff;"&gt;&lt;span style="margin-left: 0px !important; font-family: 'times new roman', serif; font-size: 11px;"&gt;&lt;code style="color: #000000;"&gt;writer.Close();&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f8f8f8;"&gt;&lt;span style="margin-left: 0px !important; font-family: 'times new roman', serif; font-size: 11px;"&gt;&lt;code style="color: #000000;"&gt;request.BeginGetResponse(&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;new&lt;/code&gt; &lt;code style="color: #000000;"&gt;AsyncCallback(ResponseReady), request);&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;The same is valid for the event response. Here is the url for the event response with &lt;em&gt;attending:&lt;/em&gt;&lt;/p&gt;&lt;div class="reCodeBlock" style="border:1px solid #7f9db9;overflow-y: auto;"&gt;&lt;div style="background-color: #ffffff;"&gt;&lt;span style="margin-left: 0px !important; font-family: 'times new roman', serif; font-size: 11px;"&gt;&lt;code style="color: #000000;"&gt;HttpWebRequest request = (HttpWebRequest)WebRequest.Create(&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;new&lt;/code&gt; &lt;code style="color: #000000;"&gt;Uri(&lt;/code&gt;&lt;code style="color: blue;"&gt;"&lt;a href="https://graph.facebook.com/"&gt;https://graph.facebook.com/&lt;/a&gt;"&lt;/code&gt; &lt;code style="color: #000000;"&gt;+ eventId + &lt;/code&gt;&lt;code style="color: blue;"&gt;"/attending?access_token="&lt;/code&gt; &lt;code style="color: #000000;"&gt;+ AccessToken));&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;To parse the result from the request, you use the &lt;em&gt;ResponseReady&lt;/em&gt; method:&lt;/p&gt;&lt;div class="reCodeBlock" style="border:1px solid #7f9db9;overflow-y: auto;"&gt;&lt;div style="background-color: #ffffff;"&gt;&lt;span style="margin-left: 0px !important; font-size: 11px;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;private&lt;/code&gt; &lt;code style="color: #006699; font-weight: bold;"&gt;void&lt;/code&gt; &lt;code style="color: #000000;"&gt;ResponseReady(IAsyncResult asyncResult)&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f8f8f8;"&gt;&lt;span style="margin-left: 0px !important; font-size: 11px;"&gt;&lt;code style="color: #000000;"&gt;{&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #ffffff;"&gt;&lt;span style="font-size: 11px;"&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px !important; font-size: 11px;"&gt;&lt;code style="color: #000000;"&gt;HttpWebRequest request = asyncResult.AsyncState &lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;as&lt;/code&gt; &lt;code style="color: #000000;"&gt;HttpWebRequest;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f8f8f8;"&gt;&lt;span style="font-size: 11px;"&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px !important; font-size: 11px;"&gt;&lt;code style="color: #000000;"&gt;HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asyncResult);&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #ffffff;"&gt;&lt;span style="font-size: 11px;"&gt;&lt;code&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;/code&gt;&lt;span style="margin-left: 36px !important; font-size: 11px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f8f8f8;"&gt;&lt;span style="font-size: 11px;"&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px !important; font-size: 11px;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;this&lt;/code&gt;&lt;code style="color: #000000;"&gt;.Dispatcher.BeginInvoke(&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;delegate&lt;/code&gt;&lt;code style="color: #000000;"&gt;()&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #ffffff;"&gt;&lt;span style="font-size: 11px;"&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px !important; font-size: 11px;"&gt;&lt;code style="color: #000000;"&gt;{&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f8f8f8;"&gt;&lt;span style="font-size: 11px;"&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px !important; font-size: 11px;"&gt;&lt;code style="color: #000000;"&gt;Stream responseStream = response.GetResponseStream();&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #ffffff;"&gt;&lt;span style="font-size: 11px;"&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px !important; font-size: 11px;"&gt;&lt;code style="color: #000000;"&gt;StreamReader reader = &lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;new&lt;/code&gt; &lt;code style="color: #000000;"&gt;StreamReader(responseStream);&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f8f8f8;"&gt;&lt;span style="font-size: 11px;"&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px !important; font-size: 11px;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;string&lt;/code&gt; &lt;code style="color: #000000;"&gt;result = reader.ReadToEnd();&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #ffffff;"&gt;&lt;span style="font-size: 11px;"&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px !important; font-size: 11px;"&gt;&lt;code style="color: #000000;"&gt;});&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background-color: #f8f8f8;"&gt;&lt;span style="margin-left: 0px !important; font-size: 11px;"&gt;&lt;code style="color: #000000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;h2&gt;Conclusion&lt;/h2&gt;&lt;p&gt;In this article the focus was on issuing a POST request in Silverlight to harness the Facebook Graph API publishing capabilities. You learned what you need to do to gain the sufficient permission set depending on the action you do. For accessing Facebook data, read the first article from the series - &lt;a href="http://www.silverlightshow.net/items/Facebook-Graph-API-and-Silverlight.aspx"&gt;Facebook Graph API and Silverlight&lt;/a&gt;. In part 3 of the series I will show you how to create albums and upload images.&lt;/p&gt;&lt;p&gt;Feel free to leave you comment on everything that isn&amp;rsquo;t clear! I will be glad to share my answer, if I can.&lt;/p&gt;&lt;div id="-chrome-auto-translate-plugin-dialog" style="opacity: 1 !important; background-image: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; background-color: transparent !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; position: absolute !important; top: 0px; left: 0px; overflow-x: visible !important; overflow-y: visible !important; z-index: 999999 !important; display: none; text-align: left;"&gt;&lt;div style="max-width: 300px !important; color: #fafafa !important; opacity: 0.8 !important; border-top-left-radius: 10px 10px !important; border-top-right-radius: 10px 10px !important; border-bottom-right-radius: 10px 10px !important; border-bottom-left-radius: 10px 10px !important; background-color: #363636 !important; font-size: 16px !important; padding-top: 8px !important; padding-right: 8px !important; padding-bottom: 8px !important; padding-left: 8px !important; overflow-x: visible !important; overflow-y: visible !important; background-image: -webkit-gradient(linear, 0% 0%, 100% 100%, from(#000000), color-stop(0.5, #363636), to(#000000)); z-index: 999999 !important;         text-align: left;border-width: 0px !important;border-color: #000000 !important;"&gt;&lt;div class="translate"&gt;&lt;/div&gt;&lt;div class="additional"&gt;&lt;/div&gt;&lt;/div&gt;&lt;img alt="" src="http://www.google.com/uds/css/small-logo.png" onclick="document.location.href='http://translate.google.com/';" style="position: absolute !important; z-index: -1 !important; right: 1px !important; top: -20px !important; cursor: pointer !important; border-top-left-radius: 20px 20px; border-top-right-radius: 20px 20px; border-bottom-right-radius: 20px 20px; border-bottom-left-radius: 20px 20px; background-color: rgba(200, 200, 200, 0.292969) !important; padding-top: 3px !important; padding-right: 5px !important; padding-bottom: 0px !important; padding-left: 5px !important; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important;" /&gt;&lt;/div&gt;</description>      <link>http://www.silverlightshow.net/items/Facebook-Graph-API-and-Silverlight-Part-2-Publishing-data.aspx</link>      <author>editorial@silverlightshow.net (Lazar Nikolov )</author>      <comments>http://www.silverlightshow.net/items/Facebook-Graph-API-and-Silverlight-Part-2-Publishing-data.aspx#comments</comments>      <guid isPermaLink="true">http://www.silverlightshow.net/items/Facebook-Graph-API-and-Silverlight-Part-2-Publishing-data.aspx</guid>      <pubDate>Thu, 17 Nov 2011 14:01:00 GMT</pubDate>    </item>  </channel></rss>
