<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.silverlight.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:evnet="http://www.mscommunities.com/rssmodule/"><channel><title>Justin myJustin = new Microsoft.Silverlight.Justin();</title><link>http://blogs.silverlight.net/blogs/justinangel/default.aspx</link><description>Justin Angel works for Microsoft where he contributes to improving the Silverlight UX. </description><dc:language>en</dc:language><generator>CommunityServer 2007 (Build: 20416.853)</generator><item><title>Silverlight TreeView Advanced Scenarios (TreeViewExtended)</title><link>http://blogs.silverlight.net/blogs/justinangel/archive/2009/05/19/silverlight-treeview-advanced-scenarios-treeviewextended.aspx</link><pubDate>Tue, 19 May 2009 22:32:32 GMT</pubDate><guid isPermaLink="false">d0d632c8-a6f7-4f68-b0ce-26aaafd62132:221903</guid><dc:creator>JustinAngel</dc:creator><slash:comments>9</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.silverlight.net/blogs/justinangel/rsscomments.aspx?PostID=221903</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.silverlight.net/blogs/justinangel/commentapi.aspx?PostID=221903</wfw:comment><comments>http://blogs.silverlight.net/blogs/justinangel/archive/2009/05/19/silverlight-treeview-advanced-scenarios-treeviewextended.aspx#comments</comments><description>&lt;div style="font-family: arial"&gt;   &lt;div style="font-family: arial"&gt;     &lt;p&gt;Hi Folks,&lt;/p&gt;      &lt;p&gt;One of the most important tenants of Silverlight Controls development we picked up in Microsoft is WPF Compatibility. &lt;/p&gt;      &lt;p&gt;That means, that if we end up building FooControl in Silverlight and FooControl exists in WPF we’ll end up with the same API and behaviour. &lt;/p&gt;      &lt;p&gt;Why is that good for you? It allows you to reuse to code from Silverlight in WPF. If we spin up new API or have differentiating behaviours you really won’t be able to to reuse your XAML and Code in WPF. &lt;/p&gt;      &lt;p&gt;Why could this introduce problems? Well, The WPF API and Behaviours aren’t a divine decree. Some scenarios might not be covered by the WPF control. &lt;/p&gt;      &lt;p&gt;We’ve hit this issue pretty hard when it comes to TreeView. The WPF TreeView doesn’t fully meet all user requirements, but we still want to be WPF Subset compat.        &lt;br /&gt;Hard choice, eh? &lt;/p&gt;      &lt;p&gt;So, allow me to introduce a TreeViewExtended class that solves some of this issues. &lt;/p&gt;      &lt;p&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;Download code @ &lt;a title="http://silverlight.net/blogs/justinangel/BlogStorage/TreeViewExtended.zip" href="http://silverlight.net/blogs/justinangel/BlogStorage/TreeViewExtended.zip"&gt;http://silverlight.net/blogs/justinangel/BlogStorage/TreeViewExtended.zip&lt;/a&gt;&amp;#160; &lt;br /&gt;(To get TreeViewExtended and extension methods to work, include TreeViewExtended.cs in your project and go crazy.)&lt;/p&gt;      &lt;p&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;&lt;strong&gt;&lt;u&gt;Prologue:&lt;/u&gt;&lt;/strong&gt; &lt;strong&gt;Setting up a Hello World TreeView&lt;/strong&gt;&lt;/p&gt;      &lt;p&gt;Prerequisites for this article:        &lt;br /&gt;1. &lt;a href="http://silverlight.net/blogs/justinangel/archive/2008/11/18/silverlight-toolkit-treeview-treeviewitem-amp-hierarchaldatatemplate.aspx" target="_blank"&gt;Silverlight Toolkit: TreeView, TreeViewItem &amp;amp; HierarchalDataTemplate&lt;/a&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;If you don’t know how TreeView works, please read the afore mentioned article. &lt;/p&gt;      &lt;p&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;Here’s our basic TreeView:&lt;/p&gt;      &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;       &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;UserControl&lt;/span&gt;&lt;span style="color: red"&gt; x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Class&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;TreeViewExtended.MainPage&amp;quot;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160; &lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;&lt;/span&gt; &lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160; &lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;&lt;/span&gt; &lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160; &lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls&amp;quot;&lt;/span&gt; &lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160; &lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;common&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;clr-namespace:System.Windows;assembly=System.Windows.Controls&amp;quot;&lt;/span&gt; &lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160; &lt;span style="color: red"&gt;Width&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;400&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Height&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;300&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;UserControl.Resources&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;common&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;HierarchicalDataTemplate&lt;/span&gt;&lt;span style="color: red"&gt; x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Key&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;myHierarchicalTemplate&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; ItemsSource&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color: #a31515"&gt;Binding&lt;/span&gt;&lt;span style="color: red"&gt; Items&lt;/span&gt;&lt;span style="color: blue"&gt;}&amp;quot; &amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBlock&lt;/span&gt;&lt;span style="color: red"&gt; Text&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color: #a31515"&gt;Binding&lt;/span&gt;&lt;span style="color: red"&gt; myString&lt;/span&gt;&lt;span style="color: blue"&gt;}&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;common&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;HierarchicalDataTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;UserControl.Resources&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;StackPanel&lt;/span&gt;&lt;span style="color: red"&gt; x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;LayoutRoot&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Background&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;White&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; VerticalAlignment&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Stretch&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeView&lt;/span&gt;&lt;span style="color: red"&gt; VerticalAlignment&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Stretch&amp;quot;&lt;/span&gt;&amp;#160; &lt;/p&gt;        &lt;p style="margin: 0px"&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; &lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;trv&amp;quot;&lt;/span&gt; &lt;/p&gt;        &lt;p style="margin: 0px"&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; &lt;span style="color: red"&gt;ItemTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color: #a31515"&gt;StaticResource&lt;/span&gt;&lt;span style="color: red"&gt; myHierarchicalTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;}&amp;quot;&lt;/span&gt; &lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;StackPanel&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;UserControl&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;     &lt;/div&gt;      &lt;p&gt;Nothing too fancy, Just a TreeView with a HierarchichalDataTemplate. &lt;/p&gt;      &lt;p&gt;Here’s some sample data we’ll use in this solution:&lt;/p&gt;      &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;       &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;partial&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;MainPage&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;UserControl&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;{&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;ObservableCollection&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;myItem&lt;/span&gt;&amp;gt; itemsSource =&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ObservableCollection&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;myItem&lt;/span&gt;&amp;gt;()&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;myItem&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;Hello&amp;quot;&lt;/span&gt;, &lt;/p&gt;        &lt;p style="margin: 0px"&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; &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;myItem&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;World&amp;quot;&lt;/span&gt;),&lt;/p&gt;        &lt;p style="margin: 0px"&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; &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;myItem&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;Foo&amp;quot;&lt;/span&gt;),&lt;/p&gt;        &lt;p style="margin: 0px"&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; &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;myItem&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;Bar&amp;quot;&lt;/span&gt;)),&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;myItem&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;Moo&amp;quot;&lt;/span&gt;,&lt;/p&gt;        &lt;p style="margin: 0px"&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; &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;myItem&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;Boo&amp;quot;&lt;/span&gt;,&lt;/p&gt;        &lt;p style="margin: 0px"&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; &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;myItem&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;Goo&amp;quot;&lt;/span&gt;))), &lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; };&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; MainPage()&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; InitializeComponent();&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; trv.ItemsSource = itemsSource;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;        &lt;p style="margin: 0px"&gt;}&lt;/p&gt;     &lt;/div&gt;      &lt;p&gt;And here’s the C# type we’ll use:&lt;/p&gt;      &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;       &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;myItem&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;{&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; myItem(&lt;span style="color: blue"&gt;string&lt;/span&gt; myString, &lt;span style="color: blue"&gt;params&lt;/span&gt; &lt;span style="color: #2b91af"&gt;myItem&lt;/span&gt;[] myItems)&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;ObservableCollection&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;myItem&lt;/span&gt;&amp;gt; itemsObservableCollection = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ObservableCollection&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;myItem&lt;/span&gt;&amp;gt;();&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;foreach&lt;/span&gt; (&lt;span style="color: blue"&gt;var&lt;/span&gt; item &lt;span style="color: blue"&gt;in&lt;/span&gt; myItems)&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; itemsObservableCollection.Add(item);&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Items = itemsObservableCollection;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; myString { &lt;span style="color: blue"&gt;get&lt;/span&gt;; &lt;span style="color: blue"&gt;set&lt;/span&gt;; }&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ObservableCollection&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;myItem&lt;/span&gt;&amp;gt; Items { &lt;span style="color: blue"&gt;get&lt;/span&gt;; &lt;span style="color: blue"&gt;set&lt;/span&gt;; }&lt;/p&gt;        &lt;p style="margin: 0px"&gt;}&lt;/p&gt;     &lt;/div&gt;      &lt;p&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;When we run this simple TreeView sample we’ll see the following TreeView:&lt;/p&gt;      &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_749AD411.png"&gt;&lt;img title="image" style="display: inline" height="203" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_7563142E.png" width="464" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;      &lt;p&gt;And Fully expanded:&lt;/p&gt;      &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_1B58C485.png"&gt;&lt;img title="image" style="display: inline" height="300" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_0C41E5AB.png" width="468" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;      &lt;p&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;&lt;strong&gt;Chapter #1: Finding a TreeViewItem based on a Business Class instance &lt;/strong&gt;&lt;/p&gt;      &lt;p&gt;Let’s create a Button that once Clicked it changes the “Moo” TreeViewItem to FontSize=20. &lt;/p&gt;      &lt;p&gt;To do that, we’ll use the TreeView.ItemContainerGenerator shown here:&lt;/p&gt;      &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_5D0FFA13.png"&gt;&lt;img title="image" style="display: inline" height="172" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_7BE66DF1.png" width="684" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;      &lt;p&gt;The ContainerFromItem allows us to find a TreeViewItem based on a specific Business class. &lt;/p&gt;      &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_41F72B05.png"&gt;&lt;img title="image" style="display: inline" height="133" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_19E47BE6.png" width="687" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;      &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_5FF538F9.png"&gt;&lt;img title="image" style="display: inline" height="143" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_53F348C5.png" width="684" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;      &lt;p&gt;So, Let’s add the button:&lt;/p&gt;      &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;       &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Button&lt;/span&gt;&lt;span style="color: red"&gt; VerticalAlignment&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Bottom&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Content&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Change Moo TreeViewItem FontSize&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Click&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Button_Click&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;     &lt;/div&gt;      &lt;p&gt;And Let’s write the code needed to get the TreeViewItem:&lt;/p&gt;      &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;       &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;ObservableCollection&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;myItem&lt;/span&gt;&amp;gt; itemsSource =&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160; &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ObservableCollection&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;myItem&lt;/span&gt;&amp;gt;()&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160; {&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;myItem&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;Hello&amp;quot;&lt;/span&gt;, &lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;myItem&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;World&amp;quot;&lt;/span&gt;),&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;myItem&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;Foo&amp;quot;&lt;/span&gt;),&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;myItem&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;Bar&amp;quot;&lt;/span&gt;)),&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;myItem&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;Moo&amp;quot;&lt;/span&gt;,&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;myItem&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;Boo&amp;quot;&lt;/span&gt;,&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;myItem&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;Goo&amp;quot;&lt;/span&gt;))), &lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160; };&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Button_Click(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;RoutedEventArgs&lt;/span&gt; e)&lt;/p&gt;        &lt;p style="margin: 0px"&gt;{&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;myItem&lt;/span&gt; mooElement = itemsSource[1];&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt; mootreeViewItem =&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (&lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt;)trv.ItemContainerGenerator.ContainerFromItem(mooElement);&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; mootreeViewItem.FontSize = 20;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;}&lt;/p&gt;     &lt;/div&gt;      &lt;p&gt;Let’s run this sample: &lt;/p&gt;      &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_3E296068.png"&gt;&lt;img title="image" style="display: inline" height="227" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_63B2DDC9.png" width="434" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;      &lt;p&gt;And click the sample:&lt;/p&gt;      &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_70408AE5.png"&gt;&lt;img title="image" style="display: inline" height="248" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_6EFBF206.png" width="456" border="0" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;Now let’s change the sample to change the TreeViewItem for ‘Boo’&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;ObservableCollection&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;myItem&lt;/span&gt;&amp;gt; itemsSource =&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160; &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ObservableCollection&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;myItem&lt;/span&gt;&amp;gt;()&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;myItem&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;Hello&amp;quot;&lt;/span&gt;, &lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;myItem&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;World&amp;quot;&lt;/span&gt;),&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;myItem&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;Foo&amp;quot;&lt;/span&gt;),&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;myItem&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;Bar&amp;quot;&lt;/span&gt;)),&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;myItem&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;Moo&amp;quot;&lt;/span&gt;,&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;myItem&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;Boo&amp;quot;&lt;/span&gt;,&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;myItem&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;Goo&amp;quot;&lt;/span&gt;))), &lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160; };&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Button_Click(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;RoutedEventArgs&lt;/span&gt; e)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;{&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;myItem&lt;/span&gt; booElement = itemsSource[1].Items[0];&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt; bootreeViewItem =&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (&lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt;)trv.ItemContainerGenerator.ContainerFromItem(booElement);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; bootreeViewItem.FontSize = 20;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;}&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;What do you think that’ll happen when we run this sample? &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_71C1A6F9.png"&gt;&lt;img title="image" style="display: inline" height="298" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_56A8D7EB.png" width="778" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;But why is BooTreeViewItem empty? Well, it’s because an ItemContainerGenerator only knows the Items of the same level. &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_4387AB3F.png"&gt;&lt;img title="image" style="display: inline" height="182" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_09986853.png" width="600" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;So, The TreeViewItem itself has an ItemContainerGenerator we’ll need to access.&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Button_Click(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;RoutedEventArgs&lt;/span&gt; e)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;{&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;myItem&lt;/span&gt; mooElement = itemsSource[1];&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt; mootreeViewItem =&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (&lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt;)trv.ItemContainerGenerator.ContainerFromItem(mooElement);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;myItem&lt;/span&gt; booElement = mooElement.Items[0];&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt; bootreeViewItem =&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (&lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt;)mootreeViewItem.ItemContainerGenerator.ContainerFromItem(booElement);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; bootreeViewItem.FontSize = 20;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;}&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;And when we run this sample:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_6185B933.png"&gt;&lt;img title="image" style="display: inline" height="153" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_67CC8FC1.png" width="410" border="0" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;So, first we had to get the ‘Moo’ TreeViewItem and than the ‘Boo’ TreeViewItem..&lt;/p&gt;    &lt;p&gt;You can see how this gets a bit tricky if you’re just looking for any element in the TreeView. &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Introducing &lt;strong&gt;TreeViewWorkarounds&lt;/strong&gt;.       &lt;br /&gt;Based on the principles shown in this article up until now, you can easily create a method to iterate over all TreeViewItem and search for items.&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TreeViewWorkarounds&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;{&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt; ContainerFromItem(&lt;span style="color: blue"&gt;this&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TreeView&lt;/span&gt; treeView, &lt;span style="color: blue"&gt;object&lt;/span&gt; item)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt; containerThatMightContainItem = (&lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt;)treeView.ItemContainerGenerator.ContainerFromItem(item);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (containerThatMightContainItem != &lt;span style="color: blue"&gt;null&lt;/span&gt;)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; containerThatMightContainItem;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;else&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; ContainerFromItem(treeView.ItemContainerGenerator, treeView.Items, item);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt; ContainerFromItem(&lt;span style="color: #2b91af"&gt;ItemContainerGenerator&lt;/span&gt; parentItemContainerGenerator, &lt;span style="color: #2b91af"&gt;ItemCollection&lt;/span&gt; itemCollection, &lt;span style="color: blue"&gt;object&lt;/span&gt; item)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;foreach&lt;/span&gt; (&lt;span style="color: blue"&gt;object&lt;/span&gt; curChildItem &lt;span style="color: blue"&gt;in&lt;/span&gt; itemCollection)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt; parentContainer = (&lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt;)parentItemContainerGenerator.ContainerFromItem(curChildItem);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (parentContainer == &lt;span style="color: blue"&gt;null&lt;/span&gt;)&lt;/p&gt;      &lt;p style="margin: 0px"&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; &lt;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: blue"&gt;null&lt;/span&gt;;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt; containerThatMightContainItem = (&lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt;)parentContainer.ItemContainerGenerator.ContainerFromItem(item);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (containerThatMightContainItem != &lt;span style="color: blue"&gt;null&lt;/span&gt;)&lt;/p&gt;      &lt;p style="margin: 0px"&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; &lt;span style="color: blue"&gt;return&lt;/span&gt; containerThatMightContainItem;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt; recursionResult = ContainerFromItem(parentContainer.ItemContainerGenerator, parentContainer.Items, item);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (recursionResult != &lt;span style="color: blue"&gt;null&lt;/span&gt;)&lt;/p&gt;      &lt;p style="margin: 0px"&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; &lt;span style="color: blue"&gt;return&lt;/span&gt; recursionResult;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: blue"&gt;null&lt;/span&gt;;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;object&lt;/span&gt; ItemFromContainer(&lt;span style="color: blue"&gt;this&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TreeView&lt;/span&gt; treeView, &lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt; container)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt; itemThatMightBelongToContainer = (&lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt;)treeView.ItemContainerGenerator.ItemFromContainer(container);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (itemThatMightBelongToContainer != &lt;span style="color: blue"&gt;null&lt;/span&gt;)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; itemThatMightBelongToContainer;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;else&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; ItemFromContainer(treeView.ItemContainerGenerator, treeView.Items, container);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;object&lt;/span&gt; ItemFromContainer(&lt;span style="color: #2b91af"&gt;ItemContainerGenerator&lt;/span&gt; parentItemContainerGenerator, &lt;span style="color: #2b91af"&gt;ItemCollection&lt;/span&gt; itemCollection, &lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt; container)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;foreach&lt;/span&gt; (&lt;span style="color: blue"&gt;object&lt;/span&gt; curChildItem &lt;span style="color: blue"&gt;in&lt;/span&gt; itemCollection)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt; parentContainer = (&lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt;)parentItemContainerGenerator.ContainerFromItem(curChildItem);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (parentContainer == &lt;span style="color: blue"&gt;null&lt;/span&gt;)&lt;/p&gt;      &lt;p style="margin: 0px"&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; &lt;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: blue"&gt;null&lt;/span&gt;;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt; itemThatMightBelongToContainer = (&lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt;)parentContainer.ItemContainerGenerator.ItemFromContainer(container);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (itemThatMightBelongToContainer != &lt;span style="color: blue"&gt;null&lt;/span&gt;)&lt;/p&gt;      &lt;p style="margin: 0px"&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; &lt;span style="color: blue"&gt;return&lt;/span&gt; itemThatMightBelongToContainer;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt; recursionResult = ItemFromContainer(parentContainer.ItemContainerGenerator, parentContainer.Items, container) &lt;span style="color: blue"&gt;as&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt;;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (recursionResult != &lt;span style="color: blue"&gt;null&lt;/span&gt;)&lt;/p&gt;      &lt;p style="margin: 0px"&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; &lt;span style="color: blue"&gt;return&lt;/span&gt; recursionResult;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: blue"&gt;null&lt;/span&gt;;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;}&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;Using these extension methods isn’t hard at all: &lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Button_Click(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;RoutedEventArgs&lt;/span&gt; e)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;{&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;//myItem mooElement = itemsSource[1];&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;//TreeViewItem mootreeViewItem =&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;//&amp;#160;&amp;#160;&amp;#160; (TreeViewItem)trv.ItemContainerGenerator.ContainerFromItem(mooElement);&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;//myItem booElement = mooElement.Items[0];&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;//TreeViewItem bootreeViewItem =&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;//&amp;#160;&amp;#160;&amp;#160; (TreeViewItem)mootreeViewItem.ItemContainerGenerator.ContainerFromItem(booElement);&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;//bootreeViewItem.FontSize = 20;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; trv.ContainerFromItem(itemsSource[1].Items[0]).FontSize = 20;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;}&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;Let’s run this sample:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_1238C0DF.png"&gt;&lt;img title="image" style="display: inline" height="244" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_1F32A0F0.png" width="416" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;Much easier to use, eh? &lt;/p&gt;    &lt;p&gt;Don’t worry about the code for the extension methods, you can freely use it. &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Chapter #2: Searching for any TreeViewItems based on predicates&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;Based on the code from the previous extension methods, we can build a TreeView search based on predicates. &lt;/p&gt;    &lt;p&gt;Essentially, we’d like to enable using search lambda predicates:&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;trv.FindContainer(t =&amp;gt; ((&lt;span style="color: #2b91af"&gt;myItem&lt;/span&gt;) t.Header).myString == &lt;span style="color: #a31515"&gt;&amp;quot;Boo&amp;quot;&lt;/span&gt;).FontSize = 20;&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;&amp;#160;&lt;/p&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;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;We’ll add the FindContainer extension method to iterate over all TreeView and check the predicate. &lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TreeViewWorkarounds&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;{&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt; FindContainer(&lt;span style="color: blue"&gt;this&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TreeView&lt;/span&gt; treeView, &lt;span style="color: #2b91af"&gt;Predicate&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt;&amp;gt; condition)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; FindContainer(treeView.ItemContainerGenerator, treeView.Items, condition);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt; FindContainer(&lt;span style="color: #2b91af"&gt;ItemContainerGenerator&lt;/span&gt; parentItemContainerGenerator, &lt;span style="color: #2b91af"&gt;ItemCollection&lt;/span&gt; itemCollection, &lt;span style="color: #2b91af"&gt;Predicate&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt;&amp;gt; condition)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;foreach&lt;/span&gt; (&lt;span style="color: blue"&gt;object&lt;/span&gt; curChildItem &lt;span style="color: blue"&gt;in&lt;/span&gt; itemCollection)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt; containerThatMightMeetTheCondition= (&lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt;)parentItemContainerGenerator.ContainerFromItem(curChildItem);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (containerThatMightMeetTheCondition == &lt;span style="color: blue"&gt;null&lt;/span&gt;)&lt;/p&gt;      &lt;p style="margin: 0px"&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; &lt;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: blue"&gt;null&lt;/span&gt;;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (condition(containerThatMightMeetTheCondition))&lt;/strong&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;strong&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; &lt;span style="color: blue"&gt;return&lt;/span&gt; containerThatMightMeetTheCondition;&lt;/strong&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt; recursionResult = FindContainer(containerThatMightMeetTheCondition.ItemContainerGenerator, containerThatMightMeetTheCondition.Items, condition);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (recursionResult != &lt;span style="color: blue"&gt;null&lt;/span&gt;)&lt;/p&gt;      &lt;p style="margin: 0px"&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; &lt;span style="color: blue"&gt;return&lt;/span&gt; recursionResult;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: blue"&gt;null&lt;/span&gt;;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Let’s run this code sample: &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_45285146.png"&gt;&lt;img title="image" style="display: inline" height="272" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_3D30AEE4.png" width="438" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;We can also use this method to look for parent TreeViewItems.&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;trv.FindContainer(t =&amp;gt; ((&lt;span style="color: #2b91af"&gt;myItem&lt;/span&gt;)t.Header).Items.Any(i =&amp;gt; i.myString == &lt;span style="color: #a31515"&gt;&amp;quot;World&amp;quot;&lt;/span&gt;)).FontSize = 20;&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;In this code, we’re looking for any TreeViewItem that has a Child with the word “World” in it. &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_430B527D.png"&gt;&lt;img title="image" style="display: inline" height="327" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_3B13B01B.png" width="414" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Really, once you get the power of lambda search predicates, you can do a lot with the FindContainer extension method. &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Chapter #3: Exposing a TreeView.Containers collection&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;Sometimes, you just want to have a collection of all the TreeViewItems in the TreeView.      &lt;br /&gt;Maybe you want to check something, or manually search those items. &lt;/p&gt;    &lt;p&gt;We’ll inherit from the normal TreeView to create TreeViewExtended:&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TreeViewExtended&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;TreeView&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;{&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; TreeViewExtended()&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;this&lt;/span&gt;.DefaultStyleKey = &lt;span style="color: blue"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;TreeView&lt;/span&gt;);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;}&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;Next, we’ll change our sample to work with this new TreeView:&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;UserControl&lt;/span&gt;&lt;span style="color: red"&gt; x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Class&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;TreeViewExtended.MainPage&amp;quot;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160; &lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;&lt;/span&gt; &lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160; &lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;&lt;/span&gt; &lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160; &lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls&amp;quot;&lt;/span&gt; &lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160; &lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;common&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;clr-namespace:System.Windows;assembly=System.Windows.Controls&amp;quot;&lt;/span&gt; &lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160; &lt;strong&gt;&lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;TreeViewExtended&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;clr-namespace:System.Windows.Controls&amp;quot;&lt;/span&gt; &lt;/strong&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160; &lt;span style="color: red"&gt;Width&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;400&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Height&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;300&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;UserControl.Resources&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;common&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;HierarchicalDataTemplate&lt;/span&gt;&lt;span style="color: red"&gt; x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Key&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;myHierarchicalTemplate&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; ItemsSource&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color: #a31515"&gt;Binding&lt;/span&gt;&lt;span style="color: red"&gt; Items&lt;/span&gt;&lt;span style="color: blue"&gt;}&amp;quot; &amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBlock&lt;/span&gt;&lt;span style="color: red"&gt; Text&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color: #a31515"&gt;Binding&lt;/span&gt;&lt;span style="color: red"&gt; myString&lt;/span&gt;&lt;span style="color: blue"&gt;}&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;common&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;HierarchicalDataTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;UserControl.Resources&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;StackPanel&lt;/span&gt;&lt;span style="color: red"&gt; x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;LayoutRoot&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Background&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;White&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; VerticalAlignment&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Stretch&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: green"&gt;&amp;lt;!--&amp;lt;controls:TreeView VerticalAlignment=&amp;quot;Stretch&amp;quot;&amp;#160; x:Name=&amp;quot;trv&amp;quot; ItemTemplate=&amp;quot;{StaticResource myHierarchicalTemplate}&amp;quot;&amp;#160; /&amp;gt;--&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;strong&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeViewExtended&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeViewExtended&lt;/span&gt;&lt;/strong&gt;&lt;span style="color: red"&gt; VerticalAlignment&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Stretch&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;trv&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; ItemTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color: #a31515"&gt;StaticResource&lt;/span&gt;&lt;span style="color: red"&gt; myHierarchicalTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;}&amp;quot;&lt;/span&gt; &lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Button&lt;/span&gt;&lt;span style="color: red"&gt; VerticalAlignment&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Bottom&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Content&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Do something&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Click&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Button_Click&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;StackPanel&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;UserControl&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;And obviously, everything works as we expected:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_7A0530B6.png"&gt;&lt;img title="image" style="display: inline" height="311" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_44203B9C.png" width="424" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;Now, let’s implement our collection.&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TreeViewExtended&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;TreeView&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;{&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; TreeViewExtended()&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;this&lt;/span&gt;.DefaultStyleKey = &lt;span style="color: blue"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;TreeView&lt;/span&gt;);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af"&gt;IEnumerable&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt;&amp;gt; Containers&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;get&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; GetTreeViewItems(&lt;span style="color: blue"&gt;this&lt;/span&gt;.ItemContainerGenerator, &lt;span style="color: blue"&gt;this&lt;/span&gt;.Items);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: #2b91af"&gt;IEnumerable&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt;&amp;gt; GetTreeViewItems(&lt;span style="color: #2b91af"&gt;ItemContainerGenerator&lt;/span&gt; parentItemContainerGenerator, &lt;span style="color: #2b91af"&gt;ItemCollection&lt;/span&gt; itemCollection)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;foreach&lt;/span&gt; (&lt;span style="color: blue"&gt;object&lt;/span&gt; curChildItem &lt;span style="color: blue"&gt;in&lt;/span&gt; itemCollection)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt; container = (&lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt;)parentItemContainerGenerator.ContainerFromItem(curChildItem);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (container != &lt;span style="color: blue"&gt;null&lt;/span&gt;)&lt;/p&gt;      &lt;p style="margin: 0px"&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; &lt;span style="color: blue"&gt;yield&lt;/span&gt; &lt;span style="color: blue"&gt;return&lt;/span&gt; container;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;foreach&lt;/span&gt; (&lt;span style="color: blue"&gt;var&lt;/span&gt; treeViewItem &lt;span style="color: blue"&gt;in&lt;/span&gt; GetTreeViewItems(container.ItemContainerGenerator, container.Items))&lt;/p&gt;      &lt;p style="margin: 0px"&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; &lt;span style="color: blue"&gt;yield&lt;/span&gt; &lt;span style="color: blue"&gt;return&lt;/span&gt; treeViewItem;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;}&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;And let’s print out the TreeViewItems when clicking the button:&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;       &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;foreach&lt;/span&gt; (&lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt; treeViewItem &lt;span style="color: blue"&gt;in&lt;/span&gt; trv.Containers)&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Debug&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;TreeViewItem &amp;quot;&lt;/span&gt; + ((&lt;span style="color: #2b91af"&gt;myItem&lt;/span&gt;)treeViewItem.Header).myString);&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;     &lt;/div&gt;      &lt;p style="margin: 0px"&gt;&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Let’s run this sample app and click the button:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_6A15EBF2.png"&gt;&lt;img title="image" style="display: inline" height="254" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_705CC280.png" width="424" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;And in Visual Studio “Output” window we can see: &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_76A3990E.png"&gt;&lt;img title="image" style="display: inline" height="205" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_75CB3324.png" width="460" border="0" /&gt;&lt;/a&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;#160;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Chapter #4:&lt;/strong&gt; &lt;strong&gt;Aggregating the TreeViewItem Expanded &amp;amp; Collapsed on TreeView&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;We’d like to get an event to fire on our TreeView whenever a TreeViewItem.Expanded/Collapsed event fires. &lt;/p&gt;    &lt;p&gt;Think with me here, if we want to do that – the TreeViewItem needs to know who TreeView is so it can tell the TreeView “Hey, the TreeViewItem event fired!”. &lt;/p&gt;    &lt;p&gt;For that, we’ll need to create our own TreeViewItemExtended.&lt;/p&gt;    &lt;p&gt;Now, look closely, this is how we override the 2 methods on an ItemsControl/TreeView to do that. &lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TreeViewExtended&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;TreeView&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;{&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;protected&lt;/span&gt; &lt;span style="color: blue"&gt;override&lt;/span&gt; &lt;span style="color: blue"&gt;bool&lt;/span&gt; IsItemItsOwnContainerOverride(&lt;span style="color: blue"&gt;object&lt;/span&gt; item)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; item &lt;span style="color: blue"&gt;is&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TreeViewExtended&lt;/span&gt;;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;protected&lt;/span&gt; &lt;span style="color: blue"&gt;override&lt;/span&gt; &lt;span style="color: #2b91af"&gt;DependencyObject&lt;/span&gt; GetContainerForItemOverride()&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TreeViewItemExtended&lt;/span&gt;();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; …&lt;/p&gt;      &lt;p style="margin: 0px"&gt;}&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TreeViewItemExtended&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;{&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;protected&lt;/span&gt; &lt;span style="color: blue"&gt;override&lt;/span&gt; &lt;span style="color: blue"&gt;bool&lt;/span&gt; IsItemItsOwnContainerOverride(&lt;span style="color: blue"&gt;object&lt;/span&gt; item)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; item &lt;span style="color: blue"&gt;is&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TreeViewExtended&lt;/span&gt;;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;protected&lt;/span&gt; &lt;span style="color: blue"&gt;override&lt;/span&gt; &lt;span style="color: #2b91af"&gt;DependencyObject&lt;/span&gt; GetContainerForItemOverride()&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TreeViewItemExtended&lt;/span&gt;();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;}&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;We’ll override these 2 methods so our TreeView and TreeViewItems will always generated our TreeVieWItemExtended. &lt;/p&gt;    &lt;p&gt;Next, we’ll create a public property on TreeViewItem that points to the TreeView it belongs to. &lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TreeViewItemExtended&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;{&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;protected&lt;/span&gt; &lt;span style="color: blue"&gt;override&lt;/span&gt; &lt;span style="color: blue"&gt;bool&lt;/span&gt; IsItemItsOwnContainerOverride(&lt;span style="color: blue"&gt;object&lt;/span&gt; item)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; item &lt;span style="color: blue"&gt;is&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TreeViewExtended&lt;/span&gt;;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;protected&lt;/span&gt; &lt;span style="color: blue"&gt;override&lt;/span&gt; &lt;span style="color: #2b91af"&gt;DependencyObject&lt;/span&gt; GetContainerForItemOverride()&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TreeViewItemExtended&lt;/span&gt;();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TreeViewExtended&lt;/span&gt; ParentTreeView { &lt;span style="color: blue"&gt;set&lt;/span&gt;; &lt;span style="color: blue"&gt;get&lt;/span&gt;; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;}&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;We’ll populate that property on the prepare method.&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TreeViewExtended&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;TreeView&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;{&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;protected&lt;/span&gt; &lt;span style="color: blue"&gt;override&lt;/span&gt; &lt;span style="color: blue"&gt;bool&lt;/span&gt; IsItemItsOwnContainerOverride(&lt;span style="color: blue"&gt;object&lt;/span&gt; item)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; item &lt;span style="color: blue"&gt;is&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TreeViewExtended&lt;/span&gt;;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;protected&lt;/span&gt; &lt;span style="color: blue"&gt;override&lt;/span&gt; &lt;span style="color: #2b91af"&gt;DependencyObject&lt;/span&gt; GetContainerForItemOverride()&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TreeViewItemExtended&lt;/span&gt;();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;protected&lt;/span&gt; &lt;span style="color: blue"&gt;override&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; PrepareContainerForItemOverride(&lt;span style="color: #2b91af"&gt;DependencyObject&lt;/span&gt; element, &lt;span style="color: blue"&gt;object&lt;/span&gt; item)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;TreeViewItemExtended&lt;/span&gt; treeViewItemExtended = (&lt;span style="color: #2b91af"&gt;TreeViewItemExtended&lt;/span&gt;) element;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; treeViewItemExtended.ParentTreeView = &lt;span style="color: blue"&gt;this&lt;/span&gt;; &lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;base&lt;/span&gt;.PrepareContainerForItemOverride(element, item);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;And in the TreeViewItem for each child TreeViewItem:&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TreeViewItemExtended&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;{&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;protected&lt;/span&gt; &lt;span style="color: blue"&gt;override&lt;/span&gt; &lt;span style="color: blue"&gt;bool&lt;/span&gt; IsItemItsOwnContainerOverride(&lt;span style="color: blue"&gt;object&lt;/span&gt; item)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; item &lt;span style="color: blue"&gt;is&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TreeViewExtended&lt;/span&gt;;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;protected&lt;/span&gt; &lt;span style="color: blue"&gt;override&lt;/span&gt; &lt;span style="color: #2b91af"&gt;DependencyObject&lt;/span&gt; GetContainerForItemOverride()&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TreeViewItemExtended&lt;/span&gt;();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TreeViewExtended&lt;/span&gt; ParentTreeView { &lt;span style="color: blue"&gt;internal set&lt;/span&gt;; &lt;span style="color: blue"&gt;get&lt;/span&gt;; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;protected&lt;/span&gt; &lt;span style="color: blue"&gt;override&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; PrepareContainerForItemOverride(&lt;span style="color: #2b91af"&gt;DependencyObject&lt;/span&gt; element, &lt;span style="color: blue"&gt;object&lt;/span&gt; item)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;TreeViewItemExtended&lt;/span&gt; treeViewItemExtended = (&lt;span style="color: #2b91af"&gt;TreeViewItemExtended&lt;/span&gt;)element;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; treeViewItemExtended.ParentTreeView = &lt;span style="color: blue"&gt;this&lt;/span&gt;.ParentTreeView;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;base&lt;/span&gt;.PrepareContainerForItemOverride(element, item);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;}&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Next, we’ll expose a TreeViewExtended event for Expanded/Collapsed. &lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TreeViewExtended&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;TreeView&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;{&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160; …&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;event&lt;/span&gt; &lt;span style="color: #2b91af"&gt;RoutedEventHandler&lt;/span&gt; ContainerExpanded;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;event&lt;/span&gt; &lt;span style="color: #2b91af"&gt;RoutedEventHandler&lt;/span&gt; ContainerCollapsed; &lt;/p&gt;      &lt;p style="margin: 0px"&gt;}&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;And we’ll add appropriate methods for TreeViewItemExtended to invoke these events. &lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;event&lt;/span&gt; &lt;span style="color: #2b91af"&gt;RoutedEventHandler&lt;/span&gt; ContainerExpanded;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;internal &lt;/span&gt;&lt;span style="color: blue"&gt;void&lt;/span&gt; InvokeContainerExpanded(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;RoutedEventArgs&lt;/span&gt; e)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;RoutedEventHandler&lt;/span&gt; expanded = ContainerExpanded;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (expanded != &lt;span style="color: blue"&gt;null&lt;/span&gt;) expanded(sender, e);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;event&lt;/span&gt; &lt;span style="color: #2b91af"&gt;RoutedEventHandler&lt;/span&gt; ContainerCollapsed;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;internal &lt;/span&gt;&lt;span style="color: blue"&gt;void&lt;/span&gt; InvokeContainerCollapsed(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;RoutedEventArgs&lt;/span&gt; e)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;RoutedEventHandler&lt;/span&gt; collapsed = ContainerCollapsed;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (collapsed != &lt;span style="color: blue"&gt;null&lt;/span&gt;) collapsed(sender, e);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Finally, we’ll have the TreeViewItem invoke these event invoke methods. &lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TreeViewItemExtended&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;{&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; TreeViewItemExtended()&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;this&lt;/span&gt;.Expanded += &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;RoutedEventHandler&lt;/span&gt;(TreeViewItemExtended_Expanded);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;this&lt;/span&gt;.Collapsed += &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;RoutedEventHandler&lt;/span&gt;(TreeViewItemExtended_Collapsed);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;void&lt;/span&gt; TreeViewItemExtended_Collapsed(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;RoutedEventArgs&lt;/span&gt; e)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ParentTreeView.InvokeContainerCollapsed(sender, e);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;void&lt;/span&gt; TreeViewItemExtended_Expanded(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;RoutedEventArgs&lt;/span&gt; e)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ParentTreeView.InvokeContainerExpanded(sender, e);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Let’s use these events: &lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; MainPage()&lt;/p&gt;      &lt;p style="margin: 0px"&gt;{&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; InitializeComponent();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; trv.ItemsSource = itemsSource;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; trv.ContainerExpanded += (s, e) =&amp;gt; PrintTreeViewMessage(s, &lt;span style="color: #a31515"&gt;&amp;quot;Expanded&amp;quot;&lt;/span&gt;);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; trv.ContainerCollapsed += (s, e) =&amp;gt; PrintTreeViewMessage(s, &lt;span style="color: #a31515"&gt;&amp;quot;Collapsed&amp;quot;&lt;/span&gt;);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;}&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; PrintTreeViewMessage(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: blue"&gt;string&lt;/span&gt; description)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;{&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;TreeViewItemExtended&lt;/span&gt; treeViewItemExtended = (&lt;span style="color: #2b91af"&gt;TreeViewItemExtended&lt;/span&gt;) sender;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;myItem&lt;/span&gt; item = (&lt;span style="color: #2b91af"&gt;myItem&lt;/span&gt;) treeViewItemExtended.Header;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; textBlock.Text = &lt;span style="color: blue"&gt;string&lt;/span&gt;.Format(&lt;span style="color: #a31515"&gt;&amp;quot;{0} TreeView was {1}&amp;quot;&lt;/span&gt;, item.myString, description);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;}&lt;/p&gt;   &lt;/div&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;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;And when we run this sample, we can see that:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_2E09AA3D.png"&gt;&lt;img title="image" style="display: inline" height="140" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_1B54B086.png" width="442" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_5AB26416.png"&gt;&lt;img title="image" style="display: inline" height="150" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_1A1017A7.png" width="435" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_447C48C4.png"&gt;&lt;img title="image" style="display: inline" height="159" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_18CB7EC8.png" width="465" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Chapter #5: Exposing the TreeViewItem.MouseLwftButtonDown event&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;For reasons of WPF subset Compatibility the Silverlight TreeViewItem does not raise the MouseLeftButtonDown event when clicked.      &lt;br /&gt;Normally, you should use the “Selected” event for that. &lt;/p&gt;    &lt;p&gt;But, we can now expose a new TreeViewExtended.ContainerMouseLeftButtonDown event that does just that. &lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TreeViewExtended&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;TreeView&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;{ &lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;event&lt;/span&gt; &lt;span style="color: #2b91af"&gt;MouseButtonEventHandler&lt;/span&gt; ContainerMouseButtonEventHandler;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;internal&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; InvokeContainerMouseButtonEventHandler(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;MouseButtonEventArgs&lt;/span&gt; e)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;MouseButtonEventHandler&lt;/span&gt; handler = ContainerMouseButtonEventHandler;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (handler != &lt;span style="color: blue"&gt;null&lt;/span&gt;) handler(sender, e);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;   &lt;/div&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TreeViewItemExtended&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;{&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;protected&lt;/span&gt; &lt;span style="color: blue"&gt;override&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; OnMouseLeftButtonDown(&lt;span style="color: #2b91af"&gt;MouseButtonEventArgs&lt;/span&gt; e)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;base&lt;/span&gt;.OnMouseLeftButtonDown(e);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ParentTreeView.InvokeContainerMouseButtonEventHandler(&lt;span style="color: blue"&gt;this&lt;/span&gt;, e);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;And now, we’ll sign up for that event. &lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; MainPage()&lt;/p&gt;      &lt;p style="margin: 0px"&gt;{&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; InitializeComponent();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; trv.ItemsSource = itemsSource;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; trv.ContainerMouseButtonEventHandler += (s, e) =&amp;gt; PrintTreeViewMessage(s, &lt;span style="color: #a31515"&gt;&amp;quot;MouseLeftButtonDown&amp;quot;&lt;/span&gt;); &lt;/p&gt;      &lt;p style="margin: 0px"&gt;}&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;And when we run this sample:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_4337AFE5.png"&gt;&lt;img title="image" style="display: inline" height="154" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_1B9133BB.png" width="417" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_36C98CBC.png"&gt;&lt;img title="image" style="display: inline" height="149" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_6135BDD9.png" width="434" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Chapter #6: Exposing a PreparingContainer event&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;So, one of the biggest thing you should know about TreeView – it’s virtualized (in a way).      &lt;br /&gt;It won’t create TreeViewItem until they’re really needed. &lt;/p&gt;    &lt;p&gt;Which makes a lot of the work we’ve done up until now for not. Let’s have a look at this code snippet:&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Button_Click(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;RoutedEventArgs&lt;/span&gt; e)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; trv.ContainerFromItem(itemsSource[1].Items[0].Items[0]).FontSize = 20; &lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;Basically, we’re looking for the TreeViewItem with the word ‘Goo’. &lt;/p&gt;    &lt;p&gt;What do you think happens if we click the button when TreeView is fully collapsed? &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_677C9467.png"&gt;&lt;img title="image" style="display: inline" height="124" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_6DC36AF5.png" width="425" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;We’ll get a “OMG, This TreeView doesn’t exist” exception:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_1F4ED88B.png"&gt;&lt;img title="image" style="display: inline" height="116" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_3A1AFE97.png" width="796" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;But, if we do the same thing when the TreeView is expanded:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_446C22F7.png"&gt;&lt;img title="image" style="display: inline" height="168" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_51D235FD.png" width="463" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;It will work: &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_314AF64B.png"&gt;&lt;img title="image" style="display: inline" height="174" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_62D663E0.png" width="421" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Why? Because the ‘Goo’ TreeViewItem doesn’t exist until it’s needed.&lt;/p&gt;    &lt;p&gt;And the TreeViewItem isn’t available until that Visual Tree has been built, which happens at somewhat random points. &lt;/p&gt;    &lt;p&gt;So, let’s start by exposing an event that’ll happen every time a TreeViewItem is created. &lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TreeViewExtended&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;TreeView&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;{&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;event&lt;/span&gt; &lt;span style="color: #2b91af"&gt;EventHandler&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;ContainerPreparedEventArgs&lt;/span&gt;&amp;gt; ContainerPrepared;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;internal&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; InvokeContainerPrepared(&lt;span style="color: #2b91af"&gt;TreeViewItemExtended&lt;/span&gt; sender, &lt;span style="color: blue"&gt;object&lt;/span&gt; item)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;EventHandler&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;ContainerPreparedEventArgs&lt;/span&gt;&amp;gt; prepared = ContainerPrepared;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (prepared != &lt;span style="color: blue"&gt;null&lt;/span&gt;) prepared(sender, &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ContainerPreparedEventArgs&lt;/span&gt;(sender, item));&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;…&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ContainerPreparedEventArgs&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;EventArgs&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;{&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; ContainerPreparedEventArgs(&lt;span style="color: #2b91af"&gt;TreeViewItemExtended&lt;/span&gt; container, &lt;span style="color: blue"&gt;object&lt;/span&gt; item)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Container = container;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Item = item;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TreeViewItemExtended&lt;/span&gt; Container { &lt;span style="color: blue"&gt;get&lt;/span&gt;; &lt;span style="color: blue"&gt;set&lt;/span&gt;; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;object&lt;/span&gt; Item { &lt;span style="color: blue"&gt;get&lt;/span&gt;; &lt;span style="color: blue"&gt;set&lt;/span&gt;; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;}&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Next, whenever a TreeViewItem is prepared we’ll invoke this event. &lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TreeViewExtended&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;TreeView&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;{&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;protected&lt;/span&gt; &lt;span style="color: blue"&gt;override&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; PrepareContainerForItemOverride(&lt;span style="color: #2b91af"&gt;DependencyObject&lt;/span&gt; element, &lt;span style="color: blue"&gt;object&lt;/span&gt; item)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;TreeViewItemExtended&lt;/span&gt; treeViewItemExtended = (&lt;span style="color: #2b91af"&gt;TreeViewItemExtended&lt;/span&gt;) element;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; treeViewItemExtended.ParentTreeView = &lt;span style="color: blue"&gt;this&lt;/span&gt;; &lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;base&lt;/span&gt;.PrepareContainerForItemOverride(element, item);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;strong&gt;&lt;u&gt;InvokeContainerPrepared(treeViewItemExtended, item);&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;event&lt;/span&gt; &lt;span style="color: #2b91af"&gt;EventHandler&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;ContainerPreparedEventArgs&lt;/span&gt;&amp;gt; ContainerPrepared;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;internal&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; InvokeContainerPrepared(&lt;span style="color: #2b91af"&gt;TreeViewItemExtended&lt;/span&gt; sender, &lt;span style="color: blue"&gt;object&lt;/span&gt; item)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;EventHandler&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;ContainerPreparedEventArgs&lt;/span&gt;&amp;gt; prepared = ContainerPrepared;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (prepared != &lt;span style="color: blue"&gt;null&lt;/span&gt;) prepared(sender, &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ContainerPreparedEventArgs&lt;/span&gt;(sender, item));&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;…&lt;/p&gt;      &lt;p style="margin: 0px"&gt;}&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TreeViewItemExtended&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;{ &lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;protected&lt;/span&gt; &lt;span style="color: blue"&gt;override&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; PrepareContainerForItemOverride(&lt;span style="color: #2b91af"&gt;DependencyObject&lt;/span&gt; element, &lt;span style="color: blue"&gt;object&lt;/span&gt; item)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;TreeViewItemExtended&lt;/span&gt; treeViewItemExtended = (&lt;span style="color: #2b91af"&gt;TreeViewItemExtended&lt;/span&gt;)element;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; treeViewItemExtended.ParentTreeView = &lt;span style="color: blue"&gt;this&lt;/span&gt;.ParentTreeView;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;base&lt;/span&gt;.PrepareContainerForItemOverride(element, item);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ParentTreeView.InvokeContainerPrepared(treeViewItemExtended, item);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;…&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;}&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;&amp;#160;&lt;/p&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;    &lt;p&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;&lt;/p&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;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;Now, Let’s print out when each TreeViewItem has been created:&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; MainPage()&lt;/p&gt;      &lt;p style="margin: 0px"&gt;{&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; InitializeComponent();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; trv.ItemsSource = itemsSource;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; trv.ContainerPrepared += (s, e) =&amp;gt; AddTreeViewMessage(s, &lt;span style="color: #a31515"&gt;&amp;quot;Created&amp;quot;&lt;/span&gt;);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;}&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;Let’s start our application:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_424F242E.png"&gt;&lt;img title="image" style="display: inline" height="269" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_35E10105.png" width="421" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;We can clearly that only TreeViewItems have been created up until now. &lt;/p&gt;    &lt;p&gt;Let’s expand the ‘Hello’ TreeViewItem:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_38A6B5F8.png"&gt;&lt;img title="image" style="display: inline" height="376" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_11F829AB.png" width="455" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;And once that TreeViewItem has expanded the TreeViewItems were created.&lt;/p&gt;    &lt;p&gt;We’ll Expand the rest of the Tree:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_74A2D1E0.png"&gt;&lt;img title="image" style="display: inline" height="432" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_53432C44.png" width="384" border="0" /&gt;&lt;/a&gt; &lt;a href="http://silverlight.net/blogs/justinangel/image_31E386A8.png"&gt;&lt;img title="image" style="display: inline" height="436" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_45243D47.png" width="401" border="0" /&gt;&lt;/a&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;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;So the &lt;strong&gt;PreparingContainer&lt;/strong&gt; event is pretty useful considering it lets us know when TreeViewItems are ready. &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Chapter #7: Implementing Delayed Expanded TreeViewItems&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;This feature isn’t 100% useful before we get to the next Chapter.      &lt;br /&gt;What I’d like for us to do (and take me on faith here) is implement a method that :       &lt;br /&gt;1. Will expand TreeViewItem corresponding to Items       &lt;br /&gt;2. Will be able to work in a delayed manner (even if they are created after the method was called) &lt;/p&gt;    &lt;p&gt;Expanding TreeViewItems creates more TreeViewItems, so this might be very interesting. &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Here’s our method:&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;object&lt;/span&gt;&amp;gt; itemsToDelayExpand = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;object&lt;/span&gt;&amp;gt;(); &lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; ExpandDelayItems(&lt;span style="color: blue"&gt;params&lt;/span&gt; &lt;span style="color: blue"&gt;object&lt;/span&gt;[] ItemsCorrespondingToTreeViewItemsToExpand)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; itemsToDelayExpand.AddRange(ItemsCorrespondingToTreeViewItemsToExpand);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;foreach&lt;/span&gt; (&lt;span style="color: blue"&gt;object&lt;/span&gt; itemtoTryAndExpand &lt;span style="color: blue"&gt;in&lt;/span&gt; ItemsCorrespondingToTreeViewItemsToExpand)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt; treeViewItem = &lt;span style="color: blue"&gt;this&lt;/span&gt;.ContainerFromItem(itemtoTryAndExpand);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (treeViewItem != &lt;span style="color: blue"&gt;null&lt;/span&gt;)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&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; treeViewItem.IsExpanded = &lt;span style="color: blue"&gt;true&lt;/span&gt;;&lt;/p&gt;      &lt;p style="margin: 0px"&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; itemsToDelayExpand.Remove(itemtoTryAndExpand);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;We’ll take a collection of Items and add those to a bigger list of all Items we’re waiting for.      &lt;br /&gt;Than we’ll go over the TreeView looking for these items and if they have TreeViewItems – we’ll expand those.&lt;/p&gt;    &lt;p&gt;If they don’t have TreeViewItems, we’ll listen to the prepared event and wait for them to be created. &lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;internal&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; InvokeContainerPrepared(&lt;span style="color: #2b91af"&gt;TreeViewItemExtended&lt;/span&gt; sender, &lt;span style="color: blue"&gt;object&lt;/span&gt; item)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;EventHandler&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;ContainerPreparedEventArgs&lt;/span&gt;&amp;gt; prepared = ContainerPrepared;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (prepared != &lt;span style="color: blue"&gt;null&lt;/span&gt;) prepared(sender, &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ContainerPreparedEventArgs&lt;/span&gt;(sender, item));&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (itemsToDelayExpand.Contains(item))&lt;/strong&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/strong&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; sender.IsExpanded = &lt;span style="color: blue"&gt;true&lt;/span&gt;;&lt;/strong&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; itemsToDelayExpand.Remove(item);&lt;/strong&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/strong&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;object&lt;/span&gt;&amp;gt; itemsToDelayExpand = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;object&lt;/span&gt;&amp;gt;(); &lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; ExpandDelayItems(&lt;span style="color: blue"&gt;params&lt;/span&gt; &lt;span style="color: blue"&gt;object&lt;/span&gt;[] ItemsCorrespondingToTreeViewItemsToExpand)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; itemsToDelayExpand.AddRange(ItemsCorrespondingToTreeViewItemsToExpand);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;foreach&lt;/span&gt; (&lt;span style="color: blue"&gt;object&lt;/span&gt; itemtoTryAndExpand &lt;span style="color: blue"&gt;in&lt;/span&gt; ItemsCorrespondingToTreeViewItemsToExpand)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt; treeViewItem = &lt;span style="color: blue"&gt;this&lt;/span&gt;.ContainerFromItem(itemtoTryAndExpand);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (treeViewItem != &lt;span style="color: blue"&gt;null&lt;/span&gt;)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&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; treeViewItem.IsExpanded = &lt;span style="color: blue"&gt;true&lt;/span&gt;;&lt;/p&gt;      &lt;p style="margin: 0px"&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; itemsToDelayExpand.Remove(itemtoTryAndExpand);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Let’s test our method: &lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;trv.ExpandDelayItems(itemsSource[1], itemsSource[1].Items[0]);&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;And if we run our application:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_55500540.png"&gt;&lt;img title="image" style="display: inline" height="260" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_5ABE75E4.png" width="430" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;Let’s click the button:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_395ED048.png"&gt;&lt;img title="image" style="display: inline" height="331" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_17FF2AAC.png" width="440" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;You can see that ‘Moo’ TreeViewItem was expanded, and than the ‘Boo’ TreeViewItem was expanded.&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Chapter #8: Set TreeView.SelectedItem with TreeView.SetSelectItem method&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;By now, you can see how using the ExpandDelayItems with the ContainerPrepared event let’s us set a selected item. &lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;object&lt;/span&gt; SelectedItemDelayed = &lt;span style="color: blue"&gt;null&lt;/span&gt;;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; SetSelectedItem(&lt;span style="color: blue"&gt;object&lt;/span&gt; SelectedItem, &lt;span style="color: blue"&gt;params&lt;/span&gt; &lt;span style="color: blue"&gt;object&lt;/span&gt;[] SelectedItemParents)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ContainerPrepared += &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;EventHandler&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;ContainerPreparedEventArgs&lt;/span&gt;&amp;gt;(ContainerPrepared_LookForSelectedItem);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SelectedItemDelayed = SelectedItem;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ExpandDelayItems(SelectedItemParents);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; ContainerPrepared_LookForSelectedItem(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;ContainerPreparedEventArgs&lt;/span&gt; e)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (e.Item == SelectedItemDelayed)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; e.Container.IsSelected = &lt;span style="color: blue"&gt;true&lt;/span&gt;;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SelectedItemDelayed = &lt;span style="color: blue"&gt;null&lt;/span&gt;;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ContainerPrepared -= &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;EventHandler&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;ContainerPreparedEventArgs&lt;/span&gt;&amp;gt;(ContainerPrepared_LookForSelectedItem);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;Basically, all we did here is expand all Parent TreeViewItems and sit comfortably waiting for our TreeViewItem to create itself. &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Let’s test our SetSelectedItem method.&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;trv.SetSelectedItem(itemsSource[1].Items[0].Items[0],&lt;/p&gt;      &lt;p style="margin: 0px"&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; itemsSource[1].Items[0],&lt;/p&gt;      &lt;p style="margin: 0px"&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; itemsSource[1]);&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;And when we’ll run the app we can see: &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_2FB66212.png"&gt;&lt;img title="image" style="display: inline" height="230" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_23483EE9.png" width="430" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_01E8994D.png"&gt;&lt;img title="image" style="display: inline" height="278" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_199FD0B3.png" width="429" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Now, the TreeView could start looking around for the Parent Items itself, but consider a scenario with millions of nested elements.      &lt;br /&gt;So if you call SetSelectedItem with the correct parents, it’ll end up setting your SelectedItem. &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;     &lt;br /&gt;&lt;strong&gt;Chapter #9: Adding a Parent TreeViewItem property&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;One last tiny feature we’ll add is a TreeViewItem.ParentTreeViewItem property. &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;We’ll start by adding the property. &lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TreeViewItemExtended&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;{&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TreeViewItemExtended&lt;/span&gt; ParentTreeViewItem { &lt;span style="color: blue"&gt;internal&lt;/span&gt; &lt;span style="color: blue"&gt;set&lt;/span&gt;; &lt;span style="color: blue"&gt;get&lt;/span&gt;; }&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;And during the Prepare Container for it’s nested elements we’ll set their Parent property to this TreeViewItem.&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TreeViewItemExtended&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;{&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TreeViewExtended&lt;/span&gt; ParentTreeView { &lt;span style="color: blue"&gt;internal&lt;/span&gt; &lt;span style="color: blue"&gt;set&lt;/span&gt;; &lt;span style="color: blue"&gt;get&lt;/span&gt;; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TreeViewItemExtended&lt;/span&gt; ParentTreeViewItem { &lt;span style="color: blue"&gt;internal&lt;/span&gt; &lt;span style="color: blue"&gt;set&lt;/span&gt;; &lt;span style="color: blue"&gt;get&lt;/span&gt;; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;protected&lt;/span&gt; &lt;span style="color: blue"&gt;override&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; PrepareContainerForItemOverride(&lt;span style="color: #2b91af"&gt;DependencyObject&lt;/span&gt; element, &lt;span style="color: blue"&gt;object&lt;/span&gt; item)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;TreeViewItemExtended&lt;/span&gt; treeViewItemExtended = (&lt;span style="color: #2b91af"&gt;TreeViewItemExtended&lt;/span&gt;)element;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; treeViewItemExtended.ParentTreeView = &lt;span style="color: blue"&gt;this&lt;/span&gt;.ParentTreeView;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;strong&gt;treeViewItemExtended.ParentTreeViewItem = &lt;span style="color: blue"&gt;this&lt;/span&gt;;&lt;/strong&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;base&lt;/span&gt;.PrepareContainerForItemOverride(element, item);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ParentTreeView.InvokeContainerPrepared(treeViewItemExtended, item);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Let’s use this to change the parent background of any TreeViewItem with children:&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; trv.ContainerExpanded += (s, args) =&amp;gt;&lt;/p&gt;      &lt;p style="margin: 0px"&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; {&lt;/p&gt;      &lt;p style="margin: 0px"&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; &lt;span style="color: #2b91af"&gt;TreeViewItemExtended&lt;/span&gt; parent = ((&lt;span style="color: #2b91af"&gt;TreeViewItemExtended&lt;/span&gt;) s).ParentTreeViewItem;&lt;/p&gt;      &lt;p style="margin: 0px"&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; &lt;span style="color: blue"&gt;if&lt;/span&gt; (parent != &lt;span style="color: blue"&gt;null&lt;/span&gt;)&lt;/p&gt;      &lt;p style="margin: 0px"&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; {&lt;/p&gt;      &lt;p style="margin: 0px"&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; parent.Background = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;SolidColorBrush&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;Colors&lt;/span&gt;.Blue);&lt;/p&gt;      &lt;p style="margin: 0px"&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; }&lt;/p&gt;      &lt;p style="margin: 0px"&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; };&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;Let’s run this application:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_2384C21E.png"&gt;&lt;img title="image" style="display: inline" height="219" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_5DFFC1F2.png" width="441" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;And once we expand ‘Hello’ TreeViewItem:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_75B6F958.png"&gt;&lt;img title="image" style="display: inline" height="303" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_0D6E30BF.png" width="488" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;And ‘Moo’ TreeViewItem:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_5E3C4527.png"&gt;&lt;img title="image" style="display: inline" height="346" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_03C5C289.png" width="490" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&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;    &lt;p&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;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Epilogue &lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;The TreeView control has a lot of extensibility points to overcome some innate WPF compatible features. &lt;/p&gt;    &lt;p&gt;If you’d like to see TreeViewItemExtended ship in the Silverlight Toolkit, please feel free to vote on the issue here:      &lt;br /&gt;&lt;a href="http://silverlight.codeplex.com/WorkItem/View.aspx?WorkItemId=3039"&gt;http://silverlight.codeplex.com/WorkItem/View.aspx?WorkItemId=3039&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Sincerely,&lt;/p&gt;    &lt;p&gt;-- Justin Angel&lt;/p&gt;    &lt;p&gt;Microsoft Silverlight Program Manager&lt;/p&gt; &lt;/div&gt;&lt;img src="http://blogs.silverlight.net/aggbug.aspx?PostID=221903" width="1" height="1"&gt;</description><evnet:views>564</evnet:views><evnet:viewtrackingurl>http://blogs.silverlight.net/aggbug.aspx?PostID=221903</evnet:viewtrackingurl></item><item><title>Silverlight Unit Testing, RhinoMocks, Unity and Resharper.</title><link>http://blogs.silverlight.net/blogs/justinangel/archive/2009/02/25/silverlight-unit-testing-rhinomocks-unity-and-resharper.aspx</link><pubDate>Wed, 25 Feb 2009 21:27:59 GMT</pubDate><guid isPermaLink="false">d0d632c8-a6f7-4f68-b0ce-26aaafd62132:179327</guid><dc:creator>JustinAngel</dc:creator><slash:comments>16</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.silverlight.net/blogs/justinangel/rsscomments.aspx?PostID=179327</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.silverlight.net/blogs/justinangel/commentapi.aspx?PostID=179327</wfw:comment><comments>http://blogs.silverlight.net/blogs/justinangel/archive/2009/02/25/silverlight-unit-testing-rhinomocks-unity-and-resharper.aspx#comments</comments><description>&lt;div style="font-family: arial"&gt;   &lt;p&gt;Hi Folks,&lt;/p&gt;    &lt;p&gt;As most of you who’re familiar with my work know – I’m a huge supporter of the open source community.&amp;#160;&amp;#160; &lt;br /&gt;I also hold firm to a belief that the Microsoft .Net ecosystem is truly great due to community and vendors innovation. &lt;/p&gt;    &lt;p&gt;During this article I’d like for us to go over 4 open source initiatives: The Microsoft’s Silverlight Unit Testing framework, RhinoMocks , Microsoft Unity and the Silverlight unit testing plug-in for Resharper. &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Here are some links to get you started: &lt;/p&gt;    &lt;p&gt;1. &lt;a href="http://code.msdn.microsoft.com/silverlightut/Release"&gt;Microsoft Silverlight Unit testing framework&lt;/a&gt;       &lt;br /&gt;2. &lt;a href="http://ayende.com/projects/rhino-mocks/downloads.aspx" target="_blank"&gt;RhinoMocks&lt;/a&gt;       &lt;br /&gt;3. &lt;a href="http://www.microsoft.com/DOWNLOADS/details.aspx?familyid=0991CEDB-953A-4367-A2B6-071E31766B4C&amp;amp;displaylang=en" target="_blank"&gt;Microsoft Unity&lt;/a&gt;       &lt;br /&gt;4. &lt;a href="http://www.ingebrigtsen.info/post/2009/01/12/Silverlight-Unit-Test-Runner-for-Resharper-January-2009-Update.aspx"&gt;Silverlight Unit Test Runner for Resharper&lt;/a&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;     &lt;br /&gt;You can grab the application we’ve developed from: &lt;a title="SL2_UnitTestingRhinoMocksUnityResharper.zip" href="http://silverlight.net/blogs/justinangel/BlogStorage/SL2_UnitTestingRhinoMocksUnityResharper.zip"&gt;SL2_UnitTestingRhinoMocksUnityResharper.zip&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;The obligatory Hello World sample&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;In order to introduce these 4 unit testing oriented projects we’ll start of from the canonical hello world sample.      &lt;br /&gt;After that we’ll move to something a bit more Interesting. &lt;/p&gt;    &lt;p&gt;We’ll start a new Silverlight project which we’ll for our sample:      &lt;br /&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_245250FA.png"&gt;&lt;img title="image" style="display: inline" height="415" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_383BBDC3.png" width="820" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;We’ll use a Textblock with “Hello World!” as text:&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;       &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBlock&lt;/span&gt;&lt;span style="color: red"&gt; Text&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Hello World!&amp;quot; &lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;txt&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: red"&gt; x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;FieldModifier&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;public&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;     &lt;/div&gt;   &lt;/div&gt;    &lt;p&gt;When we run our application we’ll see:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_53446704.png"&gt;&lt;img title="image" style="display: inline" height="178" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_3EDEA179.png" width="426" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Microsoft Silverlight Unit Testing framework – “Hello World”&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;Since Silverlight can’t load Desktop .Net CLR assemblies and the Desktop CLR can’t load Silverlight controls – We can’t use existing unit testing frameworks.      &lt;br /&gt;So, no MbUnit, no NUnit, no xUnit. Sad. &lt;/p&gt;    &lt;p&gt;In comes developer extraordinaire &lt;a href="http://www.jeff.wilcox.name" target="_blank"&gt;Jeff Wilcox&lt;/a&gt; and develops the Microsoft Silverlight Unit testing framework. &lt;/p&gt;    &lt;p&gt;1. Download the latest Binaries from &lt;a href="http://code.msdn.microsoft.com/silverlightut/Release/ProjectReleases.aspx" target="_blank"&gt;Microsoft Silverlight Unit Test Framework&lt;/a&gt;.       &lt;br /&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_680639B7.png"&gt;&lt;img title="image" style="display: inline" height="109" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_2A492C2E.png" width="384" border="0" /&gt;&lt;/a&gt;       &lt;br /&gt;2. Create a project used for unit testing.       &lt;br /&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_3BB98D06.png"&gt;&lt;img title="image" style="display: inline" height="524" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_24CA95BD.png" width="623" border="0" /&gt;&lt;/a&gt;       &lt;br /&gt;      &lt;br /&gt;3. Add a reference to the 2 Unit testing DLLs to our testing project.       &lt;br /&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_09B1C6AF.png"&gt;&lt;img title="image" style="display: inline" height="274" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_28F46D82.png" width="276" border="0" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;     &lt;br /&gt;4. From the testing project we’ll add a reference to the runtime project.       &lt;br /&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_521C05C0.png"&gt;&lt;img title="image" style="display: inline" height="227" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_51439FD6.png" width="291" border="0" /&gt;&lt;/a&gt; &lt;a href="http://silverlight.net/blogs/justinangel/image_4C60EC1A.png"&gt;&lt;img title="image" style="display: inline" height="225" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_0F5CBA88.png" width="506" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;5. Set your Application.Root in App.xaml.cs to a unit testing runner:&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;namespace&lt;/span&gt; SL2_UnitTestingRhinoMocksUnityRes&lt;strong&gt;_Tests&lt;/strong&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;{&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;partial&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;App&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;Application&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Application_Startup(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;StartupEventArgs&lt;/span&gt; e)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;this&lt;/span&gt;.RootVisual = &lt;strong&gt;&lt;span style="color: #2b91af"&gt;UnitTestSystem&lt;/span&gt;.CreateTestPage();&lt;/strong&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;Now we’ve got a basic unit testing project setup.&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Next, we’ll create a new class to test our actual Silverlight “Page” class. &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_15375E21.png"&gt;&lt;img title="image" style="display: inline" height="303" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_5428DEBC.png" width="296" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;And we’ll put the appropriate attributes to run a test:&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; Microsoft.VisualStudio.TestTools.UnitTesting;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; SL2_UnitTestingRhinoMocksUnityResharper;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;namespace&lt;/span&gt; SL2_UnitTestingRhinoMocksUnityRes_Tests&lt;/p&gt;      &lt;p style="margin: 0px"&gt;{&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; [&lt;span style="color: #2b91af"&gt;TestClass&lt;/span&gt;]&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Page_Tests &lt;/span&gt;: SilverlightTest&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [&lt;span style="color: #2b91af"&gt;TestMethod&lt;/span&gt;]&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Page_Initialized_ShouldHaveAextBlock()&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Page&lt;/span&gt; page = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Page&lt;/span&gt;();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Assert&lt;/span&gt;.IsTrue(???);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;}&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;In this test, we’d like to make sure that when Page has been initialized. And there is indeed a textblock with the Text hello world in there. &lt;/p&gt;    &lt;p&gt;The problem with that is that we’ll need to add Page to the visual tree and &lt;strong&gt;wait&lt;/strong&gt; for the loaded event.       &lt;br /&gt;Well, we can’t do that from a synchronous test. We’ll have to use an Async test format.&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [&lt;span style="color: #2b91af"&gt;TestMethod&lt;/span&gt;]&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;strong&gt;[&lt;span style="color: #2b91af"&gt;Asynchronous&lt;/span&gt;]&lt;/strong&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Page_Initialized_ShouldHaveATextBlock()&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Page&lt;/span&gt; page = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Page&lt;/span&gt;();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;strong&gt;WaitFor&lt;/strong&gt;(page, &lt;span style="color: #a31515"&gt;&amp;quot;Loaded&amp;quot;&lt;/span&gt;);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; TestPanel.Children.Add(page);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;strong&gt;EnqueueCallback&lt;/strong&gt;(() =&amp;gt; &lt;span style="color: #2b91af"&gt;Assert&lt;/span&gt;.IsTrue(page.txt != &lt;span style="color: blue"&gt;null&lt;/span&gt;));&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;strong&gt;EnqueueTestComplete&lt;/strong&gt;();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;     &lt;br /&gt;Let’s go line by line here. &lt;/p&gt;    &lt;p&gt;We’ll declare an async test method.&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [&lt;span style="color: #2b91af"&gt;TestMethod&lt;/span&gt;]&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [&lt;span style="color: #2b91af"&gt;Asynchronous&lt;/span&gt;]&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Page_Initialized_ShouldHaveATextBlock()&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;We’ll create a new page class to be tested. &lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Page&lt;/span&gt; page = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Page&lt;/span&gt;();&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;We’ll wait for the Page.Loaded event after it has been added to the visual tree.&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WaitFor(page, &lt;span style="color: #a31515"&gt;&amp;quot;Loaded&amp;quot;&lt;/span&gt;);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; TestPanel.Children.Add(page);&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;Next, we’ll tell the async testing engine that “after loaded has happened” we need to check if the page.txt public field (the TextBlock) has been initialized. &lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; EnqueueCallback(() =&amp;gt; &lt;span style="color: #2b91af"&gt;Assert&lt;/span&gt;.IsTrue(page.txt != &lt;span style="color: blue"&gt;null&lt;/span&gt;));&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;And than we’ll tell the async testing engine that we’re done testing.&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; EnqueueTestComplete();&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;When we run our testing project we’ll see this:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_4826EE88.png"&gt;&lt;img title="image" style="display: inline" height="335" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_1888CFFC.png" width="433" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Now, I’d like to confess that &lt;strong&gt;the “WaitFor” method isn’t something the comes with the Silverlight unit testing framework&lt;/strong&gt;. It’s a little helper method I use.&amp;#160; &lt;br /&gt;Here’s the syntax, though it’s not important:&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;protected&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; WaitFor&amp;lt;T&amp;gt;(T objectToWaitForItsEvent, &lt;span style="color: blue"&gt;string&lt;/span&gt; eventName)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;{&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;EventInfo&lt;/span&gt; eventInfo = objectToWaitForItsEvent.GetType().GetEvent(eventName);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;bool&lt;/span&gt; eventRaised = &lt;span style="color: blue"&gt;false&lt;/span&gt;;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (&lt;span style="color: blue"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;RoutedEventHandler&lt;/span&gt;).IsAssignableFrom(eventInfo.EventHandlerType))&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; eventInfo.AddEventHandler(objectToWaitForItsEvent, (&lt;span style="color: #2b91af"&gt;RoutedEventHandler&lt;/span&gt;)&lt;span style="color: blue"&gt;delegate&lt;/span&gt; { eventRaised = &lt;span style="color: blue"&gt;true&lt;/span&gt;; });&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;else&lt;/span&gt; &lt;span style="color: blue"&gt;if&lt;/span&gt; (&lt;span style="color: blue"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;EventHandler&lt;/span&gt;).IsAssignableFrom(eventInfo.EventHandlerType))&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; eventInfo.AddEventHandler(objectToWaitForItsEvent, (&lt;span style="color: #2b91af"&gt;EventHandler&lt;/span&gt;)&lt;span style="color: blue"&gt;delegate&lt;/span&gt; { eventRaised = &lt;span style="color: blue"&gt;true&lt;/span&gt;; });&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; EnqueueConditional(() =&amp;gt; eventRaised);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;}&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;There are plans to address the need for a WaitFor method in one form or another in future versions of the unit testing framework.&amp;#160; &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Next, we’d like to test that the TextBlock has the correct text.&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [&lt;span style="color: #2b91af"&gt;TestMethod&lt;/span&gt;]&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [&lt;span style="color: #2b91af"&gt;Asynchronous&lt;/span&gt;]&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; PageWithTextBlock_Initialized_ShouldHaveHelloWorldText()&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Page&lt;/span&gt; page = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Page&lt;/span&gt;();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WaitFor(page, &lt;span style="color: #a31515"&gt;&amp;quot;Loaded&amp;quot;&lt;/span&gt;);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; TestPanel.Children.Add(page);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; EnqueueCallback(() =&amp;gt; &lt;span style="color: #2b91af"&gt;Assert&lt;/span&gt;.IsTrue(page.txt.Text == &lt;span style="color: #a31515"&gt;&amp;quot;Hello World!&amp;quot;&lt;/span&gt;));&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; EnqueueTestComplete();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;And if we can run our test we’ll see that this test succeeded: &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_44C556E0.png"&gt;&lt;img title="image" style="display: inline" height="345" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_4E3E1556.png" width="387" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;RhinoMocks – Hello World&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;1. &lt;a href="http://ayende.com/projects/rhino-mocks/downloads.aspx" target="_blank"&gt;Download RhinoMocks for silverlight.&lt;/a&gt;       &lt;br /&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_3AB0B5B5.png"&gt;&lt;img title="image" style="display: inline" height="213" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_0B7ECA1E.png" width="266" border="0" /&gt;&lt;/a&gt;       &lt;br /&gt;2. Add a reference to these files from the Testing project:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_062FE36D.png"&gt;&lt;img title="image" style="display: inline" height="334" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_7E38410A.png" width="299" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;As we move more towards real-world examples we need better tools to handle testing.      &lt;br /&gt;We’ll start off by creating a ViewModel for page: &lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;PageViewModel&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; _helloText = &lt;span style="color: #a31515"&gt;&amp;quot;Hello World!&amp;quot;&lt;/span&gt;;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public virtual&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;string&lt;/span&gt; HelloText&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;get&lt;/span&gt; { &lt;span style="color: blue"&gt;return&lt;/span&gt; _helloText; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;set&lt;/span&gt; { _helloText = &lt;span style="color: blue"&gt;value&lt;/span&gt;; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;It’s important to note that this is &lt;strong&gt;not a ViewModel article &lt;/strong&gt;and I’m not following best MVVM practices.       &lt;br /&gt;MVVM and Unit testing are complimentary. but in the interest of keeping this article simple I’ll keep the ViewModel simple.&lt;/p&gt;    &lt;p&gt;Next, we’ll create a ViewModel property on Page:&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;partial&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Page&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;UserControl&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: #2b91af"&gt;PageViewModel&lt;/span&gt; _viewModel = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;PageViewModel&lt;/span&gt;();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af"&gt;PageViewModel&lt;/span&gt; ViewModel&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;get&lt;/span&gt; { &lt;span style="color: blue"&gt;return&lt;/span&gt; _viewModel; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;set&lt;/span&gt; { _viewModel = &lt;span style="color: blue"&gt;value&lt;/span&gt;; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; Page()&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; InitializeComponent();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;And we’ll set the Page.DataContext to the ViewModel. &lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;       &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;partial&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Page&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;UserControl&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: #2b91af"&gt;PageViewModel&lt;/span&gt; _viewModel = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;PageViewModel&lt;/span&gt;();&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af"&gt;PageViewModel&lt;/span&gt; ViewModel&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;get&lt;/span&gt; { &lt;span style="color: blue"&gt;return&lt;/span&gt; _viewModel; }&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;set&lt;/span&gt; { _viewModel = &lt;span style="color: blue"&gt;value&lt;/span&gt;; }&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; Page()&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; InitializeComponent();&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;this&lt;/span&gt;.Loaded += &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;RoutedEventHandler&lt;/span&gt;(Page_Loaded);&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;void&lt;/span&gt; Page_Loaded(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;RoutedEventArgs&lt;/span&gt; e)&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;this&lt;/span&gt;.DataContext = ViewModel;&lt;/strong&gt; &lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;     &lt;/div&gt;   &lt;/div&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Let’s run our tests first to make sure we didn’t break anything:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_0F3C6EEE.png"&gt;&lt;img title="image" style="display: inline" height="252" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_756838BE.png" width="369" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;We didn’t break anything, we’re good. &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Now, let’s add another test class for PageViewModel. &lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; [&lt;span style="color: #2b91af"&gt;TestClass&lt;/span&gt;]&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;PageViewModel_Tests&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;SilverlightTest&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [&lt;span style="color: #2b91af"&gt;TestMethod&lt;/span&gt;]&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; PageViewModel_ByDefault_ShouldHaveHelloWorldTest()&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;PageViewModel&lt;/span&gt; pageViewModel = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;PageViewModel&lt;/span&gt;();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Assert&lt;/span&gt;.IsTrue(pageViewModel.HelloText == &lt;span style="color: #a31515"&gt;&amp;quot;Hello World!&amp;quot;&lt;/span&gt;);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;And we’ll run our tests:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_2DA6AFD7.png"&gt;&lt;img title="image" style="display: inline" height="261" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_00B14CFC.png" width="370" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;All green.&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Now it’s time to hook up our TextBlock to the ViewModel. &lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;UserControl&lt;/span&gt;&lt;span style="color: red"&gt; x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Class&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;SL2_UnitTestingRhinoMocksUnityResharper.Page&amp;quot;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160; &lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;&lt;/span&gt; &lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160; &lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;&lt;/span&gt; &lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160; &lt;span style="color: red"&gt;Width&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;400&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Height&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;300&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid&lt;/span&gt;&lt;span style="color: red"&gt; x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;LayoutRoot&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Background&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;White&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBlock&lt;/span&gt;&lt;span style="color: red"&gt; x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;txt&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;FieldModifier&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;public&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; &lt;strong&gt;Text&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="color: blue"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color: #a31515"&gt;Binding&lt;/span&gt;&lt;span style="color: red"&gt; HelloText&lt;/span&gt;&lt;/strong&gt;&lt;span style="color: blue"&gt;&lt;strong&gt;}&amp;quot;&lt;/strong&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;UserControl&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;And let’s run our test again to make sure everything still works:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_11B57ADF.png"&gt;&lt;img title="image" style="display: inline" height="277" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_49F3F1F7.png" width="363" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Now, we’d like to test that PageViewModel.HelloText does get invoked by Page.      &lt;br /&gt;Finally, we can use RhinoMocks.&lt;/p&gt;    &lt;p&gt;Here’s one way to write that test:&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [&lt;span style="color: #2b91af"&gt;TestMethod&lt;/span&gt;]&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [&lt;span style="color: #2b91af"&gt;Asynchronous&lt;/span&gt;]&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Page_Loaded_ShouldUsePageViewModelHelloTextOnce()&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Page&lt;/span&gt; page = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Page&lt;/span&gt;();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; page.ViewModel = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;PageViewModel&lt;/span&gt;() { HelloText = &lt;span style="color: #a31515"&gt;&amp;quot;Bonjour Monde!&amp;quot;&lt;/span&gt; };&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WaitFor(page, &lt;span style="color: #a31515"&gt;&amp;quot;Loaded&amp;quot;&lt;/span&gt;);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; TestPanel.Children.Add(page);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; EnqueueCallback(() =&amp;gt; &lt;span style="color: #2b91af"&gt;Assert&lt;/span&gt;.IsTrue(page.txt.Text == &lt;span style="color: #a31515"&gt;&amp;quot;Bonjour Monde!&amp;quot;&lt;/span&gt;));&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; EnqueueTestComplete();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;Right now this test would run, but it has 2 main issues:      &lt;br /&gt;1. We’re testing PageViewModel when really we want to test Page invoking PageViewModel.       &lt;br /&gt;2. We’re testing the entire Page Lifecycle in the UI, which we don’t want to do. &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_491B8C0D.png"&gt;&lt;img title="image" style="display: inline" height="160" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_4123E9AB.png" width="563" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;This test is supposed to test the red arrow “Invokes”, but instead we’re testing this entire diagram.      &lt;br /&gt;Which makes our test brittle and poorly written. &lt;/p&gt;    &lt;p&gt;Let’s write a test that only checked the “Invokes” arrow. &lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [&lt;span style="color: #2b91af"&gt;TestMethod&lt;/span&gt;]&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [&lt;span style="color: #2b91af"&gt;Asynchronous&lt;/span&gt;]&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Page_Loaded_ShouldUsePageViewModelHelloTextOnce()&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Page&lt;/span&gt; page = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Page&lt;/span&gt;();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;MockRepository&lt;/span&gt; mocks = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;MockRepository&lt;/span&gt;();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;PageViewModel&lt;/span&gt; pageViewModel = (&lt;span style="color: #2b91af"&gt;PageViewModel&lt;/span&gt;) mocks.StrictMock(&lt;span style="color: blue"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;PageViewModel&lt;/span&gt;));&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; page.ViewModel = pageViewModel;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;using&lt;/span&gt;(mocks.Record())&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&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; pageViewModel.Expect(p =&amp;gt; p.HelloText).Return(&lt;span style="color: blue"&gt;string&lt;/span&gt;.Empty);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WaitFor(page, &lt;span style="color: #a31515"&gt;&amp;quot;Loaded&amp;quot;&lt;/span&gt;);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; TestPanel.Children.Add(page);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; EnqueueCallback(() =&amp;gt; mocks.VerifyAll());&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; EnqueueTestComplete();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;Let’s go line-by-line here. &lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;MockRepository&lt;/span&gt; mocks = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;MockRepository&lt;/span&gt;();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;PageViewModel&lt;/span&gt; pageViewModel = (&lt;span style="color: #2b91af"&gt;PageViewModel&lt;/span&gt;) mocks.StrictMock(&lt;span style="color: blue"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;PageViewModel&lt;/span&gt;));&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;We’ve initialized a mock repository which is a magical doohickey that creates mocks and checks expectations.      &lt;br /&gt;We used it to create a mock for PageViewModel.&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;using&lt;/span&gt;(mocks.Record())&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&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; pageViewModel.Expect(p =&amp;gt; p.HelloText).Return(&lt;span style="color: blue"&gt;string&lt;/span&gt;.Empty);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;We’ve recorded an expectation that someone should invoke PageViewModel.HelloText. (And it should return a String.Empty) &lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; EnqueueCallback(() =&amp;gt; mocks.VerifyAll());&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;And in the end of the test, in stead of checking the UI we’ll check the expectation have been met.&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Let’s run our test:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_1506ECBA.png"&gt;&lt;img title="image" style="display: inline" height="290" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_5B17A9CD.png" width="361" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;And now let’s run it again if we temporarily delete the binding:&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBlock&lt;/span&gt;&lt;span style="color: red"&gt; x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;txt&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;FieldModifier&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;public&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; &lt;strike&gt;Text&lt;/strike&gt;&lt;/span&gt;&lt;strike&gt;&lt;span style="color: blue"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color: #a31515"&gt;Binding&lt;/span&gt;&lt;span style="color: red"&gt; HelloText&lt;/span&gt;&lt;/strike&gt;&lt;span style="color: blue"&gt;&lt;strike&gt;}&amp;quot;&lt;/strike&gt; &lt;span style="color: red"&gt;Text&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Hello World!&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_5E4991B5.png"&gt;&lt;img title="image" style="display: inline" height="442" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_163B5FCC.png" width="763" border="0" /&gt;&lt;/a&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;&lt;/p&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;    &lt;p&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;&lt;/p&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;    &lt;p&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;&lt;/p&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;    &lt;p&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;&lt;/p&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;    &lt;p&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;&lt;/p&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;    &lt;p&gt;We can clearly see that if the PageViewModel.HelloText property’s getter isn’t called, RhinoMocks will fail the test.&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_38AFEE87.png"&gt;&lt;img title="image" style="display: inline" height="403" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_571A2F70.png" width="379" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Let’s add another test to test the whole workflow without testing the PageViewModel itself:&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [&lt;span style="color: #2b91af"&gt;TestMethod&lt;/span&gt;]&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [&lt;span style="color: #2b91af"&gt;Asynchronous&lt;/span&gt;]&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Page_Loaded_&lt;strong&gt;ShouldUsePageViewModelHelloTextInTextBlock&lt;/strong&gt;()&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Page&lt;/span&gt; page = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Page&lt;/span&gt;();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;MockRepository&lt;/span&gt; mocks = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;MockRepository&lt;/span&gt;();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;PageViewModel&lt;/span&gt; pageViewModel = (&lt;span style="color: #2b91af"&gt;PageViewModel&lt;/span&gt;)mocks.StrictMock(&lt;span style="color: blue"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;PageViewModel&lt;/span&gt;));&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; page.ViewModel = pageViewModel;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;using&lt;/span&gt; (mocks.Record())&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&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; pageViewModel.Expect(p =&amp;gt; p.HelloText).&lt;strong&gt;Return(&lt;span style="color: #a31515"&gt;&amp;quot;Bonjour Monde!&amp;quot;&lt;/span&gt;);&lt;/strong&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WaitFor(page, &lt;span style="color: #a31515"&gt;&amp;quot;Loaded&amp;quot;&lt;/span&gt;);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; TestPanel.Children.Add(page);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; EnqueueCallback(() =&amp;gt; &lt;span style="color: #2b91af"&gt;Assert&lt;/span&gt;.IsTrue(&lt;strong&gt;page.txt.Text == &lt;span style="color: #a31515"&gt;&amp;quot;Bonjour Monde!&amp;quot;&lt;/span&gt;&lt;/strong&gt;));&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; EnqueueCallback(() =&amp;gt; mocks.VerifyAll());&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; EnqueueTestComplete();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;And again, all of our tests pass:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_7D0FDFC6.png"&gt;&lt;img title="image" style="display: inline" height="296" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_7C3779DC.png" width="359" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;The advantage of testing with Mocks – we test only what we need to test – we didn’t the actual PageViewModel class in this test. &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Microsoft Unity – Hello World&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;Unity is an Inversion of Control framework which let’s us easily reduce the complexity of our object model.      &lt;br /&gt;Big words, eh? Let’s get down to the code. &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;1. &lt;a href="http://www.microsoft.com/DOWNLOADS/details.aspx?familyid=0991CEDB-953A-4367-A2B6-071E31766B4C&amp;amp;displaylang=en" target="_blank"&gt;Download and install Unity for Silverlight.&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_294C66AB.png"&gt;&lt;img title="image" style="display: inline" height="165" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_20E89154.png" width="447" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;2. Add references to the Unity DLL to both our runtime and testing project. &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_31808C42.png"&gt;&lt;img title="image" style="display: inline" height="308" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_5E957910.png" width="307" border="0" /&gt;&lt;/a&gt; &lt;a href="http://silverlight.net/blogs/justinangel/image_24A63624.png"&gt;&lt;img title="image" style="display: inline" height="293" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_75E07D81.png" width="314" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Now, we’ll remove the Page.ViewModel property.&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;partial&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Page&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;UserControl&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;strike&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: #2b91af"&gt;PageViewModel&lt;/span&gt; _viewModel = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;PageViewModel&lt;/span&gt;();&lt;/strike&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;strike&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af"&gt;PageViewModel&lt;/span&gt; ViewModel&lt;/strike&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;strike&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/strike&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;strike&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;get&lt;/span&gt; { &lt;span style="color: blue"&gt;return&lt;/span&gt; _viewModel; }&lt;/strike&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;strike&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;set&lt;/span&gt; { _viewModel = &lt;span style="color: blue"&gt;value&lt;/span&gt;; }&lt;/strike&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;strike&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/strike&gt;&lt;/p&gt;   &lt;/div&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;    &lt;p&gt;And we’ll add a property that will get automatically populated by Unity:&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;partial&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Page&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;UserControl&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [&lt;span style="color: #2b91af"&gt;Dependency&lt;/span&gt;]&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af"&gt;PageViewModel&lt;/span&gt; ViewModel { &lt;span style="color: blue"&gt;get&lt;/span&gt;; &lt;span style="color: blue"&gt;set&lt;/span&gt;; }&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;Basically the [DependencyAttribute] says “Hey, Unity! I’m here! put a value into this property.”&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Now, we’ll create a static IoC used from everywhere in our App:&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;IoC&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;static&lt;/span&gt; IoC()&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Current = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;UnityContainer&lt;/span&gt;();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: #2b91af"&gt;UnityContainer&lt;/span&gt; Current { &lt;span style="color: blue"&gt;get&lt;/span&gt;; &lt;span style="color: blue"&gt;set&lt;/span&gt;; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;In our runtime project App.xaml.cs we’ll register “PageViewModel” type as the correct type to fill for any property of type PageViewModel. &lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;IoC&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;static&lt;/span&gt; IoC()&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Current = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;UnityContainer&lt;/span&gt;();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Current.RegisterType&amp;lt;&lt;span style="color: #2b91af"&gt;PageViewModel&lt;/span&gt;, &lt;span style="color: #2b91af"&gt;PageViewModel&lt;/span&gt;&amp;gt;();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: #2b91af"&gt;UnityContainer&lt;/span&gt; Current { &lt;span style="color: blue"&gt;get&lt;/span&gt;; &lt;span style="color: blue"&gt;set&lt;/span&gt;; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;Not the best of examples, I’ll admit that. But &lt;strong&gt;if we used a IPageViewModel&lt;/strong&gt; this piece of code would have more meaning, and would look like this:&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;IoC&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;static&lt;/span&gt; IoC()&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Current = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;UnityContainer&lt;/span&gt;();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Current.RegisterType&amp;lt;&lt;span style="color: #2b91af"&gt;&lt;strong&gt;IPageViewModel&lt;/strong&gt;&lt;/span&gt;, &lt;span style="color: #2b91af"&gt;PageViewModel&lt;/span&gt;&amp;gt;();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: #2b91af"&gt;UnityContainer&lt;/span&gt; Current { &lt;span style="color: blue"&gt;get&lt;/span&gt;; &lt;span style="color: blue"&gt;set&lt;/span&gt;; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;Which basically tells “Hey, Unity! Whenever you need to fill a property of type IPageViewModel use PageViewModel.”      &lt;br /&gt;Since we’re not using such an interface, we’ll go back to the original syntax.&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;One last thing we have to do is tell Unity to populate our type: &lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;partial&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Page&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;UserControl&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [&lt;span style="color: #2b91af"&gt;Dependency&lt;/span&gt;]&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af"&gt;PageViewModel&lt;/span&gt; ViewModel { &lt;span style="color: blue"&gt;get&lt;/span&gt;; &lt;span style="color: blue"&gt;set&lt;/span&gt;; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; Page()&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; InitializeComponent();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;strong&gt;&lt;span style="color: #2b91af"&gt;IoC&lt;/span&gt;.Current.BuildUp(&lt;span style="color: blue"&gt;this&lt;/span&gt;);&lt;/strong&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;this&lt;/span&gt;.Loaded += &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;RoutedEventHandler&lt;/span&gt;(Page_Loaded);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;void&lt;/span&gt; Page_Loaded(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;RoutedEventArgs&lt;/span&gt; e)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;this&lt;/span&gt;.DataContext = ViewModel; &lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;&amp;#160;&lt;/p&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;    &lt;p&gt;Now, let’s run our app:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_3BF13A95.png"&gt;&lt;img title="image" style="display: inline" height="249" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_59EF4889.png" width="364" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;It still shows “Hello world!”.      &lt;br /&gt;Let’s go over how that happened: &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_5E855343.png"&gt;&lt;img title="image" style="display: inline" height="444" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_66B978DA.png" width="786" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;How does that help us write better code?      &lt;br /&gt;Well, right now we only have a dependency between 2 classes. So it doesn’t help us a lot.       &lt;br /&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_40E35277.png"&gt;&lt;img title="image" style="display: inline" height="201" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_18647063.png" width="767" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;Becomes:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_1E3F13FC.png"&gt;&lt;img title="image" style="display: inline" height="262" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_55A5252A.png" width="794" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;But when dealing with real-world object graphs with a more complicated Object graph it becomes obvious why IoC containers are good: &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_4622135B.png"&gt;&lt;img title="image" style="display: inline" height="525" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_22393C01.png" width="769" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;When using IoC containers: &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_3AE86344.png"&gt;&lt;img title="image" style="display: inline" height="503" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_6FC542B4.png" width="581" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;In a real-world app, everyone registers with the IoC container and resolve dependencies with it. &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Now, let’s use Unity in on our unit tests and re-write our existing tests to use Unity to resolve these dependencies: &lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [&lt;span style="color: #2b91af"&gt;TestMethod&lt;/span&gt;]&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [&lt;span style="color: #2b91af"&gt;Asynchronous&lt;/span&gt;]&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Page_Loaded_ShouldUsePageViewModelHelloTextOnce()&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;strong&gt;&lt;span style="color: #2b91af"&gt;Page&lt;/span&gt; page = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Page&lt;/span&gt;();&lt;/strong&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;MockRepository&lt;/span&gt; mocks = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;MockRepository&lt;/span&gt;();&lt;/strong&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;PageViewModel&lt;/span&gt; pageViewModel = (&lt;span style="color: #2b91af"&gt;PageViewModel&lt;/span&gt;) mocks.StrictMock(&lt;span style="color: blue"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;PageViewModel&lt;/span&gt;));&lt;/strong&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; page.ViewModel = pageViewModel;&lt;/strong&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;using&lt;/span&gt;(mocks.Record())&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&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; &lt;strong&gt;pageViewModel&lt;/strong&gt;.Expect(p =&amp;gt; p.HelloText).Return(&lt;span style="color: blue"&gt;string&lt;/span&gt;.Empty);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WaitFor(page, &lt;span style="color: #a31515"&gt;&amp;quot;Loaded&amp;quot;&lt;/span&gt;);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; TestPanel.Children.Add(page);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; EnqueueCallback(() =&amp;gt; mocks.VerifyAll());&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; EnqueueTestComplete();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;we’ll re-write the test to use our Unity container:&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [&lt;span style="color: #2b91af"&gt;TestMethod&lt;/span&gt;]&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [&lt;span style="color: #2b91af"&gt;Asynchronous&lt;/span&gt;]&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Page_Loaded_ShouldUsePageViewModelHelloTextOnceWithUnity()&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;MockRepository&lt;/span&gt; mocks = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;MockRepository&lt;/span&gt;();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;IoC&lt;/span&gt;.Current.RegisterInstance(&lt;span style="color: blue"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;PageViewModel&lt;/span&gt;), mocks.StrictMock(&lt;span style="color: blue"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;PageViewModel&lt;/span&gt;)));&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Page&lt;/span&gt; page = &lt;span style="color: #2b91af"&gt;IoC&lt;/span&gt;.Current.Resolve&amp;lt;&lt;span style="color: #2b91af"&gt;Page&lt;/span&gt;&amp;gt;();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;using&lt;/span&gt; (mocks.Record())&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&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; &lt;span style="color: #2b91af"&gt;IoC&lt;/span&gt;.Current.Resolve&amp;lt;&lt;span style="color: #2b91af"&gt;PageViewModel&lt;/span&gt;&amp;gt;().Expect(p =&amp;gt; p.HelloText).Return(&lt;span style="color: blue"&gt;string&lt;/span&gt;.Empty);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WaitFor(page, &lt;span style="color: #a31515"&gt;&amp;quot;Loaded&amp;quot;&lt;/span&gt;);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; TestPanel.Children.Add(page);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; EnqueueCallback(() =&amp;gt; mocks.VerifyAll());&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; EnqueueTestComplete();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Let’s go line-by-line here:&lt;/p&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;    &lt;p&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;&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;IoC&lt;/span&gt;.Current.RegisterInstance(&lt;span style="color: blue"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;PageViewModel&lt;/span&gt;), mocks.StrictMock(&lt;span style="color: blue"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;PageViewModel&lt;/span&gt;)));&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;Basically we’re telling Unity that whenever it needs to resolve PageViewModel it should use a PageViewModel mock from RhinoMocks. &lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;Page&lt;/span&gt; page = &lt;span style="color: #2b91af"&gt;IoC&lt;/span&gt;.Current.Resolve&amp;lt;&lt;span style="color: #2b91af"&gt;Page&lt;/span&gt;&amp;gt;();&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;Instead of initializing a type with “new myClass();” we’re using Unity to get a class that has all of it’s dependencies resolved. In our case, a Page with a PageViewModel Mock.&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;using&lt;/span&gt; (mocks.Record())&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&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; &lt;span style="color: #2b91af"&gt;IoC&lt;/span&gt;.Current.Resolve&amp;lt;&lt;span style="color: #2b91af"&gt;PageViewModel&lt;/span&gt;&amp;gt;().Expect(p =&amp;gt; p.HelloText).Return(&lt;span style="color: blue"&gt;string&lt;/span&gt;.Empty);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;In stead of keeping a local copy of the Mock we created for Unity, we’re using Unity’s Resolve method to test get the mock back. &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;And when we run our tests:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_4D210439.png"&gt;&lt;img title="image" style="display: inline" height="351" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_1DEF18A2.png" width="400" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Let’s rewrite this test with Unity:&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;       &lt;p style="margin: 0px"&gt;[&lt;span style="color: #2b91af"&gt;TestMethod&lt;/span&gt;]&lt;/p&gt;        &lt;p style="margin: 0px"&gt;[&lt;span style="color: #2b91af"&gt;Asynchronous&lt;/span&gt;]&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Page_Loaded_ShouldUsePageViewModelHelloTextInTextBlock()&lt;/p&gt;        &lt;p style="margin: 0px"&gt;{&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Page&lt;/span&gt; page = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Page&lt;/span&gt;();&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;MockRepository&lt;/span&gt; mocks = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;MockRepository&lt;/span&gt;();&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;PageViewModel&lt;/span&gt; pageViewModel = (&lt;span style="color: #2b91af"&gt;PageViewModel&lt;/span&gt;)mocks.StrictMock(&lt;span style="color: blue"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;PageViewModel&lt;/span&gt;));&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; page.ViewModel = pageViewModel;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;using&lt;/span&gt; (mocks.Record())&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; pageViewModel.Expect(p =&amp;gt; p.HelloText).Return(&lt;span style="color: #a31515"&gt;&amp;quot;Bonjour Monde!&amp;quot;&lt;/span&gt;);&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; WaitFor(page, &lt;span style="color: #a31515"&gt;&amp;quot;Loaded&amp;quot;&lt;/span&gt;);&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; TestPanel.Children.Add(page);&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; EnqueueCallback(() =&amp;gt; &lt;span style="color: #2b91af"&gt;Assert&lt;/span&gt;.IsTrue(page.txt.Text == &lt;span style="color: #a31515"&gt;&amp;quot;Bonjour Monde!&amp;quot;&lt;/span&gt;));&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; EnqueueCallback(() =&amp;gt; mocks.VerifyAll());&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; EnqueueTestComplete();&lt;/p&gt;        &lt;p style="margin: 0px"&gt;}&lt;/p&gt;     &lt;/div&gt;   &lt;/div&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;&amp;#160;&lt;/div&gt;    &lt;p&gt;Becomes:&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;[&lt;span style="color: #2b91af"&gt;TestMethod&lt;/span&gt;]&lt;/p&gt;      &lt;p style="margin: 0px"&gt;[&lt;span style="color: #2b91af"&gt;Asynchronous&lt;/span&gt;]&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Page_Loaded_ShouldUsePageViewModelHelloTextInTextBlockWithUnity()&lt;/p&gt;      &lt;p style="margin: 0px"&gt;{&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;MockRepository&lt;/span&gt; mocks = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;MockRepository&lt;/span&gt;();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;IoC&lt;/span&gt;.Current.RegisterInstance(&lt;span style="color: blue"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;PageViewModel&lt;/span&gt;), mocks.StrictMock(&lt;span style="color: blue"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;PageViewModel&lt;/span&gt;)));&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Page&lt;/span&gt; page = &lt;span style="color: #2b91af"&gt;IoC&lt;/span&gt;.Current.Resolve&amp;lt;&lt;span style="color: #2b91af"&gt;Page&lt;/span&gt;&amp;gt;();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;using&lt;/span&gt; (mocks.Record())&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;IoC&lt;/span&gt;.Current.Resolve&amp;lt;&lt;span style="color: #2b91af"&gt;PageViewModel&lt;/span&gt;&amp;gt;().Expect(p =&amp;gt; p.HelloText).Return(&lt;span style="color: #a31515"&gt;&amp;quot;Bonjour Monde!&amp;quot;&lt;/span&gt;);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; WaitFor(page, &lt;span style="color: #a31515"&gt;&amp;quot;Loaded&amp;quot;&lt;/span&gt;);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; TestPanel.Children.Add(page);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; EnqueueCallback(() =&amp;gt; &lt;span style="color: #2b91af"&gt;Assert&lt;/span&gt;.IsTrue(page.txt.Text == &lt;span style="color: #a31515"&gt;&amp;quot;Bonjour Monde!&amp;quot;&lt;/span&gt;));&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; EnqueueCallback(() =&amp;gt; mocks.VerifyAll());&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; EnqueueTestComplete();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;}&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;And when we run our tests:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_03AEAF7E.png"&gt;&lt;img title="image" style="display: inline" height="340" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_29382CDF.png" width="365" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Some slight of hand I used here is to change this test:&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [&lt;span style="color: #2b91af"&gt;TestMethod&lt;/span&gt;]&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [&lt;span style="color: #2b91af"&gt;Asynchronous&lt;/span&gt;]&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; PageWithTextBlock_Initialized_ShouldHaveHelloWorldText()&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Page&lt;/span&gt; page = &lt;span style="color: #2b91af"&gt;IoC&lt;/span&gt;.Current.Resolve&amp;lt;&lt;span style="color: #2b91af"&gt;Page&lt;/span&gt;&amp;gt;(); &lt;span style="color: green"&gt;//new Page();&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WaitFor(page, &lt;span style="color: #a31515"&gt;&amp;quot;Loaded&amp;quot;&lt;/span&gt;);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; TestPanel.Children.Add(page);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; EnqueueCallback(() =&amp;gt; &lt;span style="color: #2b91af"&gt;Assert&lt;/span&gt;.IsTrue(page.txt.Text == &lt;span style="color: #a31515"&gt;&amp;quot;Hello World!&amp;quot;&lt;/span&gt;));&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; EnqueueTestComplete();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;We no longer initialize types with “new” rather through the IoC container.&lt;/p&gt;    &lt;p&gt;And I added this Piece of code to initialize our IoC between each test:&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;[&lt;span style="color: #2b91af"&gt;TestInitialize&lt;/span&gt;]&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Init()&lt;/p&gt;      &lt;p style="margin: 0px"&gt;{&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;IoC&lt;/span&gt;.Current = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;UnityContainer&lt;/span&gt;();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;}&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Silverlight Unit Test Runner for Resharper – Hello World&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;Running our tests breaks the flow of development.&lt;/p&gt;    &lt;p&gt;We have to exit Visual studio, run the test harness and wait for it to run.      &lt;br /&gt;In comes Einar Ingebrigtsen’s Resharper SIlverlight Unit test runner.       &lt;br /&gt;      &lt;br /&gt;1. Install R# (Resharper) from &lt;a title="http://www.jetbrains.com/resharper/download/index.html" href="http://www.jetbrains.com/resharper/download/index.html"&gt;http://www.jetbrains.com/resharper/download/index.html&lt;/a&gt;&amp;#160; &lt;br /&gt;R# is a commercial plugin for Visual studio, but has 30 first days free. &lt;/p&gt;    &lt;p&gt;2. Download the &lt;a href="http://www.ingebrigtsen.info/Downloads/SilverlightUnitTest_January2009.zip" target="_blank"&gt;latest version&lt;/a&gt; of the R# Silverlight Unit test runner from &lt;a href="http://www.ingebrigtsen.info/post/2009/01/12/Silverlight-Unit-Test-Runner-for-Resharper-January-2009-Update.aspx" target="_blank"&gt;Einar’s blog&lt;/a&gt;.       &lt;br /&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_4F2DDD35.png"&gt;&lt;img title="image" style="display: inline" height="202" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_6D981E1E.png" width="375" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;3. Drag &amp;amp; Drop the 3 DLLs into the machine’s GAC. (On my computer at: c:\Windows\Assembly)      &lt;br /&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_7E30190C.png"&gt;&lt;img title="image" style="display: inline" height="362" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_02C623C7.png" width="414" border="0" /&gt;&lt;/a&gt;&amp;#160; &lt;br /&gt;&lt;/p&gt;    &lt;p&gt;4. Copy the 3 DLLs and the “Website” directory into a subdirectory under the Resharper plugin directory.      &lt;br /&gt;(On my computer: C:\Program Files\JetBrains\ReSharper\v4.1\Bin\Plugins\C:\Program Files\JetBrains\ReSharper\v4.1\Bin\Plugins\)&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_330CF87D.png"&gt;&lt;img title="image" style="display: inline" height="194" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_0A21E374.png" width="566" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;5. Restart Visual studio and when prompted for a website address put in the file path for the ‘website’ directory.      &lt;br /&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_2ED2FAEB.png"&gt;&lt;img title="image" style="display: inline" height="159" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_032230EF.png" width="377" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;with our testing project open, open up the Resharper Unit Testing explorer. &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_149291C7.png"&gt;&lt;img title="image" style="display: inline" height="384" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_6C7FE2A7.png" width="484" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;And you can see our 7 Silverlight unit tests In the R# Unit test explorer.      &lt;br /&gt;We’ll press the “run” button to run all the tests. &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_446D3388.png"&gt;&lt;img title="image" style="display: inline" height="259" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_035EB424.png" width="501" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;A new R# Test session starts up and we’ll have to wait 5 seconds the first time for tests to start running.&amp;#160; &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_0F802E4B.png"&gt;&lt;img title="image" style="display: inline" height="291" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_5A26F618.png" width="770" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;And we can see that all test pass:&amp;#160; &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_03BAC14C.png"&gt;&lt;img title="image" style="display: inline" height="273" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_4DF55624.png" width="760" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;And finally, it’s just easier to run our tests by pressing “Run all tests from solution” (and maybe assigning a shortcut for it).&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_0C7AA3CB.png"&gt;&lt;img title="image" style="display: inline" height="384" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_723A3AA6.png" width="490" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Summary – Hello World&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;Hopefully this short blog post is enough to get you on your way in the exciting world of unit testing.&lt;/p&gt;    &lt;p&gt;None of these solutions are the sole frameworks in their respective field, but they are a good start.      &lt;br /&gt;The article doesn’t talk about best practices like Unity AutoMocker or ViewModels, but it does give you a good start.       &lt;br /&gt;I’ll try to cover other Silverlight IoC containers and Silverlight Mocking solutions in future blog posts. &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Sincerely, &lt;/p&gt;    &lt;p&gt;-- Justin Angel&lt;/p&gt;    &lt;p&gt;Microsoft Silverlight Toolkit Program Manager&lt;/p&gt; &lt;/div&gt;&lt;img src="http://blogs.silverlight.net/aggbug.aspx?PostID=179327" width="1" height="1"&gt;</description><category domain="http://blogs.silverlight.net/blogs/justinangel/archive/tags/Hello+World/default.aspx">Hello World</category><category domain="http://blogs.silverlight.net/blogs/justinangel/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.silverlight.net/blogs/justinangel/archive/tags/Open+source+projects/default.aspx">Open source projects</category><evnet:views>1116</evnet:views><evnet:viewtrackingurl>http://blogs.silverlight.net/aggbug.aspx?PostID=179327</evnet:viewtrackingurl></item><item><title>Tour around Silverlight Contrib</title><link>http://blogs.silverlight.net/blogs/justinangel/archive/2008/12/30/tour-around-silverlight-contrib.aspx</link><pubDate>Wed, 31 Dec 2008 03:23:14 GMT</pubDate><guid isPermaLink="false">d0d632c8-a6f7-4f68-b0ce-26aaafd62132:154214</guid><dc:creator>JustinAngel</dc:creator><slash:comments>10</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.silverlight.net/blogs/justinangel/rsscomments.aspx?PostID=154214</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.silverlight.net/blogs/justinangel/commentapi.aspx?PostID=154214</wfw:comment><comments>http://blogs.silverlight.net/blogs/justinangel/archive/2008/12/30/tour-around-silverlight-contrib.aspx#comments</comments><description>&lt;div style="font-family: arial"&gt;   &lt;p&gt;I’m a huge supporter of open source software development and I'd like to take this opportunity to go over the &lt;a href="http://www.codeplex.com/silverlightcontrib" target="_blank"&gt;Silverlight Contrib&lt;/a&gt; O/S project. &lt;/p&gt;    &lt;p&gt;Fair disclosure first though, my current role is Program Manager for the Silverlight Toolkit team which ships on codeplex (at &lt;a href="http://www.codeplex.com/Silverlight"&gt;http://www.codeplex.com/Silverlight&lt;/a&gt;).&amp;#160; &lt;br /&gt;I’ve got a very high quality bar and I expect nothing less from any O/S project that I ask customers to put into their technology stack. &lt;/p&gt;    &lt;p&gt;Standard Microsoft disclaimer:&lt;em&gt; KGB Assassins will be hired to&lt;/em&gt;… &lt;strong&gt;Wait&lt;/strong&gt;, other Disclaimer: I do not speak for my employer. &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Getting Started&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;OK, this is straight forward and well-organized. &lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Codeplex&lt;/strong&gt; website @ &lt;a title="http://www.codeplex.com/silverlightcontrib" href="http://www.codeplex.com/SilverlightContrib"&gt;http://www.codeplex.com/SilverlightContrib&lt;/a&gt;.       &lt;br /&gt;I went to the Release Tab and downloaded the latest &lt;strong&gt;Alpha 3&lt;/strong&gt; release from &lt;strong&gt;December 15th&lt;/strong&gt;.&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Official&lt;/strong&gt; Website @ &lt;a title="silverlightcontrib.org" href="http://silverlightcontrib.org/"&gt;http://SilverlightContrib.org&lt;/a&gt;. &lt;/p&gt;    &lt;p&gt;And &lt;strong&gt;live demo&lt;/strong&gt; @ &lt;a title="http://silverlightcontrib.org/demo/" href="http://silverlightcontrib.org/demo/"&gt;http://silverlightcontrib.org/demo/&lt;/a&gt;. &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlightcontrib.org/demo/"&gt;&lt;img title="Silverlight Contrib Demo App" style="display: inline" height="430" alt="Silverlight Contrib Demo App" src="http://silverlight.net/blogs/justinangel/image_69A30CE8.png" width="488" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;First impressions is really important, especially in a open source projects. A real problem that plagues open source initiatives is the lack of proper documentation and support.      &lt;br /&gt;Silverlight Contrib has an excellent first impression. Excellent website organization, solid sample app, and it even comes with a CHM file! &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_6E3917A2.png"&gt;&lt;img title="image" style="display: inline" height="260" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_57B6534E.png" width="648" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;Unfortunately some of the subjects in the CHM file clearly say they’re missing documentation: &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_6F6D8AB4.png"&gt;&lt;img title="image" style="display: inline" height="114" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_55995485.png" width="435" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;OK, Let’s start a new SIlverlight Application and add the (3?) Silverlight Contrib DLLs. &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_46EEA8A0.png"&gt;&lt;img title="image" style="display: inline" height="429" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_626384D6.png" width="806" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_7869F068.png"&gt;&lt;img title="image" style="display: inline" height="335" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_0C16D9FD.png" width="460" border="0" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_71D670D8.png"&gt;&lt;img title="image" style="display: inline" height="414" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_7091D7F9.png" width="482" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;And here’s how our solution looks like after we added the DLLs: &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_6F4D3F1A.png"&gt;&lt;img title="image" style="display: inline" height="359" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_67559CB8.png" width="254" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Inside the XAML editor, we’ll go to “Choose Items” and add the “SilverlightContrib.Controls.dll” to the Visual Studio Toolbox:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_0D4B4D0F.png"&gt;&lt;img title="image" style="display: inline" height="267" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_70622839.png" width="354" border="0" /&gt;&lt;/a&gt;&amp;#160;&amp;#160;&amp;#160; --&amp;gt; &lt;a href="http://silverlight.net/blogs/justinangel/image_1657D890.png"&gt;&lt;img title="image" style="display: inline" height="180" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_4A8C01D6.png" width="210" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Color Picker&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;Ok, enough fooling around. Let’s build something. We’ll start from the Color Picker. &lt;/p&gt;    &lt;p&gt;Based on the CHM file here’s what we’ve got In ColorPicker:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_50D2D864.png"&gt;&lt;img title="image" style="display: inline" height="131" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_4FFA727A.png" width="192" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;We’ve got a ColorSelected event and a SelectedColor property. &lt;/p&gt;    &lt;p&gt;Let’s build a simple app that has a color picker and a rectangle that uses that colour as fill. &lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;UserControl&lt;/span&gt;&lt;span style="color: red"&gt; x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Class&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;SL_Contrib.Page&amp;quot;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160; &lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;&lt;/span&gt; &lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160; &lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;&lt;/span&gt; &lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160; &lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;clr-namespace:SilverlightContrib.Controls;assembly=SilverlightContrib.Controls&amp;quot;&lt;/span&gt; &lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160; &lt;span style="color: red"&gt;Width&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;400&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Height&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;200&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;StackPanel&lt;/span&gt;&lt;span style="color: red"&gt; x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;LayoutRoot&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Background&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;White&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;ColorPicker&lt;/span&gt;&lt;span style="color: red"&gt; x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;colorPicker&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Width&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;200&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Height&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;200&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; SelectedColor&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Green&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Rectangle&lt;/span&gt;&lt;span style="color: red"&gt; x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;myRect&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Fill&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Green&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Width&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;100&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Height&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;100&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;StackPanel&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;UserControl&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;Hmm… I was writing the event registration there for a second and got confused… Why is the Property called “SelectedColor” and the change event called “ColorChanged”? Shouldn’t it be “SelectedColorChanged”? Minor annoyance, but still. &lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;partial&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Page&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;UserControl&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; Page()&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; InitializeComponent();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; colorPicker.ColorSelected += &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ColorSelectedHandler&lt;/span&gt;(colorPicker_ColorSelected);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; colorPicker_ColorSelected(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;ColorSelectedEventArgs&lt;/span&gt; e)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; myRect.Fill.As&amp;lt;&lt;span style="color: #2b91af"&gt;SolidColorBrush&lt;/span&gt;&amp;gt;().Color = e.SelectedColor;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Extensions&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; T As&amp;lt;T&amp;gt;(&lt;span style="color: blue"&gt;this&lt;/span&gt; &lt;span style="color: blue"&gt;object&lt;/span&gt; obj)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; (T) obj;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;(I’ve added my As&amp;lt;T&amp;gt; extension method) &lt;/p&gt;    &lt;p&gt;Let’s run this sample: &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_414FC695.png"&gt;&lt;img title="image" style="display: inline" height="433" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_51E7C183.png" width="505" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;Truly a master-piece app. &lt;/p&gt;    &lt;p&gt;Yep, and when we select another color the rectangle gets updated.&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_3E5A61E2.png"&gt;&lt;img title="image" style="display: inline" height="317" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_5D30D5C0.png" width="225" border="0" /&gt;&lt;/a&gt; &lt;a href="http://silverlight.net/blogs/justinangel/image_4A0FA914.png"&gt;&lt;img title="image" style="display: inline" height="315" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_5B13D6F7.png" width="212" border="0" /&gt;&lt;/a&gt; &lt;a href="http://silverlight.net/blogs/justinangel/image_330127D8.png"&gt;&lt;img title="image" style="display: inline" height="326" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_38DBCB71.png" width="256" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;It looks like the ColorPicker isn’t invoking the ColorChanged event when you just drag &amp;amp; drop…&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_25BA9EC5.png"&gt;&lt;img title="image" style="display: inline" height="307" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_64AC1F60.png" width="209" border="0" /&gt;&lt;/a&gt; &lt;a href="http://silverlight.net/blogs/justinangel/image_239D9FFC.png"&gt;&lt;img title="image" style="display: inline" height="320" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_1486C122.png" width="260" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;You can see that the in the first picture I’ve started dragging and the second picture is while still dragging.      &lt;br /&gt;The control visuals get updated, but there’s no external event you can use to pick up on that until the user drops and release the mouse capture. &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;The TextBlock on the bottom left isn’t editable, so we’ll create another TextBox and try to change the selected colour. &lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;ColorPicker&lt;/span&gt;&lt;span style="color: red"&gt; x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;colorPicker&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Width&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;200&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Height&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;200&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; SelectedColor&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Green&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;strong&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBox&lt;/span&gt;&lt;span style="color: red"&gt; x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;tbxColour&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;strong&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Button&lt;/span&gt;&lt;span style="color: red"&gt; x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;btnCommit&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Content&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Change colour&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Rectangle&lt;/span&gt;&lt;span style="color: red"&gt; x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;myRect&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Fill&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Green&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Width&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;100&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Height&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;100&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;   &lt;/div&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; Page()&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; InitializeComponent();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; colorPicker.ColorSelected += &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ColorSelectedHandler&lt;/span&gt;(colorPicker_ColorSelected);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; btnCommit.Click += &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;RoutedEventHandler&lt;/span&gt;(btnCommit_Click);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;void&lt;/span&gt; btnCommit_Click(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;RoutedEventArgs&lt;/span&gt; e)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;byte&lt;/span&gt; alpha = &lt;span style="color: #2b91af"&gt;Convert&lt;/span&gt;.ToByte(tbxColour.Text.Substring(0, 2), 16);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;byte&lt;/span&gt; red = &lt;span style="color: #2b91af"&gt;Convert&lt;/span&gt;.ToByte(tbxColour.Text.Substring(2, 2), 16);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;byte&lt;/span&gt; green = &lt;span style="color: #2b91af"&gt;Convert&lt;/span&gt;.ToByte(tbxColour.Text.Substring(4, 2), 16);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;byte&lt;/span&gt; blue = &lt;span style="color: #2b91af"&gt;Convert&lt;/span&gt;.ToByte(tbxColour.Text.Substring(6, 2), 16);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; colorPicker.SelectedColor = &lt;span style="color: #2b91af"&gt;Color&lt;/span&gt;.FromArgb(alpha, red, green, blue);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;And when we run our sample: &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_614A87B8.png"&gt;&lt;img title="image" style="display: inline" height="364" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_724EB59B.png" width="221" border="0" /&gt;&lt;/a&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_31403637.png"&gt;&lt;img title="image" style="display: inline" height="360" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_5735E68D.png" width="220" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;Works like a charm. &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;I’ve opened the application in Blend to try and change the default layout of the ColorPicker.&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_7D2B96E3.png"&gt;&lt;img title="image" style="display: inline" height="466" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_696E8782.png" width="673" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;Now, I changed the default visual tree for this control to move the Hue selector from the left to the right and viola:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_7855B69C.png"&gt;&lt;img title="image" style="display: inline" height="440" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_524FE079.png" width="694" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;Still works like a charm:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_3CA5820F.png"&gt;&lt;img title="image" style="display: inline" height="297" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_21F8E5F6.png" width="524" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;One cool thing though that I’ve noticed in Blend is how the nice spectrum is built:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_37931E93.png"&gt;&lt;img title="image" style="display: inline" height="319" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_426FFFDB.png" width="594" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;It’s basically a Gradient with a bunch of GradientStops. cool stuff. I keep being amazed by how people use the basic 2d drawing abilities of Silverlight. &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;All and all, this is a very cool control.&lt;/p&gt;    &lt;p&gt;Pros: &lt;/p&gt;    &lt;ol&gt;     &lt;li&gt;Very cool visuals appearance. Main color selection palette, side spectrum selection palette and an area that shows the currently selected color and it’s Hex. &lt;/li&gt;      &lt;li&gt;Solid control. &lt;/li&gt;   &lt;/ol&gt;    &lt;p&gt;Minor cons:&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;The event naming for “ColorChanged” is not consistent with the property name “SelectedColor”. &lt;/li&gt;      &lt;li&gt;No event “ColorChanging” that fired while the eye dropper is being dragged. &lt;/li&gt;      &lt;li&gt;The Hex textbox isn’t editable &lt;/li&gt;   &lt;/ul&gt;    &lt;p&gt;&amp;#160;&lt;/p&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;    &lt;p&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;&lt;/p&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;    &lt;p&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;&lt;/p&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;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Cool Menu&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;From the sample app:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_40BF3407.png"&gt;&lt;img title="image" style="display: inline" height="148" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_27FFE6F7.png" width="727" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Here’s the CHM file doc on this control:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_7B0A841B.png"&gt;&lt;img title="image" style="display: inline" height="214" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_61364DEC.png" width="236" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;So we’ve got Items, MaxItemHeight, MaxItemWidth, MenuIndexChanged, MenuItemClicked&amp;#160; &amp;amp; MenuItemClickEffect.&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Let’s build a quick cool menu with some items.      &lt;br /&gt;I’ll use Dobby the penguin from Jose Farajdo’s blog - &lt;a title="http://advertboy.wordpress.com/blendcandy/" href="http://advertboy.wordpress.com/blendcandy/"&gt;http://advertboy.wordpress.com/blendcandy/&lt;/a&gt;.&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenu&lt;/span&gt;&lt;span style="color: red"&gt; Height&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;200&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenu.Items&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItemCollection&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItem&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItem.Content&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SL_Contrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;PenguinControl&lt;/span&gt;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItem.Content&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItem&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItem&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItem.Content&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SL_Contrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;PenguinControl&lt;/span&gt;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItem.Content&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItem&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItem&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItem.Content&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SL_Contrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;PenguinControl&lt;/span&gt;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItem.Content&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItem&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItem&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItem.Content&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SL_Contrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;PenguinControl&lt;/span&gt;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItem.Content&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItem&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItem&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItem.Content&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SL_Contrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;PenguinControl&lt;/span&gt;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItem.Content&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItem&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItem&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItem.Content&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SL_Contrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;PenguinControl&lt;/span&gt;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItem.Content&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItem&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItemCollection&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenu.Items&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenu&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;I’m not crazy about this syntax. &lt;/p&gt;    &lt;p&gt;First, I have to specify I’m using the Items collectiom, than the specific collection CollMenuItemCollection, than a CoolMenuItem, than Content and finally I can specify the actual Items. Why not support a much simpler syntax?&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenu&lt;/span&gt;&lt;span style="color: red"&gt; Height&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;200&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SL_Contrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;PenguinControl&lt;/span&gt;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SL_Contrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;PenguinControl&lt;/span&gt;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SL_Contrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;PenguinControl&lt;/span&gt;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SL_Contrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;PenguinControl&lt;/span&gt;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SL_Contrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;PenguinControl&lt;/span&gt;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenu&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Anyway, let’s run our app with the extended syntax:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_1974C505.png"&gt;&lt;img title="image" style="display: inline" height="379" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_586645A0.png" width="486" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;When we mouse over one of the items:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_026643C9.png"&gt;&lt;img title="image" style="display: inline" height="303" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_0840E762.png" width="408" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_4DE57180.png"&gt;&lt;img title="image" style="display: inline" height="288" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_6CBBE55E.png" width="400" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;This menu is pretty cool. &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Oh, this is cool: When I click Dobby he drops down and up in a nice elastic bounce motion. &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_27736868.png"&gt;&lt;img title="image" style="display: inline" height="130" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_269B027E.png" width="404" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_0CC6CC4F.png"&gt;&lt;img title="image" style="display: inline" height="87" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_76FCE3F1.png" width="424" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_5D28ADC2.png"&gt;&lt;img title="image" style="display: inline" height="118" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_43547793.png" width="408" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_148EBEF1.png"&gt;&lt;img title="image" style="display: inline" height="131" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_28A7DB7A.png" width="416" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;Pretty cool. &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;OK, Now I’d like to grab a click on one of the menu items.      &lt;br /&gt;We’ll name the menu and add a Text property to the MenuItem. &lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenu&lt;/span&gt;&lt;span style="color: red"&gt; Height&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;200&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;menu&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenu.Items&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItemCollection&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItem&lt;/span&gt;&lt;span style="color: red"&gt; Text&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Penguin #1&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItem.Content&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SL_Contrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;PenguinControl&lt;/span&gt;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItem.Content&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItem&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItem&lt;/span&gt;&lt;span style="color: red"&gt; Text&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Penguin #2&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItem.Content&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SL_Contrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;PenguinControl&lt;/span&gt;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItem.Content&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItem&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItem&lt;/span&gt;&lt;span style="color: red"&gt; Text&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Penguin #3&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItem.Content&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SL_Contrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;PenguinControl&lt;/span&gt;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItem.Content&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItem&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItem&lt;/span&gt;&lt;span style="color: red"&gt; Text&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Penguin #4&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItem.Content&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SL_Contrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;PenguinControl&lt;/span&gt;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItem.Content&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItem&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItem&lt;/span&gt;&lt;span style="color: red"&gt; Text&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Penguin #5&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItem.Content&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SL_Contrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;PenguinControl&lt;/span&gt;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItem.Content&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItem&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItem&lt;/span&gt;&lt;span style="color: red"&gt; Text&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Penguin #6&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItem.Content&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SL_Contrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;PenguinControl&lt;/span&gt;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItem.Content&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItem&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenuItemCollection&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenu.Items&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenu&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;   &lt;/div&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;       &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;partial&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;CoolMenuPage&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;UserControl&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; CoolMenuPage()&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; InitializeComponent();&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; menu.MenuItemClicked += &lt;span style="color: blue"&gt;new&lt;/span&gt; SilverlightContrib.Controls.&lt;span style="color: #2b91af"&gt;MenuIndexChangedHandler&lt;/span&gt;(menu_MenuItemClicked);&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;void&lt;/span&gt; menu_MenuItemClicked(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, SilverlightContrib.Controls.&lt;span style="color: #2b91af"&gt;SelectedMenuItemArgs&lt;/span&gt; e)&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; txt.Text = e.Item.Text;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;     &lt;/div&gt;   &lt;/div&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_0ED3A54B.png"&gt;&lt;img title="image" style="display: inline" height="205" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_7909BCED.png" width="429" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_78315703.png"&gt;&lt;img title="image" style="display: inline" height="204" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_0C4A738D.png" width="382" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Nice. &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Pros:&lt;/p&gt;    &lt;ol&gt;     &lt;li&gt;Pretty cool all and all. The resizing effect, the nice elastic bounce on click and how the rest of the items move. All of these create a solid User eXprience. &lt;/li&gt;   &lt;/ol&gt;    &lt;p&gt;Cons:&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;The menu only ships with 2 types of effects “Bounce” and “None”. There’s no extensible mechanisms to add your own effect. Not even through VSM.&amp;#160; &lt;/li&gt;      &lt;li&gt;The menu should inherit from ItemsControl, which it doesn’t. I can’t use any Item templating goodness with this control. I’d like to be able to run this code: &lt;/li&gt;   &lt;/ul&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;menu.ItemSource = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;Person&amp;gt;()&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&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; &lt;span style="color: blue"&gt;new&lt;/span&gt; Person(Name = &lt;span style="color: #a31515"&gt;&amp;quot;Justin&amp;quot;&lt;/span&gt;, Picture = &lt;span style="color: #a31515"&gt;&amp;quot;Awesomeness.jpg&amp;quot;&lt;/span&gt;),&lt;/p&gt;      &lt;p style="margin: 0px"&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; &lt;span style="color: blue"&gt;new&lt;/span&gt; Person(Name = &lt;span style="color: #a31515"&gt;&amp;quot;RJ&amp;quot;&lt;/span&gt;, Picture = &lt;span style="color: #a31515"&gt;&amp;quot;YaImADutch.jpg&amp;quot;&lt;/span&gt;),&lt;/p&gt;      &lt;p style="margin: 0px"&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; &lt;span style="color: blue"&gt;new&lt;/span&gt; Person(Name = &lt;span style="color: #a31515"&gt;&amp;quot;Dobby&amp;quot;&lt;/span&gt;, Picture = &lt;span style="color: #a31515"&gt;&amp;quot;Penguin.jpg&amp;quot;&lt;/span&gt;),&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; };        &lt;br /&gt;&lt;/p&gt;      &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;       &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenu&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenu.ItemTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;DataTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;StackPanel&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Image&lt;/span&gt;&lt;span style="color: red"&gt; Source&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color: #a31515"&gt;Binding&lt;/span&gt;&lt;span style="color: red"&gt; Picture&lt;/span&gt;&lt;span style="color: blue"&gt;}&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBlock&lt;/span&gt;&lt;span style="color: red"&gt; Text&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color: #a31515"&gt;Binding&lt;/span&gt;&lt;span style="color: red"&gt; Name&lt;/span&gt;&lt;span style="color: blue"&gt;}&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;StackPanel&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;DataTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenu.ItemTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;SilverlightContrib&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoolMenu&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;     &lt;/div&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&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;    &lt;p&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;&lt;/p&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;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Tweening &lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;From Wikipedia:&lt;/p&gt;    &lt;blockquote&gt;     &lt;p&gt;&lt;em&gt;&lt;b&gt;“Inbetweening&lt;/b&gt; or &lt;b&gt;tweening&lt;/b&gt; is the process of generating intermediate frames between two images to give the appearance that the first image evolves smoothly into the second image. &lt;b&gt;Inbetweens&lt;/b&gt; are the drawings between the &lt;/em&gt;&lt;a href="http://en.wikipedia.org/wiki/Keyframe"&gt;&lt;em&gt;keyframes&lt;/em&gt;&lt;/a&gt;&lt;em&gt; which help to create the illusion of motion. Inbetweening is a key process in all types of &lt;/em&gt;&lt;a href="http://en.wikipedia.org/wiki/Animation"&gt;&lt;em&gt;animation&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, including &lt;/em&gt;&lt;a href="http://en.wikipedia.org/wiki/Computer_animation"&gt;&lt;em&gt;computer animation&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.” – copied from &lt;a title="http://en.wikipedia.org/wiki/Tweening" href="http://en.wikipedia.org/wiki/Tweening"&gt;http://en.wikipedia.org/wiki/Tweening&lt;/a&gt;&amp;#160;&lt;/em&gt;&lt;/p&gt;   &lt;/blockquote&gt;    &lt;p&gt;Basically, Tweening is creating cool effects :)&lt;/p&gt;    &lt;p&gt;Let’s see a basic example of this. &lt;/p&gt;    &lt;p&gt;Here’s a basketball I draw in a few seconds in Blend:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_56657E72.png"&gt;&lt;img title="image" style="display: inline" height="345" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_558D1888.png" width="443" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;(Yes, It’s a Basketball. Prove that it isn’t.)&lt;/p&gt;    &lt;p&gt;Now, I’d like for it to bounce down and up and down again in a realistic fashion.&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_6DB082E3.png"&gt;&lt;img title="image" style="display: inline" height="345" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_13A6333A.png" width="443" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;In order to do that, We’ll add a storyboard in Blend. &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_72B2C092.png"&gt;&lt;img title="image" style="display: inline" height="88" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_78F99720.png" width="280" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;At 0.0 we want the basketball to be at the initial position. &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_6A4EEB3B.png"&gt;&lt;img title="image" style="display: inline" height="313" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_09255F1A.png" width="567" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;At 0.5 seconds we want it at the bottom.&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_55E925B0.png"&gt;&lt;img title="image" style="display: inline" height="324" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_3BA8BC8C.png" width="571" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;At 0.7 seconds we want it to back up a bit.&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_737B00AF.png"&gt;&lt;img title="image" style="display: inline" height="335" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_723667D0.png" width="599" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;And down again in 0.8 seconds:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_1EDF21AA.png"&gt;&lt;img title="image" style="display: inline" height="325" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_6483ABC8.png" width="612" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;And on load we’ll start the stortboard:&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;void&lt;/span&gt; SilverlightControl1_Loaded(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;RoutedEventArgs&lt;/span&gt; e)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Resources[&lt;span style="color: #a31515"&gt;&amp;quot;Storyboard1&amp;quot;&lt;/span&gt;].As&amp;lt;&lt;span style="color: #2b91af"&gt;Storyboard&lt;/span&gt;&amp;gt;().Begin();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Than once we run the page we’ll see the full animation. &lt;/p&gt;    &lt;p&gt;However, we might not want to specify each possible frame to build realistic effects.      &lt;br /&gt;It’s hard, and it’s a very hard task. &lt;/p&gt;    &lt;p&gt;In comes the Tweening library.      &lt;br /&gt;First, we’ll delete all keyframes besides the last one. &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_3551C031.png"&gt;&lt;img title="image" style="display: inline" height="300" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_5428340F.png" width="551" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;Than, back in Visual studio we’ll have a look at that last keyframe. &lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Storyboard&lt;/span&gt;&lt;span style="color: red"&gt; x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Storyboard1&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;DoubleAnimationUsingKeyFrames&lt;/span&gt;&lt;span style="color: red"&gt; BeginTime&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;00:00:00&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Storyboard.TargetName&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;canvas&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Storyboard.TargetProperty&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SplineDoubleKeyFrame&lt;/span&gt;&lt;span style="color: red"&gt; KeyTime&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;00:00:00.8000000&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Value&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;186&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;DoubleAnimationUsingKeyFrames&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Storyboard&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;We’ll start by deleting even that last animation and copying it’s Keyframe time to the Duration.&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Storyboard&lt;/span&gt;&lt;span style="color: red"&gt; x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Storyboard1&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;DoubleAnimationUsingKeyFrames&lt;/span&gt;&lt;span style="color: red"&gt; BeginTime&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;00:00:00&amp;quot;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&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;strong&gt;&lt;span style="color: red"&gt;Duration&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;00:00:00.8000000&amp;quot;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&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;span style="color: red"&gt;Storyboard.TargetName&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;canvas&amp;quot;&lt;/span&gt; &lt;/p&gt;      &lt;p style="margin: 0px"&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;span style="color: red"&gt;Storyboard.TargetProperty&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Storyboard&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;Next, We’ll add some Tweening attached properties.&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_72FEA7ED.png"&gt;&lt;img title="image" style="display: inline" height="233" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_28B3ED48.png" width="675" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;Now, let’s set the initial value, the target value, the number of frames we’d like generated for us and the Transition type. .&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_67A56DE3.png"&gt;&lt;img title="image" style="display: inline" height="338" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_5FADCB81.png" width="439" border="0" /&gt;&lt;/a&gt; &lt;a href="http://silverlight.net/blogs/justinangel/image_735AB515.png"&gt;&lt;img title="image" style="display: inline" height="257" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_79A18BA3.png" width="149" border="0" /&gt;&lt;/a&gt; &lt;a href="http://silverlight.net/blogs/justinangel/image_51FB0F79.png"&gt;&lt;img title="image" style="display: inline" height="262" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_713DB64C.png" width="163" border="0" /&gt;&lt;/a&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;&lt;/p&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;    &lt;p&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;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;And here’s our final storyboard XAML:&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Storyboard&lt;/span&gt;&lt;span style="color: red"&gt; x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Storyboard1&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;DoubleAnimationUsingKeyFrames&lt;/span&gt;&lt;span style="color: red"&gt; BeginTime&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;00:00:00&amp;quot;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&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; &lt;span style="color: red"&gt;Duration&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;00:00:00.8000000&amp;quot;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&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; &lt;span style="color: red"&gt;Storyboard.TargetName&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;canvas&amp;quot;&lt;/span&gt; &lt;/p&gt;      &lt;p style="margin: 0px"&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; &lt;span style="color: red"&gt;Storyboard.TargetProperty&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)&amp;quot;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&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; &lt;span style="color: red"&gt;Tweener&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Tween.From&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;0&amp;quot;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&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; &lt;span style="color: red"&gt;Tweener&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Tween.To&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;186&amp;quot;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&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; &lt;span style="color: red"&gt;Tweener&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Tween.Fps&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;20&amp;quot;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&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; &lt;span style="color: red"&gt;Tweener&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Tween.TransitionType&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;EaseInOutBounce&amp;quot;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&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; &lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Storyboard&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;And once we run our app we can see the ball falls down, bounces up a bit and falls back down. &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Pro:&lt;/p&gt;    &lt;ol&gt;     &lt;li&gt;Tweening is a well established concept in the designer audience and a very productive way of creating complex animations quickly. &lt;/li&gt;   &lt;/ol&gt;    &lt;p&gt;Con:&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;No blend support. &lt;/li&gt;   &lt;/ul&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Clipboard support&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;At times you might want to have Silverlight access directly into your clipboard. Which isn’t natively supported in Silverlight. &lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;StackPanel&lt;/span&gt;&lt;span style="color: red"&gt; x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;LayoutRoot&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Background&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;White&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBox&lt;/span&gt;&lt;span style="color: red"&gt; x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;tbx&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Button&lt;/span&gt;&lt;span style="color: red"&gt; Click&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Copy_Click&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Content&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Copy TextBox to clipboard&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Button&lt;/span&gt;&lt;span style="color: red"&gt; Click&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Paste_Click&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;Content&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Paste clipboard to TextBox&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Button&lt;/span&gt;&lt;span style="color: red"&gt; Click&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Clear_Click&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;Content&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Clear clipboard&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;StackPanel&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Here’s how this page looks like when we run it.&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_77848CDA.png"&gt;&lt;img title="image" style="display: inline" height="257" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_0888BABE.png" width="401" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;We’d like the copy button to copy the Text from the TextBox to the clipboard.&lt;/p&gt;    &lt;p&gt;First, we’ll create a property that will use lazy initialization to Initialize a ClipboardHelper class. &lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ClipboardHelper&lt;/span&gt; _clipboard = &lt;span style="color: blue"&gt;null&lt;/span&gt;;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;ClipboardHelper&lt;/span&gt; Clipboard&lt;/p&gt;      &lt;p style="margin: 0px"&gt;{&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;get&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;try&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (_clipboard == &lt;span style="color: blue"&gt;null&lt;/span&gt;)&lt;/p&gt;      &lt;p style="margin: 0px"&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; _clipboard = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ClipboardHelper&lt;/span&gt;();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;catch&lt;/span&gt; (&lt;span style="color: #2b91af"&gt;InvalidOperationException&lt;/span&gt;)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;MessageBox&lt;/span&gt;.Show(&lt;span style="color: #a31515"&gt;&amp;quot;Current browser isn't supported for clip board opearations.&amp;quot;&lt;/span&gt;);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; _clipboard;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;}&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;This class has resource implications and browser support implications, so it’s best to cache it once initialized. &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Now, once the Copy button is clicked we’d like to copy the contents of the TextBox into the Clipboard.&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Copy_Click(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;RoutedEventArgs&lt;/span&gt; e)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (Clipboard != &lt;span style="color: blue"&gt;null&lt;/span&gt;)&lt;/p&gt;      &lt;p style="margin: 0px"&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; Clipboard.SetData(tbx.Text);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;Let’s run this application and put some text into the TextBox:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_477A3B59.png"&gt;&lt;img title="image" style="display: inline" height="316" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_066BBBF5.png" width="387" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Once we click the button the user will be prompted to allow the browser app to access the clipboard:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_455D3C90.png"&gt;&lt;img title="image" style="display: inline" height="161" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_2B890661.png" width="378" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;The user must click “Allow Access”. &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Now let’s paste this outside our browser:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_11B4D032.png"&gt;&lt;img title="image" style="display: inline" height="278" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_7B7EB4DF.png" width="581" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;So we can use the Clipboard helper from SIlverlight contrib to cross through browsers boundaries. &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Now, let’s implement all buttons. &lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Copy_Click(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;RoutedEventArgs&lt;/span&gt; e)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (Clipboard != &lt;span style="color: blue"&gt;null&lt;/span&gt;)&lt;/p&gt;      &lt;p style="margin: 0px"&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; Clipboard.SetData(tbx.Text);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;       &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Paste_Click(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;RoutedEventArgs&lt;/span&gt; e)&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (Clipboard != &lt;span style="color: blue"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; !&lt;span style="color: blue"&gt;string&lt;/span&gt;.IsNullOrEmpty(Clipboard.GetData()))&lt;/p&gt;        &lt;p style="margin: 0px"&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; tbx.Text = Clipboard.GetData();&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;     &lt;/div&gt;      &lt;p style="margin: 0px"&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Clear_Click(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;RoutedEventArgs&lt;/span&gt; e)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (Clipboard != &lt;span style="color: blue"&gt;null&lt;/span&gt;)&lt;/p&gt;      &lt;p style="margin: 0px"&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; Clipboard.ClearData();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;And once we run our application we see that we can copy information from outside the browser inside our Silverlight Application.&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_613E4BBB.png"&gt;&lt;img title="image" style="display: inline" height="299" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_5D044E29.png" width="678" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_3BA4A88D.png"&gt;&lt;img title="image" style="display: inline" height="262" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_28837BE1.png" width="500" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;And we can clear the clipboard and paste again to see it’s been emptied out. &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_0070CCC2.png"&gt;&lt;img title="image" style="display: inline" height="220" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_585E1DA2.png" width="438" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Pros:&lt;/p&gt;    &lt;ol&gt;     &lt;li&gt;Clipboard support is something that can make or break certain apps. &lt;/li&gt;      &lt;li&gt;This is an excellent API for something that is basically a huge managed wrapper around Javascript. Having a Dispose method on the ClipboardHelper shows the Contrib team really did a good job here. &lt;/li&gt;      &lt;li&gt;This could enable a range of scenarios (copying whole files from outside the browser?) &lt;/li&gt;   &lt;/ol&gt;    &lt;p&gt;Con:&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;The current implementation is not supported in FireFox. &lt;/li&gt;   &lt;/ul&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_5E38C13B.png"&gt;&lt;img title="image" style="display: inline" height="383" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_07CC8C6F.png" width="637" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&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;    &lt;p&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;&lt;/p&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;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Sum up&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;The Silverlight Contrib is a top notch open source project with some excellent controls, utilities and helpers you should definitely take a look at. &lt;/p&gt;    &lt;p&gt;Go get it at &lt;a href="http://codeplex.com/SilverlightContrib"&gt;http://codeplex.com/SilverlightContrib&lt;/a&gt;.&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;-- Justin Angel&amp;#160; &lt;/p&gt;    &lt;p&gt;Microsoft Silverlight Toolkit Program Manager &lt;/p&gt; &lt;/div&gt;&lt;img src="http://blogs.silverlight.net/aggbug.aspx?PostID=154214" width="1" height="1"&gt;</description><category domain="http://blogs.silverlight.net/blogs/justinangel/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.silverlight.net/blogs/justinangel/archive/tags/Open+source+projects/default.aspx">Open source projects</category><evnet:views>1031</evnet:views><evnet:viewtrackingurl>http://blogs.silverlight.net/aggbug.aspx?PostID=154214</evnet:viewtrackingurl></item><item><title>Silverlight DLLs on the desktop CLR</title><link>http://blogs.silverlight.net/blogs/justinangel/archive/2008/12/29/using-silverlight-dlls-on-the-desktop.aspx</link><pubDate>Tue, 30 Dec 2008 04:34:44 GMT</pubDate><guid isPermaLink="false">d0d632c8-a6f7-4f68-b0ce-26aaafd62132:153781</guid><dc:creator>JustinAngel</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.silverlight.net/blogs/justinangel/rsscomments.aspx?PostID=153781</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.silverlight.net/blogs/justinangel/commentapi.aspx?PostID=153781</wfw:comment><comments>http://blogs.silverlight.net/blogs/justinangel/archive/2008/12/29/using-silverlight-dlls-on-the-desktop.aspx#comments</comments><description>&lt;div style="font-family: arial"&gt;   &lt;p&gt;I’m a dinosaur and it’s possible I’m the only who didn’t know this – But you can use Silverlight DLLs on the full .Net desktop CLR.&lt;/p&gt;    &lt;p&gt;See, I’ve been working with Silverlight since Mix07 (March 2007) when we were all excited about Silverlight 1.0 and Silverlight 1.1.&amp;#160; &lt;br /&gt;First I was working as a senior .Net consultant on a variety of projects, and for the last 6 months I’ve been working on the Silverlight Toolkit for &lt;strike&gt;the evil empire&lt;/strike&gt; Microsoft.&amp;#160; &lt;/p&gt;    &lt;p&gt;So believe me when I say – I’m an aging dinosaur to miss something this big. In Silverlight 2.0 you can share DLLs between the desktop and the Silverlight CLR.      &lt;br /&gt;I know for sure it wasn’t possible in Silverlight 1.1, and just assumed it wasn’t possible in Silverlight 2. &lt;/p&gt;    &lt;p&gt;From all the articles I’ve read in the last few months, It seems I’m not the only one who doesn’t know this:      &lt;br /&gt;&lt;a title="http://pagebrooks.com/archive/2008/10/11/sharing-code-between-.net-and-silverlight-platforms.aspx" href="http://pagebrooks.com/archive/2008/10/11/sharing-code-between-.net-and-silverlight-platforms.aspx"&gt;http://pagebrooks.com/archive/2008/10/11/sharing-code-between-.net-and-silverlight-platforms.aspx&lt;/a&gt;       &lt;br /&gt;&lt;a title="http://petesbloggerama.blogspot.com/2008/12/referencing-non-silverlight-assembly-in.html" href="http://petesbloggerama.blogspot.com/2008/12/referencing-non-silverlight-assembly-in.html"&gt;http://petesbloggerama.blogspot.com/2008/12/referencing-non-silverlight-assembly-in.html&lt;/a&gt;       &lt;br /&gt;&lt;a title="http://stackoverflow.com/questions/208123/what-is-the-best-practice-for-compiling-silverlight-and-wpf-in-one-project" href="http://stackoverflow.com/questions/208123/what-is-the-best-practice-for-compiling-silverlight-and-wpf-in-one-project"&gt;http://stackoverflow.com/questions/208123/what-is-the-best-practice-for-compiling-silverlight-and-wpf-in-one-project&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;All of these fairly recent articles say the same – You need to use the “Add as link” hackery to share source between Silverlight CLR and the full .Net CLR. &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_4BDBD69B.png"&gt;&lt;img title="image" style="display: inline" height="118" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_11EC93AF.png" width="172" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;Well, Apparently that’s not true. &lt;strong&gt;You can add a reference from a full .Net CLR to a Silverlight assembly.&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Let’s see how to do that: &lt;/p&gt;    &lt;p&gt;1. Let’s start a new Silverlight Application:      &lt;br /&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_3F6DB372.png"&gt;&lt;img title="image" style="display: inline" height="434" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_1AAC762E.png" width="809" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;Here’s the Solution we got: &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_5931C3D4.png"&gt;&lt;img title="image" style="display: inline" height="358" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_3C489EFF.png" width="284" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;2. Let’s add a Silverlight Class Library to hold our Business logic. &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_49427F10.png"&gt;&lt;img title="image" style="display: inline" height="377" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_24ED74C1.png" width="807" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;Here’s our solution now:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_55A07C6C.png"&gt;&lt;img title="image" style="display: inline" height="422" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_29837F7B.png" width="282" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;3. Let’s add a class with some business logic.&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Person&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;{&lt;/p&gt;      &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;       &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; _firstName;&lt;/p&gt;     &lt;/div&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; FirstName&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;get&lt;/span&gt; { &lt;span style="color: blue"&gt;return&lt;/span&gt; _firstName; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;set&lt;/span&gt; { _firstName = UpperCaseFirstLetter(&lt;span style="color: blue"&gt;value&lt;/span&gt;); }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; _lastName;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; LastName&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;get&lt;/span&gt; { &lt;span style="color: blue"&gt;return&lt;/span&gt; _lastName; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;set&lt;/span&gt; { _lastName = UpperCaseFirstLetter(&lt;span style="color: blue"&gt;value&lt;/span&gt;); }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; UpperCaseFirstLetter(&lt;span style="color: blue"&gt;string&lt;/span&gt; str)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (&lt;span style="color: blue"&gt;string&lt;/span&gt;.IsNullOrEmpty(str) || str.Length == 0)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; str;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; str[0].ToString().ToUpper() + str.Substring(1, str.Length - 1);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; FullName&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;get&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt;.Format(&lt;span style="color: #a31515"&gt;&amp;quot;{0} {1}&amp;quot;&lt;/span&gt;, FirstName, LastName);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;}&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;This class has 3 interesting things in it: &lt;/p&gt;    &lt;ol&gt;     &lt;li&gt;It has 2 properties called “FirstName” and “LastName” that have a backing field. &lt;/li&gt;      &lt;li&gt;When setting the First and last name, we store these with the first character as uppercase. &lt;strong&gt;Property setter business logic.&lt;/strong&gt; &lt;/li&gt;      &lt;li&gt;We have a property that combines that value of the first two properties. &lt;strong&gt;Pure business logic.&lt;/strong&gt; &lt;/li&gt;   &lt;/ol&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;4. We’ll add a new WPF project that runs of the desktop .Net CLR. (We could have used the ASP.Net project already in the solution, but I’d like to demo WPF) &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_4F792FD1.png"&gt;&lt;img title="image" style="display: inline" height="375" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_2398B615.png" width="806" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;5. Now, &lt;strong&gt;we’ll add a reference from the WPF project to the Silverlight Class Library&lt;/strong&gt;. &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_3430B103.png"&gt;&lt;img title="image" style="display: inline" height="334" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_00F4779A.png" width="440" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_71DD98BF.png"&gt;&lt;img title="image" style="display: inline" height="406" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_50EA2618.png" width="483" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_44E835E4.png"&gt;&lt;img title="image" style="display: inline" height="525" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_0BA1A922.png" width="234" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Using the Business logic in the Silverlight application&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;First, I’ll add a reference from the Silverlight Application to the Silverlight Class Library.&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_4A9329BD.png"&gt;&lt;img title="image" style="display: inline" height="123" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_5EAC4646.png" width="495" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;Next, I’ll add a reference to the Silverlight Toolkit (&lt;a href="http://codeplex.com/Silverlight"&gt;http://codeplex.com/Silverlight&lt;/a&gt;) mainly because we need the WrapPanel. &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_2FE68DA4.png"&gt;&lt;img title="image" style="display: inline" height="407" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_7CAA543A.png" width="488" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;Next, we’ll add this little form to our default page:&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;       &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Border&lt;/span&gt;&lt;span style="color: red"&gt; x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;LayoutRoot&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Background&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;White&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Margin&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;20&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; CornerRadius&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;5&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; BorderBrush&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;LightGray&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; BorderThickness&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;1&amp;quot; &amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;WrapPanel&lt;/span&gt;&lt;span style="color: red"&gt; Width&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;150&amp;quot;&lt;/span&gt; &lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBlock&lt;/span&gt;&lt;span style="color: red"&gt; Width&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;75&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Text&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;First Name:&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBox&lt;/span&gt;&lt;span style="color: red"&gt; Width&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;75&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Text&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color: #a31515"&gt;Binding&lt;/span&gt;&lt;span style="color: red"&gt; FirstName&lt;/span&gt;&lt;span style="color: blue"&gt;,&lt;/span&gt;&lt;span style="color: red"&gt; Mode&lt;/span&gt;&lt;span style="color: blue"&gt;=TwoWay}&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; TabIndex&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;1&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBlock&lt;/span&gt;&lt;span style="color: red"&gt; Width&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;75&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Text&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Last Name:&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBox&lt;/span&gt;&lt;span style="color: red"&gt; Width&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;75&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Text&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color: #a31515"&gt;Binding&lt;/span&gt;&lt;span style="color: red"&gt; LastName&lt;/span&gt;&lt;span style="color: blue"&gt;,&lt;/span&gt;&lt;span style="color: red"&gt; Mode&lt;/span&gt;&lt;span style="color: blue"&gt;=TwoWay}&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; TabIndex&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;2&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBlock&lt;/span&gt;&lt;span style="color: red"&gt; Width&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;75&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Text&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Full Name:&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBox&lt;/span&gt;&lt;span style="color: red"&gt; Width&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;75&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;txtFullName&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; IsReadOnly&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;True&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; InputMethod.IsInputMethodEnabled&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;False&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Button&lt;/span&gt;&lt;span style="color: red"&gt; Content&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Update full name&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Click&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Button_Click&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;WrapPanel&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Border&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;     &lt;/div&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;This might look lie a lot, but it’s really not.      &lt;br /&gt;It’ just the following form: &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_347C985E.png"&gt;&lt;img title="image" style="display: inline" height="255" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_4176786F.png" width="444" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;It’s only 3 textblocks, 2 editable textboxes, 1 readonly TextBox and a button. &lt;/p&gt;    &lt;p&gt;Now let’s add some code to our code behind:&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; BL;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;namespace&lt;/span&gt; SilverlightApp&lt;/p&gt;      &lt;p style="margin: 0px"&gt;{&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;partial&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Page&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;UserControl&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; Page()&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; InitializeComponent();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;this&lt;/span&gt;.Loaded += &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;RoutedEventHandler&lt;/span&gt;(Page_Loaded);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;void&lt;/span&gt; Page_Loaded(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;RoutedEventArgs&lt;/span&gt; e)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;this&lt;/span&gt;.DataContext = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Person&lt;/span&gt;();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Button_Click(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;RoutedEventArgs&lt;/span&gt; e)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; txtFullName.Text = ((&lt;span style="color: #2b91af"&gt;Person&lt;/span&gt;) &lt;span style="color: blue"&gt;this&lt;/span&gt;.DataContext).FullName;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;}&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;Basically, we set the DataContext for the whole form to a Person class and once the button is clicked we manually update the txtFullName.      &lt;br /&gt;We could have used Dependency Properties to update this for us, but I’d rather keep this demo simple :)&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;If we run our application we’ll see the following form:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_397ED60D.png"&gt;&lt;img title="image" style="display: inline" height="264" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_38A67023.png" width="428" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;We’ll put a very sexy and rugged first name and last name. &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_09E0B781.png"&gt;&lt;img title="image" style="display: inline" height="273" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_4FF17494.png" width="411" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;Next we’ll click the Update button:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_6814DEEF.png"&gt;&lt;img title="image" style="display: inline" height="259" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_2E259C03.png" width="395" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;Well, that’s pretty straight forward Silverlight. (And if we added Dependency Properties it would have been much better, but this isn’t a Silverlight demo)&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Using the Silverlight Class Library / Business Logic in the WPF application&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;We’ll create a similar yet not identical version of the form in WPF: &lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Window&lt;/span&gt;&lt;span style="color: red"&gt; x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Class&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;WPFApp.Window1&amp;quot;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160; &lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160; &lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160; &lt;span style="color: red"&gt;Title&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Window1&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Height&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;300&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Width&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;300&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;WrapPanel&lt;/span&gt;&lt;span style="color: red"&gt; Width&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;150&amp;quot;&lt;/span&gt; &lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBlock&lt;/span&gt;&lt;span style="color: red"&gt; Width&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;75&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Text&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;First Name:&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBox&lt;/span&gt;&lt;span style="color: red"&gt; Width&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;75&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Text&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color: #a31515"&gt;Binding&lt;/span&gt;&lt;span style="color: red"&gt; FirstName&lt;/span&gt;&lt;span style="color: blue"&gt;}&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; TabIndex&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;1&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBlock&lt;/span&gt;&lt;span style="color: red"&gt; Width&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;75&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Text&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Last Name:&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBox&lt;/span&gt;&lt;span style="color: red"&gt; Width&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;75&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Text&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color: #a31515"&gt;Binding&lt;/span&gt;&lt;span style="color: red"&gt; LastName&lt;/span&gt;&lt;span style="color: blue"&gt;}&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; TabIndex&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;2&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBlock&lt;/span&gt;&lt;span style="color: red"&gt; Width&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;75&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Text&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Full Name:&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBox&lt;/span&gt;&lt;span style="color: red"&gt; Width&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;75&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;txtFullName&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; IsReadOnly&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;True&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; InputMethod.IsInputMethodEnabled&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;False&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Button&lt;/span&gt;&lt;span style="color: red"&gt; Content&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Update Full Name&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Click&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Button_Click&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;WrapPanel&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Window&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;And here’s the pretty almost identical code behind:&lt;/p&gt;    &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; BL;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;namespace&lt;/span&gt; WPFApp&lt;/p&gt;      &lt;p style="margin: 0px"&gt;{&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;partial&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Window1&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;Window&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; Window1()&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; InitializeComponent();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;this&lt;/span&gt;.Loaded += &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;RoutedEventHandler&lt;/span&gt;(Window1_Loaded);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;void&lt;/span&gt; Window1_Loaded(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;RoutedEventArgs&lt;/span&gt; e)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;this&lt;/span&gt;.DataContext = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Person&lt;/span&gt;();&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Button_Click(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;RoutedEventArgs&lt;/span&gt; e)&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; txtFullName.Text = ((&lt;span style="color: #2b91af"&gt;Person&lt;/span&gt;) &lt;span style="color: blue"&gt;this&lt;/span&gt;.DataContext).FullName;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;      &lt;p style="margin: 0px"&gt;}&lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;Let’s run this app.&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_5F44D6A3.png"&gt;&lt;img title="image" style="display: inline" height="155" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_658BAD31.png" width="193" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;We’ll put in the ruggedly manly name we used before. &lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_52D6B37A.png"&gt;&lt;img title="image" style="display: inline" height="148" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_1234670B.png" width="196" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;Click the update button.&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_51921A9B.png"&gt;&lt;img title="image" style="display: inline" height="148" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_42E76EB6.png" width="188" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;And yep, the same result – the Silverlight code runs on both the desktop CLR and the SIlverlight CLR. &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;One picture is worth an entire blog post &lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_57008B3F.png"&gt;&lt;img title="image" style="display: inline" height="405" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_0A2C9EDC.png" width="806" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;How does this even work?&lt;/strong&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;The System.String from Silverlight is a completely different System.String from the desktop .Net. So how does this even work? I’m still looking into this, but before I got the results of my research I thought it’s definitely worth sharing. &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;This has limitations, probably a lot&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;Using the full abilities of the Silverlight runtime is obviously not possible from our Silverlight class library when it runs on the desktop. There’s no Application.Current, no dispatcher and a host of other things are missing. This limit us to really sharing only business logic in this method, not UI.      &lt;br /&gt;For one, I’m not sure it’s not a good thing that we’re being forced to keep best practices of layer separation. &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Source code available at: &lt;a title="http://silverlight.net/blogs/justinangel/BlogStorage/SharingCode.zip" href="http://silverlight.net/blogs/justinangel/BlogStorage/SharingCode.zip"&gt;http://silverlight.net/blogs/justinangel/BlogStorage/SharingCode.zip&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&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;    &lt;p&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;&lt;/p&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;    &lt;p&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;&lt;/p&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;    &lt;p&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;&lt;/p&gt;    &lt;p&gt;-- Justin Angel&lt;/p&gt;    &lt;p&gt;Microsoft Silverlight Toolkit Program Manager&lt;/p&gt; &lt;/div&gt;&lt;img src="http://blogs.silverlight.net/aggbug.aspx?PostID=153781" width="1" height="1"&gt;</description><category domain="http://blogs.silverlight.net/blogs/justinangel/archive/tags/Silverlight/default.aspx">Silverlight</category><evnet:views>954</evnet:views><evnet:viewtrackingurl>http://blogs.silverlight.net/aggbug.aspx?PostID=153781</evnet:viewtrackingurl></item><item><title>Custom VSM VisualStateManagers in Silverlight 2.0</title><link>http://blogs.silverlight.net/blogs/justinangel/archive/2008/12/25/custom-vsm-visualstatemanagers-in-silverlight-2-0.aspx</link><pubDate>Fri, 26 Dec 2008 02:27:49 GMT</pubDate><guid isPermaLink="false">d0d632c8-a6f7-4f68-b0ce-26aaafd62132:152610</guid><dc:creator>JustinAngel</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.silverlight.net/blogs/justinangel/rsscomments.aspx?PostID=152610</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.silverlight.net/blogs/justinangel/commentapi.aspx?PostID=152610</wfw:comment><comments>http://blogs.silverlight.net/blogs/justinangel/archive/2008/12/25/custom-vsm-visualstatemanagers-in-silverlight-2-0.aspx#comments</comments><description>&lt;div&gt;&lt;font style="font-family: arial"&gt;     &lt;p&gt;Hi Folks&lt;/p&gt;      &lt;p&gt;&lt;font face="Arial"&gt;I’ve been getting some questions through the usual backchannels (&lt;a href="http://twitter.com/JustinAngel" target="_blank"&gt;Twitter&lt;/a&gt;, my &lt;a href="mailto:J@JustinAngel.Net"&gt;J@JustinAngel.Net&lt;/a&gt; email and mail pigeons) about creating custom VSM managers. &lt;/font&gt;&lt;/p&gt;      &lt;p&gt;&lt;font face="Arial"&gt;If you’re unfamiliar with VSM I strongly suggest you take 30 minutes and watch Steve White talking in his ‘ohhh-so-British' voice about it: &lt;/font&gt;&lt;/p&gt;      &lt;blockquote&gt;       &lt;p&gt;&lt;font face="Arial"&gt;Watch these 4 videos on the Blend 2.5 website which should provide you with deep technical insight into the inner workings of Templating Parts &amp;amp; VSM States from Blend: &lt;a href="http://expression.microsoft.com/en-ca/cc643423.aspx"&gt;http://expression.microsoft.com/en-ca/cc643423.aspx&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;     &lt;/blockquote&gt;      &lt;p&gt;&lt;font face="Arial"&gt;Let’s try and conceptually sum up what VSM does:&lt;/font&gt;&lt;/p&gt;      &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_629F455E.png"&gt;&lt;img title="image" style="display: inline" height="518" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_68D5F61F.png" width="624" border="0" /&gt;&lt;/a&gt;&amp;#160;&lt;font face="Arial"&gt;&lt;/font&gt;&lt;/p&gt;      &lt;p&gt;Well, we could have just said this instead: &lt;/p&gt;      &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_1E8B3B7A.png"&gt;&lt;img title="image" style="display: inline" height="496" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_43986019.png" width="576" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;      &lt;p&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;Point is – the &lt;strong&gt;VisualStateManager class is the driving force behind the actual change between states. &lt;/strong&gt;&lt;/p&gt;      &lt;p&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;Let’s see how that comes into play. &lt;/p&gt;      &lt;p&gt;Here are all the states for a Button: (snapshot from Blend)&lt;/p&gt;      &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_11DD42C4.png"&gt;&lt;img title="image" style="display: inline" height="315" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_4A1BB9DC.png" width="258" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;      &lt;p&gt;Let’s put a normal button on our form, run the app and see it’s MouseOver state:&lt;/p&gt;      &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;       &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Button&lt;/span&gt;&lt;span style="color: red"&gt; x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;myButton&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Content&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;myButton&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Width&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;100&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Height&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;100&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;     &lt;/div&gt;      &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_304783AD.png"&gt;&lt;img title="image" style="display: inline" height="130" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_28BC1440.png" width="126" border="0" /&gt;&lt;/a&gt; &lt;a href="http://silverlight.net/blogs/justinangel/image_3D4163BE.png"&gt;&lt;img title="image" style="display: inline" height="144" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_27E3AE56.png" width="161" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;      &lt;p&gt;We can see that once the mouse enters the button area, the MouseOver state is fired, a storyboard executes and everyone’s happy. &lt;/p&gt;      &lt;p&gt;But how executes the state change? VSM of course. &lt;/p&gt;      &lt;p&gt;Let’s see how we can “interfere” with the normal operations of VSM.&lt;/p&gt;      &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;       &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; SilverlightControl2536()&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; InitializeComponent();&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; myButton.MouseEnter += &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;MouseEventHandler&lt;/span&gt;(myButton_MouseEnter);&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; myButton_MouseEnter(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;MouseEventArgs&lt;/span&gt; e)&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;VisualStateManager&lt;/span&gt;.GoToState(myButton, &lt;span style="color: #a31515"&gt;&amp;quot;Disabled&amp;quot;&lt;/span&gt;, &lt;span style="color: blue"&gt;true&lt;/span&gt;);&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;     &lt;/div&gt;      &lt;p&gt;Over here I’ve registered to the MouseEnter event and told VSM that “On MouseEnter go to the Disabled State”. &lt;/p&gt;      &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_5564CE19.png"&gt;&lt;img title="image" style="display: inline" height="163" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_1BE1BE22.png" width="147" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;      &lt;p&gt;We can definitely see that mouseovering the button clearly puts it in Disabled state. &lt;/p&gt;      &lt;p&gt;And we caused this little change through talking directly to the VSM static class.        &lt;br /&gt;I’ll just point out that the button isn’t really disabled and is still clickable. All we did here is cause a VSM state change, which caused a storyboard to begin, which changed the Visual UI of the button. &lt;/p&gt;      &lt;p&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;As for demos – the disabled button one was short, to the point and utterly useless. Let’s get our hands dirty with some custom VSM goodness. &lt;/p&gt;      &lt;p&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;&lt;strong&gt;Writing a Custom VisualStateManager – Getting the current states&lt;/strong&gt;&lt;/p&gt;      &lt;p&gt;We just demonstrated and explained that the VisualStateManager is an actual class which drives state management at the control level.        &lt;br /&gt;We can also create our own VisualStateManager that has additional functionality and logic in that stage.&lt;/p&gt;      &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;       &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;CustomVisualStateManager&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;VisualStateManager&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;{&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;protected&lt;/span&gt; &lt;span style="color: blue"&gt;override&lt;/span&gt; &lt;span style="color: blue"&gt;bool&lt;/span&gt; GoToStateCore(&lt;span style="color: #2b91af"&gt;Control&lt;/span&gt; control, &lt;span style="color: #2b91af"&gt;FrameworkElement&lt;/span&gt; templateRoot, &lt;span style="color: blue"&gt;string&lt;/span&gt; stateName, &lt;span style="color: #2b91af"&gt;VisualStateGroup&lt;/span&gt; group, &lt;span style="color: #2b91af"&gt;VisualState&lt;/span&gt; state, &lt;span style="color: blue"&gt;bool&lt;/span&gt; useTransitions)&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;        &lt;p style="margin: 0px"&gt;this.&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: blue"&gt;base&lt;/span&gt;.GoToStateCore(control, templateRoot, stateName, group, state, useTransitions);&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;        &lt;p style="margin: 0px"&gt;}&lt;/p&gt;     &lt;/div&gt;      &lt;p&gt;This basic class doesn’t do a lot. We inherit from VisualStateManager and override the only method we can – GoToStateCore. &lt;/p&gt;      &lt;p&gt;We can see that we get some important data:&lt;/p&gt;      &lt;ol&gt;       &lt;li&gt;What control is changing it’s state &lt;/li&gt;        &lt;li&gt;What’s it’s root template element &lt;/li&gt;        &lt;li&gt;What group are we changing state to &lt;/li&gt;        &lt;li&gt;What state are we changing state to &lt;/li&gt;        &lt;li&gt;And should we use Transitions &lt;/li&gt;     &lt;/ol&gt;      &lt;p&gt;Now, if we were the original VisualStateManager class this is the place to actually do state changes, fire storyboards, raise events and what not.        &lt;br /&gt;Luckily, we’re not. So we’ll call the base method and that would take care of actually running states. Which leaves us as free to do whatever we want. &lt;/p&gt;      &lt;p&gt;And here’s what we want – We want to be able to query the VisualStateManager and get a string the represents the control’s current state in each state group. &lt;/p&gt;      &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;       &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;QueryableVisualStateManager&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;VisualStateManager&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;{&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;protected&lt;/span&gt; &lt;span style="color: blue"&gt;override&lt;/span&gt; &lt;span style="color: blue"&gt;bool&lt;/span&gt; GoToStateCore(&lt;span style="color: #2b91af"&gt;Control&lt;/span&gt; control, &lt;span style="color: #2b91af"&gt;FrameworkElement&lt;/span&gt; templateRoot, &lt;span style="color: blue"&gt;string&lt;/span&gt; stateName, &lt;span style="color: #2b91af"&gt;VisualStateGroup&lt;/span&gt; group, &lt;span style="color: #2b91af"&gt;VisualState&lt;/span&gt; state, &lt;span style="color: blue"&gt;bool&lt;/span&gt; useTransitions)&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: blue"&gt;base&lt;/span&gt;.GoToStateCore(control, templateRoot, stateName, group, state, useTransitions);&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; QueryState(&lt;span style="color: #2b91af"&gt;Control&lt;/span&gt; controlToFindItsState)&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;        &lt;p style="margin: 0px"&gt;}&lt;/p&gt;     &lt;/div&gt;      &lt;p&gt;Now, at this point we’ll add a lot of plumbing to store the last fired states in each group for each control. &lt;/p&gt;      &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;       &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;QueryableVisualStateManager&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;VisualStateManager&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;{&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; Dictionary of controls --&amp;gt; Dictionary of group names and state names&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Dictionary&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;WeakReference&lt;/span&gt;, &lt;span style="color: #2b91af"&gt;KeyValuePair&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;, &lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt;&amp;gt; controlStates =&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Dictionary&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;WeakReference&lt;/span&gt;, &lt;span style="color: #2b91af"&gt;KeyValuePair&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;, &lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt;&amp;gt;();&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;protected&lt;/span&gt; &lt;span style="color: blue"&gt;override&lt;/span&gt; &lt;span style="color: blue"&gt;bool&lt;/span&gt; GoToStateCore(&lt;span style="color: #2b91af"&gt;Control&lt;/span&gt; control, &lt;span style="color: #2b91af"&gt;FrameworkElement&lt;/span&gt; templateRoot, &lt;span style="color: blue"&gt;string&lt;/span&gt; stateName, &lt;span style="color: #2b91af"&gt;VisualStateGroup&lt;/span&gt; group, &lt;span style="color: #2b91af"&gt;VisualState&lt;/span&gt; state, &lt;span style="color: blue"&gt;bool&lt;/span&gt; useTransitions)&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;bool&lt;/span&gt; ReturnValue = &lt;span style="color: blue"&gt;base&lt;/span&gt;.GoToStateCore(control, templateRoot, stateName, group, state, useTransitions);&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (ReturnValue)&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;var&lt;/span&gt; existingPair = controlStates.SingleOrDefault(pair =&amp;gt; pair.Key.IsAlive &lt;/p&gt;        &lt;p style="margin: 0px"&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;&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;amp;&amp;amp; pair.Key.Target == control&lt;/p&gt;        &lt;p style="margin: 0px"&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;&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;amp;&amp;amp; pair.Value.Key == group.Name);&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (existingPair.Key != &lt;span style="color: blue"&gt;null&lt;/span&gt;)&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;        &lt;p style="margin: 0px"&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; controlStates.Remove(existingPair.Key);&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; controlStates.Add(&lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;WeakReference&lt;/span&gt;(control), &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;KeyValuePair&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;, &lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt;(group.Name, stateName));&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; ReturnValue;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; QueryState(&lt;span style="color: #2b91af"&gt;Control&lt;/span&gt; controlToFindItsState)&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;var&lt;/span&gt; existingValues = controlStates.Where(pair =&amp;gt; pair.Key.IsAlive&lt;/p&gt;        &lt;p style="margin: 0px"&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;&amp;#160; &amp;amp;&amp;amp; pair.Key.Target == controlToFindItsState);&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;string&lt;/span&gt; ReturnValue = &lt;span style="color: blue"&gt;string&lt;/span&gt;.Empty;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;foreach&lt;/span&gt; (&lt;span style="color: blue"&gt;var&lt;/span&gt; existingValue &lt;span style="color: blue"&gt;in&lt;/span&gt; existingValues)&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ReturnValue += existingValue.Value.Key + &lt;span style="color: #a31515"&gt;&amp;quot;.&amp;quot;&lt;/span&gt; + existingValue.Value.Value + &lt;span style="color: #a31515"&gt;&amp;quot; &amp;quot;&lt;/span&gt;;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; ReturnValue;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;        &lt;p style="margin: 0px"&gt;}&lt;/p&gt;     &lt;/div&gt;      &lt;p&gt;This code really isn’t interesting. All it does is store controls, state groups and last fired states in that state group. Than, it queries against that data and returns the current state in a string form. &lt;/p&gt;      &lt;p&gt;There’s really nothing interesting about the implementation, just the fact that we’re getting some data, we’re storing it and later on query it. &lt;/p&gt;      &lt;p&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;Next, we’ll want to use this custom Visual State Manager with the Button, CheckBox and Expander control. &lt;/p&gt;      &lt;p&gt;So, we’ll start by putting these on our form: &lt;/p&gt;      &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;       &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;StackPanel&lt;/span&gt;&lt;span style="color: red"&gt; x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;LayoutRoot&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Background&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;White&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Button&lt;/span&gt;&lt;span style="color: red"&gt; x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;myButton&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;CheckBox&lt;/span&gt;&lt;span style="color: red"&gt; x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;myCheckBox&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;Expander&lt;/span&gt;&lt;span style="color: red"&gt; x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;myExpander&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;StackPanel&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;     &lt;/div&gt;      &lt;p&gt;In order to change the VSM manager, we need to edit the template for each of these controls. &lt;/p&gt;      &lt;p&gt;We’ll open up Blend on this form. &lt;/p&gt;      &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_34715B72.png"&gt;&lt;img title="image" style="display: inline" height="493" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_57057420.png" width="805" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;      &lt;p&gt;We’ll right click on each of the controls –&amp;gt; “Edit Control Parts (Template)” –&amp;gt; Edit Copy –&amp;gt; Ok. &lt;/p&gt;      &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_00993F54.png"&gt;&lt;img title="image" style="display: inline" height="498" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_155B1207.png" width="422" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;      &lt;p&gt;After getting local copies of the templates for all the controls, we’ll need to set the VisualStateManager.CustomVisualStateManager Attached property in their templates:&lt;/p&gt;      &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;       &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;vsm&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;VisualStateManager.CustomVisualStateManager&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SL_RTM_VS&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;QueryableVisualStateManager&lt;/span&gt;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;vsm&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;VisualStateManager.CustomVisualStateManager&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;     &lt;/div&gt;      &lt;p&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_49230858.png"&gt;&lt;img title="image" style="display: inline" height="238" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_65041783.png" width="693" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;      &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_2B14D497.png"&gt;&lt;img title="image" style="display: inline" height="227" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_26DAD705.png" width="705" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;      &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_70F5E1EA.png"&gt;&lt;img title="image" style="display: inline" height="235" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_6CBBE458.png" width="793" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;      &lt;p&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;Here’s a method that uses the static method we defined on our custom visual state manager and updates their content:&lt;/p&gt;      &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;       &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; updateContentFromVSM(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;EventArgs&lt;/span&gt; e)&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; myButton.Content = &lt;span style="color: #2b91af"&gt;QueryableVisualStateManager&lt;/span&gt;.QueryState(myButton);&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; myCheckBox.Content = &lt;span style="color: #2b91af"&gt;QueryableVisualStateManager&lt;/span&gt;.QueryState(myCheckBox);&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; myExpander.Header = &lt;span style="color: #2b91af"&gt;QueryableVisualStateManager&lt;/span&gt;.QueryState(myExpander);&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;     &lt;/div&gt;      &lt;p&gt;Let’s sign this method up for some events that may cause visual state changes: &lt;/p&gt;      &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;       &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; SilverlightControl2536()&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; InitializeComponent();&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; myButton.MouseEnter += &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;MouseEventHandler&lt;/span&gt;(updateContentFromVSM);&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; myButton.MouseLeave += &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;MouseEventHandler&lt;/span&gt;(updateContentFromVSM);&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; myButton.MouseLeftButtonDown += &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;MouseButtonEventHandler&lt;/span&gt;(updateContentFromVSM);&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; myButton.MouseLeftButtonUp += &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;MouseButtonEventHandler&lt;/span&gt;(updateContentFromVSM);&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; myCheckBox.MouseEnter += &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;MouseEventHandler&lt;/span&gt;(updateContentFromVSM);&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; myCheckBox.MouseLeave += &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;MouseEventHandler&lt;/span&gt;(updateContentFromVSM);&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; myCheckBox.MouseLeftButtonDown += &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;MouseButtonEventHandler&lt;/span&gt;(updateContentFromVSM);&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; myCheckBox.MouseLeftButtonUp += &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;MouseButtonEventHandler&lt;/span&gt;(updateContentFromVSM);&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; myCheckBox.Checked += &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;RoutedEventHandler&lt;/span&gt;(updateContentFromVSM);&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; myCheckBox.Unchecked += &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;RoutedEventHandler&lt;/span&gt;(updateContentFromVSM);&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; myExpander.MouseEnter += &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;MouseEventHandler&lt;/span&gt;(updateContentFromVSM);&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; myExpander.MouseLeave += &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;MouseEventHandler&lt;/span&gt;(updateContentFromVSM);&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; myExpander.MouseLeftButtonDown += &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;MouseButtonEventHandler&lt;/span&gt;(updateContentFromVSM);&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; myExpander.MouseLeftButtonUp += &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;MouseButtonEventHandler&lt;/span&gt;(updateContentFromVSM);&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; myExpander.Expanded += &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;RoutedEventHandler&lt;/span&gt;(updateContentFromVSM);&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; myExpander.Collapsed += &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;RoutedEventHandler&lt;/span&gt;(updateContentFromVSM);&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;     &lt;/div&gt;      &lt;p&gt;Now, let’s run our app. &lt;/p&gt;      &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_397FAAEF.png"&gt;&lt;img title="image" style="display: inline" height="183" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_6F34F049.png" width="821" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;      &lt;p&gt;This is how the app looks like initially once we mouseover elements and cause them to fire their initial states. &lt;/p&gt;      &lt;p&gt;Now, What happens if we mouseover the Button?&lt;/p&gt;      &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_673D4DE7.png"&gt;&lt;img title="image" style="display: inline" height="175" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_0B15FF75.png" width="829" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;      &lt;p&gt;And Click it? &lt;/p&gt;      &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_77F4D2C8.png"&gt;&lt;img title="image" style="display: inline" height="182" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_268ADBAB.png" width="830" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;      &lt;p&gt;What happens if we mouse over the CheckBox? &lt;/p&gt;      &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_1369AEFF.png"&gt;&lt;img title="image" style="display: inline" height="184" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_08E8DADF.png" width="828" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;      &lt;p&gt;And click the CheckBox? &lt;/p&gt;      &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_60D62BBF.png"&gt;&lt;img title="image" style="display: inline" height="176" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_7266168A.png" width="812" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;      &lt;p&gt;And than Click the Expander?&lt;/p&gt;      &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_036A446E.png"&gt;&lt;img title="image" style="display: inline" height="200" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_11E54093.png" width="815" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;      &lt;p&gt;All and all, we can see that through a Custom VisualStateManager we can store the state changes and query them at a later phase. &lt;/p&gt;      &lt;p&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;One last change – &lt;strong&gt;Getting the initial state&lt;/strong&gt;&lt;/p&gt;      &lt;p&gt;Through some sleight of hand I was able to hide the fact that our form look like so when it first load up:&lt;/p&gt;      &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_30BBB471.png"&gt;&lt;img title="image" style="display: inline" height="169" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_0432848B.png" width="816" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;      &lt;p&gt;If we want to have the controls initialized with their states, we need to make sure the Visual Tree (which setups the custom VSM) is up and running.        &lt;br /&gt;In order to do that, we’ll register for a one-time call to LayoutUpdated on each control and initialize state there. &lt;/p&gt;      &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;       &lt;p style="margin: 0px"&gt;myButton.LayoutUpdated += &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;EventHandler&lt;/span&gt;(myButton_LayoutUpdated);&lt;/p&gt;     &lt;/div&gt;      &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;       &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;void&lt;/span&gt; myButton_LayoutUpdated(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;EventArgs&lt;/span&gt; e)&lt;/p&gt;        &lt;p style="margin: 0px"&gt;{&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; myButton.LayoutUpdated -= myButton_LayoutUpdated;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; myButton.Content = &lt;span style="color: #2b91af"&gt;QueryableVisualStateManager&lt;/span&gt;.QueryState(myButton);&lt;/p&gt;        &lt;p style="margin: 0px"&gt;}&lt;/p&gt;     &lt;/div&gt;      &lt;p&gt;And now in our UI we can see the following initial state:&lt;/p&gt;      &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_6E689C2D.png"&gt;&lt;img title="image" style="display: inline" height="168" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_0E36FFE9.png" width="777" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;      &lt;p&gt;Now, let’s add this initialization step for our two other controls:&lt;/p&gt;      &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;       &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; myButton.LayoutUpdated += &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;EventHandler&lt;/span&gt;(myButton_LayoutUpdated);&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; myCheckBox.LayoutUpdated += &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;EventHandler&lt;/span&gt;(myCheckBox_LayoutUpdated);&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; myExpander.LayoutUpdated += &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;EventHandler&lt;/span&gt;(myExpander_LayoutUpdated);&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;void&lt;/span&gt; myButton_LayoutUpdated(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;EventArgs&lt;/span&gt; e)&lt;/p&gt;        &lt;p style="margin: 0px"&gt;{&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; myButton.LayoutUpdated -= myButton_LayoutUpdated;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; myButton.Content = &lt;span style="color: #2b91af"&gt;QueryableVisualStateManager&lt;/span&gt;.QueryState(myButton);&lt;/p&gt;        &lt;p style="margin: 0px"&gt;}&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;void&lt;/span&gt; myCheckBox_LayoutUpdated(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;EventArgs&lt;/span&gt; e)&lt;/p&gt;        &lt;p style="margin: 0px"&gt;{&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; myCheckBox.LayoutUpdated -= myCheckBox_LayoutUpdated;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; myCheckBox.Content = &lt;span style="color: #2b91af"&gt;QueryableVisualStateManager&lt;/span&gt;.QueryState(myCheckBox);&lt;/p&gt;        &lt;p style="margin: 0px"&gt;}&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;void&lt;/span&gt; myExpander_LayoutUpdated(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;EventArgs&lt;/span&gt; e)&lt;/p&gt;        &lt;p style="margin: 0px"&gt;{&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; myExpander.LayoutUpdated -= myExpander_LayoutUpdated;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; myExpander.Content = &lt;span style="color: #2b91af"&gt;QueryableVisualStateManager&lt;/span&gt;.QueryState(myExpander);&lt;/p&gt;        &lt;p style="margin: 0px"&gt;}&lt;/p&gt;     &lt;/div&gt;      &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_1168E7D1.png"&gt;&lt;img title="image" style="display: inline" height="186" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_1BD99624.png" width="780" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;     &lt;iframe style="width: 800px; height: 150px" src="http://silverlight.services.live.com/invoke/18514/SilverlightCustomVSM/iframe.html" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;      &lt;p&gt;And you can get the source at: &lt;a title="http://silverlight.net/blogs/justinangel/BlogStorage/SilverlightCustomVSM.zip" href="http://silverlight.net/blogs/justinangel/BlogStorage/SilverlightCustomVSM.zip"&gt;http://silverlight.net/blogs/justinangel/BlogStorage/SilverlightCustomVSM.zip&lt;/a&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;-- Justin Angel        &lt;br /&gt;Microsoft Silverlight Toolkit Program Manager&lt;/p&gt;   &lt;/font&gt;&lt;img src="http://blogs.silverlight.net/aggbug.aspx?PostID=152610" width="1" height="1"&gt;</description><evnet:views>993</evnet:views><evnet:viewtrackingurl>http://blogs.silverlight.net/aggbug.aspx?PostID=152610</evnet:viewtrackingurl></item><item><title>Silverlight Toolkit: TreeView, TreeViewItem &amp; HierarchalDataTemplate</title><link>http://blogs.silverlight.net/blogs/justinangel/archive/2008/11/18/silverlight-toolkit-treeview-treeviewitem-amp-hierarchaldatatemplate.aspx</link><pubDate>Wed, 19 Nov 2008 01:53:36 GMT</pubDate><guid isPermaLink="false">d0d632c8-a6f7-4f68-b0ce-26aaafd62132:133634</guid><dc:creator>JustinAngel</dc:creator><slash:comments>15</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.silverlight.net/blogs/justinangel/rsscomments.aspx?PostID=133634</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.silverlight.net/blogs/justinangel/commentapi.aspx?PostID=133634</wfw:comment><comments>http://blogs.silverlight.net/blogs/justinangel/archive/2008/11/18/silverlight-toolkit-treeview-treeviewitem-amp-hierarchaldatatemplate.aspx#comments</comments><description>&lt;font size="2"&gt;   &lt;div style="font-family: arial"&gt;     &lt;p&gt;Hi folks,&lt;/p&gt;      &lt;p&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;I’d like to go over the TreeView control which is part of the new Silverlight Toolkit (&lt;a href="http://www.codeplex.com/Silverlight"&gt;http://www.codeplex.com/Silverlight&lt;/a&gt;).         &lt;br /&gt;We’ll talk about the TreeView control itself, how to style the TreeViewItem and what is HierarchalDataTemplate all about.&amp;#160;&amp;#160; &lt;/p&gt;      &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;      &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;      &lt;p&gt;&lt;strong&gt;Recommended reading before reading this article &lt;/strong&gt;&lt;/p&gt;      &lt;p&gt;1. &lt;a href="http://silverlight.net/blogs/justinangel/archive/2008/11/11/silverlight-toolkit-headeredcontentcontrol-amp-headereditemscontrol.aspxhttp://silverlight.net/blogs/justinangel/archive/2008/11/11/silverlight-toolkit-headeredcontentcontrol-amp-headereditemscontrol.aspx" target="_blank"&gt;Silverlight Toolkit: HeaderedContentControl &amp;amp; HeaderedItemsControl&lt;/a&gt;&lt;/p&gt;      &lt;p&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;      &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;      &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;      &lt;p&gt;&lt;strong&gt;Setup&lt;/strong&gt;&lt;/p&gt;      &lt;p&gt;1. Create a new project. &lt;/p&gt;      &lt;p&gt;&lt;a href="file:///C:/Users/JustinAn/AppData/Local/Temp/WindowsLiveWriter-429641856/supfiles10CF5CC7/image221.png"&gt;&lt;img title="image2_thumb2" style="display: inline" height="334" alt="image2_thumb2" src="http://silverlight.net/blogs/justinangel/image2_thumb2_714C86BE.png" width="508" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;   &lt;/div&gt; &lt;/font&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;2. Add a reference to the Silverlight Controls assembly (Microsoft.Windows.Controls.dll) which can be downloaded at &lt;a href="http://codeplex.com/Silverlight"&gt;http://codeplex.com/Silverlight&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;&lt;a href="file:///C:/Users/JustinAn/AppData/Local/Temp/WindowsLiveWriter-429641856/supfiles53144C/image10[2].png"&gt;&lt;img title="image10_thumb2" style="display: inline" height="439" alt="image10_thumb2" src="http://silverlight.net/blogs/justinangel/image10_thumb2_2AF71E78.png" width="297" border="0" /&gt;&lt;/a&gt;&amp;#160;&amp;#160; &lt;a href="file:///C:/Users/JustinAn/AppData/Local/Temp/WindowsLiveWriter-429641856/supfiles4F73F4A/image311.png"&gt;&lt;img title="image_thumb3313" style="display: inline" height="431" alt="image_thumb3313" src="http://silverlight.net/blogs/justinangel/image_thumb3313_7BC532E0.png" width="571" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;3. Look under &amp;quot;Custom Controls&amp;quot; In the Blend Asset Library. &lt;/p&gt;  &lt;p&gt;&lt;a href="file:///C:/Users/JustinAn/AppData/Local/Temp/WindowsLiveWriter-429641856/supfiles10CF5CC7/image132.png"&gt;&lt;img title="image13_thumb2" style="display: inline" height="524" alt="image13_thumb2" src="http://silverlight.net/blogs/justinangel/image13_thumb2_21BAE337.png" width="655" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;4. Add a TreeView to the Page. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_6E7EA9CD.png"&gt;&lt;img title="image" style="display: inline" height="212" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_66F33A60.png" width="489" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;And here's the XAML Blend generated for us:&lt;/p&gt;  &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;UserControl&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: red"&gt;&amp;#160;&amp;#160;&amp;#160; xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: red"&gt;&amp;#160;&amp;#160;&amp;#160; xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: red"&gt;&amp;#160;&amp;#160;&amp;#160; xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;d&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;http://schemas.microsoft.com/expression/blend/2008&amp;quot;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: red"&gt;&amp;#160;&amp;#160;&amp;#160; xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;mc&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;http://schemas.openxmlformats.org/markup-compatibility/2006&amp;quot;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: red"&gt;&amp;#160;&amp;#160;&amp;#160; mc&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Ignorable&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;d&amp;quot;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: red"&gt;&amp;#160;&amp;#160;&amp;#160; x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Class&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;SilverlightControlsNovember2008.TreeViewPage&amp;quot;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: red"&gt;&amp;#160;&amp;#160;&amp;#160; d&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;DesignWidth&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;640&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; d&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;DesignHeight&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;480&amp;quot;&lt;/span&gt; &lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: red"&gt;&amp;#160;&amp;#160;&amp;#160; xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;clr-namespace:Microsoft.Windows.Controls;assembly=Microsoft.Windows.Controls&amp;quot;&lt;/span&gt; &lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: red"&gt;&amp;#160;&amp;#160;&amp;#160; xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;vsm&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;clr-namespace:System.Windows;assembly=System.Windows&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid&lt;/span&gt;&lt;span style="color: red"&gt; x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;LayoutRoot&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Background&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;#FFFFFFFF&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;strong&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeView&lt;/span&gt;&lt;/strong&gt;&lt;span style="color: red"&gt; Margin&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;79,98,0,0&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; VerticalAlignment&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Top&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Height&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;200&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Width&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;120&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; HorizontalAlignment&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Left&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;UserControl&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Manually Adding New Textual TreeViewItems to a TreeView&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Let’s add some TreeViewItems to our TreeView that will reflect a family’s genealogy tree.&amp;#160; like so:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_78639B38.png"&gt;&lt;img title="image" style="display: inline" height="215" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_1408272F.png" width="164" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;We’ll right click on TreeView –&amp;gt; Add TreeViewItem.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_25E4BAFC.png"&gt;&lt;img title="image" style="display: inline" height="492" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_64D63B97.png" width="490" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;And we can see that we indeed got a new TreeViewItem nested under or TreeView: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_0418E26B.png"&gt;&lt;img title="image" style="display: inline" height="213" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_117EF571.png" width="509" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Next, we’ll go to the TreeViewItem’s properties and set &lt;strong&gt;Header&lt;/strong&gt; to “Sally” and &lt;strong&gt;IsExpanded&lt;/strong&gt; to true. &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_54E6F6D3.png"&gt;&lt;img title="image" style="display: inline" height="407" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_0FCE299D.png" width="766" border="0" /&gt;&lt;/a&gt;&amp;#160; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Here’s the XAML blend generated for us up until now: &lt;/p&gt;  &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeView&lt;/span&gt;&lt;span style="color: red"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: red"&gt; Height&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;200&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Width&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;120&amp;quot;&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeViewItem&lt;/span&gt;&lt;span style="color: red"&gt; IsExpanded&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;True&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Header&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Sally&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeView&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Now we’d like to add “John” as a child TreeViewItem of “Sally”.&lt;/p&gt;  &lt;p&gt;We’ll Right click on “Sally” TreeViewItem –&amp;gt; Add TreeViewItem.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_2F10D070.png"&gt;&lt;img title="image" style="display: inline" height="391" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_0E8990BE.png" width="325" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;And we got another nested note inside the previous TreeViewItem:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_5910CE98.png"&gt;&lt;img title="image" style="display: inline" height="252" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_316A526E.png" width="430" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;We’ll edit it’s &lt;strong&gt;Header&lt;/strong&gt; to “John” and we’ll keep &lt;strong&gt;IsExpanded&lt;/strong&gt; to false, because it has no nested nodes.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_1EB558B7.png"&gt;&lt;img title="image" style="display: inline" height="338" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_0C005F00.png" width="472" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;We’ll keep it up until we get the following TreeView:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_16518360.png"&gt;&lt;img title="image" style="display: inline" height="398" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_2E08BAC6.png" width="756" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Let’s run our sample:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_741977D9.png"&gt;&lt;img title="image" style="display: inline" height="391" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_61647E22.png" width="364" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;And we can start collapsing, expanding &amp;amp; Selecting TreeViewItems:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_39BE01F8.png"&gt;&lt;img title="image" style="display: inline" height="420" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_27090841.png" width="280" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;(In the above sample, Greg is collapsed, and John is selected) &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;And here’s the XAML Blend generated for us:&lt;/p&gt;  &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeView&lt;/span&gt;&lt;span style="color: red"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Height&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;200&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Width&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;120&amp;quot;&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeViewItem&lt;/span&gt;&lt;span style="color: red"&gt; IsExpanded&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;True&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Header&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Sally&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeViewItem&lt;/span&gt;&lt;span style="color: red"&gt; Header&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;John&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeViewItem&lt;/span&gt;&lt;span style="color: red"&gt; Header&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Greg&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; IsExpanded&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;True&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeViewItem&lt;/span&gt;&lt;span style="color: red"&gt; Header&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Linda&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeViewItem&lt;/span&gt;&lt;span style="color: red"&gt; Header&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Darren&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeViewItem&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeViewItem&lt;/span&gt;&lt;span style="color: red"&gt; Header&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Allice&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; IsExpanded&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;True&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeViewItem&lt;/span&gt;&lt;span style="color: red"&gt; Header&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Neil&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeViewItem&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeViewItem&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeView&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Editing the TreeViewItem’s Header property in Visual Studio XAML Editor&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Now it’s time to uncover the horrible truth – Sally and her children are all aliens. The green “blip blip” kind. &lt;/p&gt;  &lt;p&gt;This is how our TreeView should look like when we’re done:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_7F628C16.png"&gt;&lt;img title="image" style="display: inline" height="368" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_3EC03FA7.png" width="266" border="0" /&gt;&lt;/a&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Blend currently does not support editing the &lt;strong&gt;Header&lt;/strong&gt; property in a visual way. So we’ll open up Visual Studio’s XAML editor for that.&lt;/p&gt;  &lt;p&gt;Right click on “TreeViewPage.xaml” (which is our page) in the Blend project tab –&amp;gt; Edit In Visual Studio.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_692C70C4.png"&gt;&lt;img title="image" style="display: inline" height="373" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_5677770D.png" width="296" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;And in a few second we’ll see this screen:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_2ED0FAE3.png"&gt;&lt;img title="image" style="display: inline" height="334" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_1C1C012C.png" width="559" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;We’ll start off by changing the first TreeViewItem:&lt;/p&gt;  &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeViewItem&lt;/span&gt;&lt;span style="color: red"&gt; IsExpanded&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;True&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Header&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Sally&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;First, we’ll expand the &lt;strong&gt;Header&lt;/strong&gt; property to allow XAML content:&lt;/p&gt;  &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeViewItem&lt;/span&gt;&lt;span style="color: red"&gt; IsExpanded&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;True&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeViewItem.Header&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeViewItem.Header&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;We’ll fill in the “Sally” content:&lt;/p&gt;  &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeViewItem&lt;/span&gt;&lt;span style="color: red"&gt; IsExpanded&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;True&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeViewItem.Header&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBlock&lt;/span&gt;&lt;span style="color: red"&gt; Text&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Sally&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeViewItem.Header&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;And our TreeView still looks exactly the same:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_66A33F06.png"&gt;&lt;img title="image" style="display: inline" height="333" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_01DB9808.png" width="418" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Now we’d like to add the image of our Alien, but the&lt;strong&gt; Header&lt;/strong&gt; can only contain a single element.     &lt;br /&gt;So we’ll group the &amp;lt;Image&amp;gt; and the &amp;lt;TextBlock&amp;gt; in a horizontal &amp;lt;StackPanel&amp;gt;.&lt;/p&gt;  &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeViewItem.Header&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;strong&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;StackPanel&lt;/span&gt;&lt;span style="color: red"&gt; Orientation&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Horizontal&amp;quot;&amp;gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBlock&lt;/span&gt;&lt;span style="color: red"&gt; Text&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Sally&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;strong&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;StackPanel&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeViewItem.Header&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;Now that we have a container in the &lt;strong&gt;Header&lt;/strong&gt;, we’ll add the &amp;lt;Image&amp;gt; tag. &lt;/p&gt;  &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeViewItem.Header&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;StackPanel&lt;/span&gt;&lt;span style="color: red"&gt; Orientation&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Horizontal&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;strong&gt;&amp;#160; &lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Image&lt;/span&gt;&lt;span style="color: red"&gt; Source&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Alien1.png&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBlock&lt;/span&gt;&lt;span style="color: red"&gt; Text&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Sally&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;StackPanel&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeViewItem.Header&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;In our Visual Studio preview windows we can see the following image: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_7330EC22.png"&gt;&lt;img title="image" style="display: inline" height="333" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_6BA57CB5.png" width="397" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Well, The text is too small for our picture. So let’s change the &lt;strong&gt;FontSize&lt;/strong&gt; for the &lt;strong&gt;TreeView &lt;/strong&gt;to 22.&lt;/p&gt;  &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;   &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeView&lt;/span&gt;&lt;span style="color: red"&gt; &lt;strong&gt;FontSize&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;&lt;strong&gt;=&amp;quot;22&amp;quot;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: red"&gt; Height&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;200&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Width&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;120&amp;quot;&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;   &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_790B8FBB.png"&gt;&lt;img title="image" style="display: inline" height="360" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_3869434C.png" width="390" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;We can see the Horizontal and Vertical Scrollbars appear because now our TreeViewItems are bigger than the TreeView. We’ll change the TreeView &lt;strong&gt;Width &amp;amp; Height &lt;/strong&gt;accordingly.&amp;#160; &lt;/p&gt;  &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeView&lt;/span&gt;&lt;span style="color: red"&gt; FontSize&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;22&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Height&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;350&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Width&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;250&amp;quot;&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Now our TreeView looks much better:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_10C2C722.png"&gt;&lt;img title="image" style="display: inline" height="382" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_50207AB2.png" width="516" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;here’s our XAML up until now:&lt;/p&gt;  &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeView&lt;/span&gt;&lt;span style="color: red"&gt; FontSize&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;22&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Height&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;350&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Width&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;250&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Margin&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;84,101,0,0&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; VerticalAlignment&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Top&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; HorizontalAlignment&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Left&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeViewItem&lt;/span&gt;&lt;span style="color: red"&gt; IsExpanded&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;True&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeViewItem.Header&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;StackPanel&lt;/span&gt;&lt;span style="color: red"&gt; Orientation&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Horizontal&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Image&lt;/span&gt;&lt;span style="color: red"&gt; Source&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Alien1.png&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBlock&lt;/span&gt;&lt;span style="color: red"&gt; Text&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Sally&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;StackPanel&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;strong&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeViewItem.Header&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeViewItem&lt;/span&gt;&lt;span style="color: red"&gt; Header&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;John&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeViewItem&lt;/span&gt;&lt;span style="color: red"&gt; Header&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Greg&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; IsExpanded&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;True&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeViewItem&lt;/span&gt;&lt;span style="color: red"&gt; Header&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Linda&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeViewItem&lt;/span&gt;&lt;span style="color: red"&gt; Header&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Darren&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeViewItem&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeViewItem&lt;/span&gt;&lt;span style="color: red"&gt; Header&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Allice&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; IsExpanded&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;True&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeViewItem&lt;/span&gt;&lt;span style="color: red"&gt; Header&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Neil&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeViewItem&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeViewItem&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeView&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;We’ll repeat the process of editing an Image for the other 6 TreeViewItems. Than we’ll run our application.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://silverlight.net/blogs/justinangel/image_2879FE88.png"&gt;&lt;img title="image" style="display: inline" height="574" alt="image" src="http://silverlight.net/blogs/justinangel/image_thumb_07868BE1.png" width="377" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;here’s the XAML we wrote:&lt;/p&gt;  &lt;div style="font-size: 12pt; background: white; color: black; font-family: courier new"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeView&lt;/span&gt;&lt;span style="color: red"&gt; FontSize&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;22&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Height&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;350&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Width&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;250&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Margin&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;84,101,0,0&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; VerticalAlignment&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Top&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; HorizontalAlignment&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Left&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeViewItem&lt;/span&gt;&lt;span style="color: red"&gt; IsExpanded&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;True&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeViewItem.Header&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;StackPanel&lt;/span&gt;&lt;span style="color: red"&gt; Orientation&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Horizontal&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Image&lt;/span&gt;&lt;span style="color: red"&gt; Source&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Alien1.png&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBlock&lt;/span&gt;&lt;span style="color: red"&gt; Text&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Sally&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;StackPanel&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeViewItem.Header&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeViewItem&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeViewItem.Header&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&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; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;StackPanel&lt;/span&gt;&lt;span style="color: red"&gt; Orientation&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Horizontal&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: