<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://xamlcoder.com/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Joe's Blog</title><link>http://xamlcoder.com/cs/blogs/joe/default.aspx</link><description>Adventures in Windows Presentation Foundation and Silverlight at Veracity Solutions</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 (Build: 30929.2835)</generator><item><title>New Blog</title><link>http://xamlcoder.com/cs/blogs/joe/archive/2010/01/14/new-blog.aspx</link><pubDate>Fri, 15 Jan 2010 07:05:00 GMT</pubDate><guid isPermaLink="false">f86693b4-c59e-43d4-8c4a-670d55e24c19:1257</guid><dc:creator>Joe</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://xamlcoder.com/cs/blogs/joe/rsscomments.aspx?PostID=1257</wfw:commentRss><comments>http://xamlcoder.com/cs/blogs/joe/archive/2010/01/14/new-blog.aspx#comments</comments><description>&lt;p&gt;New blog url: &lt;a title="New Blog Site" href="http://xamlcoder.com/blog"&gt;&amp;nbsp;http://xamlcoder.com/blog&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;After many months of ignoring my blog, I finally decided to try and get it fixed.&amp;nbsp; After the last &lt;a href="http://communityserver.org" target="_blank"&gt;Community Server&lt;/a&gt; upgrade something in the software was broken, and I was unable to use Windows Live Writer to blog.&amp;nbsp; The upgrade was such a headache I loathed even the thought of spending more time trying to figure out the issue.&amp;nbsp; This week I finally decided to break down and figure it out.&amp;nbsp; However it appears to be too little too late.&amp;nbsp; Being unable to find the required upgrades on their website, I contacted &lt;a href="http://telligent.com/" target="_blank"&gt;&amp;raquo;telligentsystems&lt;/a&gt; tech support.&amp;nbsp; This is what I received:&lt;/p&gt;
&lt;blockquote&gt;&amp;ldquo;Unfortunately, we no longer offer the free versions of our products, nor do we support them any longer. We will not be able to provide you the upgrades. Please contact our sales department if you wish to purchase a license.&amp;rdquo;&lt;/blockquote&gt;
&lt;p&gt;So, welcome to WordPress!&amp;nbsp; I was pleasantly surprised with a simple and seamless install.&amp;nbsp; After browsing through some of the available themes, I finally decided to create my own.&amp;nbsp; I created this theme based on &lt;a href="http://bea.stollnitz.com/blog/" target="_blank"&gt;Bea Stollnitz&amp;rsquo;s&lt;/a&gt; wonderful looking blog.&amp;nbsp; My goal is to eventually move my posts over, however for now my &lt;a href="http://xamlcoder.com/cs/blogs/joe/default.aspx" target="_blank"&gt;old blog&lt;/a&gt; will still be up and running.&amp;nbsp; For now, lets create some new XAML posts!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://xamlcoder.com/cs/aggbug.aspx?PostID=1257" width="1" height="1"&gt;</description><category domain="http://xamlcoder.com/cs/blogs/joe/archive/tags/Personal/default.aspx">Personal</category><category domain="http://xamlcoder.com/cs/blogs/joe/archive/tags/World+of+Warcraft/default.aspx">World of Warcraft</category><category domain="http://xamlcoder.com/cs/blogs/joe/archive/tags/Programming/default.aspx">Programming</category><category domain="http://xamlcoder.com/cs/blogs/joe/archive/tags/.NET/default.aspx">.NET</category><category domain="http://xamlcoder.com/cs/blogs/joe/archive/tags/Software/default.aspx">Software</category><category domain="http://xamlcoder.com/cs/blogs/joe/archive/tags/NORMA/default.aspx">NORMA</category><category domain="http://xamlcoder.com/cs/blogs/joe/archive/tags/Books/default.aspx">Books</category><category domain="http://xamlcoder.com/cs/blogs/joe/archive/tags/WPF/default.aspx">WPF</category><category domain="http://xamlcoder.com/cs/blogs/joe/archive/tags/WCF/default.aspx">WCF</category><category domain="http://xamlcoder.com/cs/blogs/joe/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://xamlcoder.com/cs/blogs/joe/archive/tags/VSTO/default.aspx">VSTO</category><category domain="http://xamlcoder.com/cs/blogs/joe/archive/tags/Screencast/default.aspx">Screencast</category><category domain="http://xamlcoder.com/cs/blogs/joe/archive/tags/WSIT/default.aspx">WSIT</category><category domain="http://xamlcoder.com/cs/blogs/joe/archive/tags/Composite+UI/default.aspx">Composite UI</category><category domain="http://xamlcoder.com/cs/blogs/joe/archive/tags/Design+Patterns/default.aspx">Design Patterns</category></item><item><title>Building a Databound WPF Menu Using a HierarchicalDataTemplate</title><link>http://xamlcoder.com/cs/blogs/joe/archive/2008/11/25/building-a-databound-wpf-menu-using-a-hierarchicaldatatemplate.aspx</link><pubDate>Wed, 26 Nov 2008 01:49:00 GMT</pubDate><guid isPermaLink="false">f86693b4-c59e-43d4-8c4a-670d55e24c19:1196</guid><dc:creator>Joe</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://xamlcoder.com/cs/blogs/joe/rsscomments.aspx?PostID=1196</wfw:commentRss><comments>http://xamlcoder.com/cs/blogs/joe/archive/2008/11/25/building-a-databound-wpf-menu-using-a-hierarchicaldatatemplate.aspx#comments</comments><description>&lt;p&gt;I had a colleague ask me how he could solve a databinding problem while building a WPF Menu.&amp;nbsp; The immediate answer wasn&amp;rsquo;t apparent to me, though it&amp;rsquo;s actually quite simple.&amp;nbsp; A while back &lt;a target="_blank" href="http://karlshifflett.wordpress.com"&gt;Karl Shifflett&lt;/a&gt; wrote up &lt;a target="_blank" href="http://karlshifflett.wordpress.com/2008/02/03/wpf-sample-series-databound-hierarchicaldatatemplate-menu-sample/"&gt;an excellent example&lt;/a&gt; of doing something similar.&amp;nbsp; I take his example one step further by showing how you can easily bind&amp;nbsp; properties to the MenuItem instead of assigning one-time values.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Download Source:&lt;/b&gt;&amp;nbsp; &lt;a target="_blank" href="http://xamlcoder.com/joe/downloads/WPFDataBoundMenu.zip"&gt;WPFDataBoundMenu.zip&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;re going to use a simple Business Object which represents our MenuItem.&amp;nbsp; It has four properties: MenuText, IsEnabled, Command, and Children.&lt;/p&gt;
&lt;div style="border-bottom:white 2px ridge;border-left:white 2px ridge;padding-bottom:10px;margin:10px;padding-left:10px;padding-right:10px;font-family:consolas, courier new;word-wrap:break-word;background:#eeeeee;color:black;font-size:10pt;border-top:white 2px ridge;border-right:white 2px ridge;padding-top:10px;"&gt;
&lt;pre 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;MyBusinessObject&lt;/span&gt; : &lt;span style="color:#2b91af;"&gt;INotifyPropertyChanged&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;{&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:blue;"&gt;bool&lt;/span&gt; _isEnabled;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:blue;"&gt;string&lt;/span&gt; _menuText;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ICommand&lt;/span&gt; _command;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ObservableCollection&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;MyBusinessObject&lt;/span&gt;&amp;gt; _children;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;event&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;PropertyChangedEventHandler&lt;/span&gt; PropertyChanged;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;public&lt;/span&gt; MyBusinessObject()&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Children = &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;MyBusinessObject&lt;/span&gt;&amp;gt;();&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;string&lt;/span&gt; MenuText&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;get&lt;/span&gt; { &lt;span style="color:blue;"&gt;return&lt;/span&gt; _menuText; }&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;set&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _menuText = &lt;span style="color:blue;"&gt;value&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RaisePropertyChanged(&lt;span style="color:#a31515;"&gt;&amp;quot;MenuText&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;bool&lt;/span&gt; IsEnabled&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;get&lt;/span&gt; { &lt;span style="color:blue;"&gt;return&lt;/span&gt; _isEnabled; }&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;set&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _isEnabled = &lt;span style="color:blue;"&gt;value&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RaisePropertyChanged(&lt;span style="color:#a31515;"&gt;&amp;quot;IsEnabled&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ICommand&lt;/span&gt; Command&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;get&lt;/span&gt; { &lt;span style="color:blue;"&gt;return&lt;/span&gt; _command; }&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;set&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _command = &lt;span style="color:blue;"&gt;value&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RaisePropertyChanged(&lt;span style="color:#a31515;"&gt;&amp;quot;Command&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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;MyBusinessObject&lt;/span&gt;&amp;gt; Children&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;get&lt;/span&gt; { &lt;span style="color:blue;"&gt;return&lt;/span&gt; _children; }&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;set&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _children = &lt;span style="color:blue;"&gt;value&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; RaisePropertyChanged(&lt;span style="color:blue;"&gt;string&lt;/span&gt; propertyName)&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;var&lt;/span&gt; handler = PropertyChanged;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;if&lt;/span&gt; (handler != &lt;span style="color:blue;"&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; handler(&lt;span style="color:blue;"&gt;this&lt;/span&gt;, &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;PropertyChangedEventArgs&lt;/span&gt;(propertyName));&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;We&amp;rsquo;ll build our window to include a Menu and&amp;nbsp; a Button.&amp;nbsp; When we click the button we want to toggle the IsEnabled property of one of our Business Objects.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://xamlcoder.com/cs/controlpanel/blogs/posteditor.aspx/$image[4].png"&gt;&lt;img style="display:inline;border-width:0px;border:0;" title="image" alt="image" src="http://xamlcoder.com/cs/blogs/joe/images/WPFDataboundMenu.png" width="393" border="0" height="331" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="border-bottom:white 2px ridge;border-left:white 2px ridge;padding-bottom:10px;margin:10px;padding-left:10px;padding-right:10px;font-family:consolas, courier new;word-wrap:break-word;background:#eeeeee;color:black;font-size:10pt;border-top:white 2px ridge;border-right:white 2px ridge;padding-top:10px;"&gt;
&lt;pre 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;/pre&gt;
&lt;pre style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:red;"&gt;x:Class&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;WpfApplication1.Window1&lt;/span&gt;&amp;quot;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;http://schemas.microsoft.com/winfx/2006/xaml/presentation&lt;/span&gt;&amp;quot;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns:x&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;http://schemas.microsoft.com/winfx/2006/xaml&lt;/span&gt;&amp;quot;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns:local&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;clr-namespace:WpfApplication1&lt;/span&gt;&amp;quot;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:red;"&gt;Title&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Window1&lt;/span&gt;&amp;quot;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:red;"&gt;Height&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;400&lt;/span&gt;&amp;quot;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:red;"&gt;Width&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;700&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Window.Resources&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;HierarchicalDataTemplate&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:red;"&gt;DataType&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;{x:Type local:MyBusinessObject}&lt;/span&gt;&amp;quot;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:red;"&gt;ItemsSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;{Binding Path=Children}&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ContentPresenter&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:red;"&gt;Content&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;{Binding MenuText}&lt;/span&gt;&amp;quot;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:red;"&gt;Loaded&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;ContentPresenter_Loaded&lt;/span&gt;&amp;quot;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:red;"&gt;RecognizesAccessKey&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;True&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt; /&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&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;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Window.Resources&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Grid&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:red;"&gt;Margin&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;10&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Grid.RowDefinitions&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RowDefinition&lt;/span&gt;&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;Height&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Auto&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt; /&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RowDefinition&lt;/span&gt;&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;Height&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Auto&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt; /&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Grid.RowDefinitions&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Menu&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:red;"&gt;ItemsSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;{Binding}&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StackPanel&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:red;"&gt;Grid.Row&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;1&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Button&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:red;"&gt;Content&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Toggle Enable&lt;/span&gt;&amp;quot;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:red;"&gt;Click&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Enable_Click&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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;/pre&gt;
&lt;pre 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;/pre&gt;
&lt;/div&gt;
&lt;p&gt;In our code-behind for the window we build a collection of MyBusinessObject&amp;rsquo;s.&amp;nbsp; We then assign that collection to the DataContext of our Window.&amp;nbsp; This allows the Menu control to bind its ItemsSource to the current value of the DataContext (&lt;span style="color:red;"&gt;ItemsSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;{Binding}&lt;/span&gt;&amp;quot;).&amp;nbsp; Where we do the magic is in the ContenPresenter_Loaded event handler.&amp;nbsp; This is fired when the MenuItems are being built.&amp;nbsp; Inside the handler we get a reference to the ContenPresenter then walk up the tree to it&amp;rsquo;s Parent MenuItem.&amp;nbsp; UtilityMethods.FindParent accomplishes this task by using the VisualTreeHelper and recursively walking the tree.&amp;nbsp; We then can get a reference to our MyBusinessObject through the DataContext of the MenuItem.&amp;nbsp; This allows us to build bindings, in code, to bind to various properties.&amp;nbsp; It&amp;rsquo;s &lt;b&gt;important&lt;/b&gt; to remember that we can do lots of the same things in code in which we can do in XAML.&amp;nbsp; XAML is just usually funner.&amp;nbsp; =]&lt;/p&gt;
&lt;div style="border-bottom:white 2px ridge;border-left:white 2px ridge;padding-bottom:10px;margin:10px;padding-left:10px;padding-right:10px;font-family:consolas, courier new;word-wrap:break-word;background:#eeeeee;color:black;font-size:10pt;border-top:white 2px ridge;border-right:white 2px ridge;padding-top:10px;"&gt;
&lt;pre 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;Window1&lt;/span&gt; : &lt;span style="color:#2b91af;"&gt;Window&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;{&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ObservableCollection&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;MyBusinessObject&lt;/span&gt;&amp;gt; _options;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;public&lt;/span&gt; Window1()&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; InitializeComponent();&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _options = &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;MyBusinessObject&lt;/span&gt;&amp;gt;();&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green;"&gt;// build simple menu structure&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#2b91af;"&gt;MyBusinessObject&lt;/span&gt; menuTwo = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;MyBusinessObject&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MenuText = &lt;span style="color:#a31515;"&gt;&amp;quot;Two&amp;quot;&lt;/span&gt;,&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; menuTwo.Children.Add(&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;MyBusinessObject&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MenuText = &lt;span style="color:#a31515;"&gt;&amp;quot;Child 1&amp;quot;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; menuTwo.Children.Add(&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;MyBusinessObject&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MenuText = &lt;span style="color:#a31515;"&gt;&amp;quot;Child 2&amp;quot;&lt;/span&gt;,&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IsEnabled = &lt;span style="color:blue;"&gt;false&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _options.Add(&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;MyBusinessObject&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MenuText = &lt;span style="color:#a31515;"&gt;&amp;quot;One&amp;quot;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _options.Add(menuTwo);&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DataContext = _options;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; ContentPresenter_Loaded(&lt;span style="color:blue;"&gt;object&lt;/span&gt; sender, &lt;span style="color:#2b91af;"&gt;RoutedEventArgs&lt;/span&gt; e)&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green;"&gt;// get the content presenter&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#2b91af;"&gt;ContentPresenter&lt;/span&gt; contentPresenter =&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sender &lt;span style="color:blue;"&gt;as&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;ContentPresenter&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green;"&gt;// get reference to menu item&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#2b91af;"&gt;MenuItem&lt;/span&gt; menuItem =&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#2b91af;"&gt;UtilityMethods&lt;/span&gt;.FindParent&amp;lt;&lt;span style="color:#2b91af;"&gt;MenuItem&lt;/span&gt;&amp;gt;(contentPresenter);&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green;"&gt;// get reference to business object&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#2b91af;"&gt;MyBusinessObject&lt;/span&gt; myBusinessObject =&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; menuItem.DataContext &lt;span style="color:blue;"&gt;as&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;MyBusinessObject&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green;"&gt;// create bindings&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#2b91af;"&gt;Binding&lt;/span&gt; isEnabledBinding = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Binding&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;IsEnabled&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; isEnabledBinding.Mode = &lt;span style="color:#2b91af;"&gt;BindingMode&lt;/span&gt;.TwoWay;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; isEnabledBinding.Source = myBusinessObject;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; menuItem.SetBinding(&lt;span style="color:#2b91af;"&gt;MenuItem&lt;/span&gt;.IsEnabledProperty, isEnabledBinding);&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#2b91af;"&gt;Binding&lt;/span&gt; commandBinding = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Binding&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;Command&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; commandBinding.Mode = &lt;span style="color:#2b91af;"&gt;BindingMode&lt;/span&gt;.TwoWay;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; commandBinding.Source = myBusinessObject;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; menuItem.SetBinding(&lt;span style="color:#2b91af;"&gt;MenuItem&lt;/span&gt;.CommandProperty, commandBinding);&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; Enable_Click(&lt;span style="color:blue;"&gt;object&lt;/span&gt; sender, &lt;span style="color:#2b91af;"&gt;RoutedEventArgs&lt;/span&gt; e)&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green;"&gt;// toggle IsEnabled&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _options[1].Children[1].IsEnabled =&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; !_options[1].Children[1].IsEnabled;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;And that&amp;rsquo;s it!&amp;nbsp; I hope that helps!&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Download Source:&lt;/b&gt;&amp;nbsp; &lt;a target="_blank" href="http://xamlcoder.com/joe/downloads/WPFDataBoundMenu.zip"&gt;WPFDataBoundMenu.zip&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Joe&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://xamlcoder.com/cs/aggbug.aspx?PostID=1196" width="1" height="1"&gt;</description><category domain="http://xamlcoder.com/cs/blogs/joe/archive/tags/.NET/default.aspx">.NET</category><category domain="http://xamlcoder.com/cs/blogs/joe/archive/tags/WPF/default.aspx">WPF</category></item><item><title>UI Design Patterns Presentation Code + Slide Deck</title><link>http://xamlcoder.com/cs/blogs/joe/archive/2008/11/13/ui-design-patterns-presentation-code-slide-deck.aspx</link><pubDate>Fri, 14 Nov 2008 07:24:00 GMT</pubDate><guid isPermaLink="false">f86693b4-c59e-43d4-8c4a-670d55e24c19:1195</guid><dc:creator>Joe</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://xamlcoder.com/cs/blogs/joe/rsscomments.aspx?PostID=1195</wfw:commentRss><comments>http://xamlcoder.com/cs/blogs/joe/archive/2008/11/13/ui-design-patterns-presentation-code-slide-deck.aspx#comments</comments><description>&lt;p&gt;Thank you to everyone who came to my presentation on UI Design patterns!&amp;nbsp; It was great to see so many people interested in patterns for building user interfaces.&lt;/p&gt;
&lt;p&gt;One user group member recorded the presentation on his laptop&amp;#39;s webcam; I should have that available for download this weekend.&amp;nbsp; The video is so-so, but the audio isn&amp;#39;t too bad.&amp;nbsp; Thanks Walt!&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Links&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Download Code &amp;amp; Slides - &lt;a target="_blank" href="http://xamlcoder.com/joe/downloads/UIDesignPatterns2008.zip"&gt;http://xamlcoder.com/joe/downloads/UIDesignPatterns2008.zip&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.martinfowler.com/eaaDev/uiArchs.html"&gt;Martin Fowler MVC&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.martinfowler.com/eaaDev/ModelViewPresenter.html"&gt;Martin Fowler MVP&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.devx.com/dotnet/Article/33695/1954"&gt;ASP.NET MVP &amp;amp; Other Patterns&lt;/a&gt;
&lt;br /&gt;&lt;a href="http://karlshifflett.wordpress.com/2008/11/08/learning-wpf-m-v-vm/"&gt;Karl Shifflett MVVM&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Requirements&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Visual Studio 2008 SP1&lt;/li&gt;
&lt;li&gt;Silverlight Tools for Visual Studio&lt;/li&gt;
&lt;li&gt;NUnit (included with code)&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;Rhino Mocks (included with code&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There&amp;#39;s a small &amp;quot;gotcha&amp;quot; with the Silverlight sample.&amp;nbsp; The implemenation is slightly different than that of it&amp;#39;s WPF counterpart.&amp;nbsp; Silverlight Dependency properties do not automatically fire change notifications when their values have changed.&amp;nbsp; Therefore if you want property change notifications your control (read DependencyObject which the Dependency Property is a member of) itself has to implement the INotifyPropertyChanged interface, or you can do what I&amp;#39;ve done here and set the DataContext of a container control.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://xamlcoder.com/cs/aggbug.aspx?PostID=1195" width="1" height="1"&gt;</description><category domain="http://xamlcoder.com/cs/blogs/joe/archive/tags/.NET/default.aspx">.NET</category><category domain="http://xamlcoder.com/cs/blogs/joe/archive/tags/WPF/default.aspx">WPF</category><category domain="http://xamlcoder.com/cs/blogs/joe/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://xamlcoder.com/cs/blogs/joe/archive/tags/Screencast/default.aspx">Screencast</category><category domain="http://xamlcoder.com/cs/blogs/joe/archive/tags/Design+Patterns/default.aspx">Design Patterns</category></item><item><title>Utah .NET User Group Presentation - UI Design Patterns</title><link>http://xamlcoder.com/cs/blogs/joe/archive/2008/11/10/utah-net-user-group-presentation-ui-design-patterns.aspx</link><pubDate>Mon, 10 Nov 2008 21:39:00 GMT</pubDate><guid isPermaLink="false">f86693b4-c59e-43d4-8c4a-670d55e24c19:1187</guid><dc:creator>Joe</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://xamlcoder.com/cs/blogs/joe/rsscomments.aspx?PostID=1187</wfw:commentRss><comments>http://xamlcoder.com/cs/blogs/joe/archive/2008/11/10/utah-net-user-group-presentation-ui-design-patterns.aspx#comments</comments><description>&lt;p&gt;Join me this week at the &lt;a target="_blank" href="http://utahdnug.org/"&gt;Utah .NET User Group&lt;/a&gt; where I’ll be giving a presentation on UI Design Patterns.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;UI Design Patterns&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;In this session we’ll explore three UI design patterns: Model View Controller (MVC), Model View Presenter (MVP), and Model View ViewModel (MVVM).&amp;#160; We’ll prove that you can reuse the same logic to drive a WinForms, ASP.NET, WPF, or Silverlight &amp;quot;View&amp;quot;.&amp;#160; We’ll also see how using these patterns allow the bulk of your UI to be testable using testing frameworks such as NUnit and Rhino Mocks.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Date: &lt;/b&gt;Thursday, November 13th, 2008&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Time: &lt;/b&gt;6:00 PM&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Place: &lt;/b&gt;Neumont University 3rd Floor (10701 South River Front Parkway, South Jordan)&lt;/p&gt;  &lt;p&gt;See you there!&lt;/p&gt;&lt;img src="http://xamlcoder.com/cs/aggbug.aspx?PostID=1187" width="1" height="1"&gt;</description><category domain="http://xamlcoder.com/cs/blogs/joe/archive/tags/.NET/default.aspx">.NET</category><category domain="http://xamlcoder.com/cs/blogs/joe/archive/tags/WPF/default.aspx">WPF</category><category domain="http://xamlcoder.com/cs/blogs/joe/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://xamlcoder.com/cs/blogs/joe/archive/tags/Screencast/default.aspx">Screencast</category></item><item><title>Building composite Applications Using PRISM Presentation</title><link>http://xamlcoder.com/cs/blogs/joe/archive/2008/11/03/building-composite-applications-using-prism-presentation.aspx</link><pubDate>Mon, 03 Nov 2008 23:57:00 GMT</pubDate><guid isPermaLink="false">f86693b4-c59e-43d4-8c4a-670d55e24c19:1182</guid><dc:creator>Joe</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://xamlcoder.com/cs/blogs/joe/rsscomments.aspx?PostID=1182</wfw:commentRss><comments>http://xamlcoder.com/cs/blogs/joe/archive/2008/11/03/building-composite-applications-using-prism-presentation.aspx#comments</comments><description>&lt;p&gt;Thank you to everyone who attended my presentation on PRISM at the Utah Code Camp this past weekend.&amp;#160; Here’s a link to my sample code and slide deck.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://xamlcoder.com/joe/downloads/PRISM-UTCodeCamp2008.zip" target="_blank"&gt;http://xamlcoder.com/joe/downloads/PRISM-UTCodeCamp2008.zip&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Note that you’ll need &lt;a href="http://msdn.microsoft.com/en-us/vstudio/cc533448.aspx" target="_blank"&gt;VS2008 SP1&lt;/a&gt; with the &lt;a href="http://go.microsoft.com/fwlink/?LinkId=129043" target="_blank"&gt;Silverlight Tools for Visual Studio 2008 SP1&lt;/a&gt; installed to run the Silverlight demo.&lt;/p&gt;&lt;img src="http://xamlcoder.com/cs/aggbug.aspx?PostID=1182" width="1" height="1"&gt;</description><category domain="http://xamlcoder.com/cs/blogs/joe/archive/tags/WPF/default.aspx">WPF</category><category domain="http://xamlcoder.com/cs/blogs/joe/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://xamlcoder.com/cs/blogs/joe/archive/tags/Composite+UI/default.aspx">Composite UI</category></item><item><title>Composite Silverlight 2.0 Application Library Updated to RTW</title><link>http://xamlcoder.com/cs/blogs/joe/archive/2008/10/21/composite-silverlight-2-0-application-library-updated-to-rtw.aspx</link><pubDate>Tue, 21 Oct 2008 20:46:00 GMT</pubDate><guid isPermaLink="false">f86693b4-c59e-43d4-8c4a-670d55e24c19:986</guid><dc:creator>Joe</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://xamlcoder.com/cs/blogs/joe/rsscomments.aspx?PostID=986</wfw:commentRss><comments>http://xamlcoder.com/cs/blogs/joe/archive/2008/10/21/composite-silverlight-2-0-application-library-updated-to-rtw.aspx#comments</comments><description>&lt;p&gt;I’ve updated my demo of the &lt;a href="http://xamlcoder.com/cs/blogs/joe/archive/2008/08/05/composite-silverlight-2-0-beta-2-application-library.aspx" target="_blank"&gt;Composite Silverlight Library&lt;/a&gt; I built to work with Silverlight RTW.&amp;#160; The P&amp;amp;P group has plans to ship the next version of the PRISM library (PRISM 2.0) that supports Silverlight, so I’ve started to use their bits instead of the ones that I built with this sample.&amp;#160; Bellow is a screenshot of the conversion.&amp;#160; As you can see, the default styles in Silverlight 2.0 have been changed, and the rendering is much better.&lt;/p&gt;  &lt;p&gt;Download:&amp;#160; &lt;a href="http://xamlcoder.com/joe/downloads/CompositeSilverlightRTW.zip" target="_blank"&gt;CompositeSilverlightRTW.zip&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://xamlcoder.com/cs/blogs/joe/images/CompositeSilverlight.0ApplicationLibrary_CE76/MozillaFirefox.png"&gt;&lt;img title="Composite Silverlight (PRISM) Region Quickstart" style="display:inline;" height="531" alt="Composite Silverlight (PRISM) Region Quickstart" src="http://xamlcoder.com/cs/blogs/joe/images/CompositeSilverlight.0ApplicationLibrary_CE76/MozillaFirefox_thumb.png" width="655" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://xamlcoder.com/cs/aggbug.aspx?PostID=986" width="1" height="1"&gt;</description><category domain="http://xamlcoder.com/cs/blogs/joe/archive/tags/.NET/default.aspx">.NET</category><category domain="http://xamlcoder.com/cs/blogs/joe/archive/tags/WPF/default.aspx">WPF</category><category domain="http://xamlcoder.com/cs/blogs/joe/archive/tags/Silverlight/default.aspx">Silverlight</category></item></channel></rss>