<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>.NET</title><link>http://blogs.interknowlogy.com/bradcunningham/category/166.aspx</link><description>.NET</description><dc:language>en-US</dc:language><generator>.Text Version 0.95.2004.111</generator><item><dc:creator>Brad Cunningham</dc:creator><title>XML, XSL, XAML, XPS......XACTLY?</title><link>http://blogs.interknowlogy.com/bradcunningham/archive/2007/12/20/22901.aspx</link><pubDate>Thu, 20 Dec 2007 11:41:00 GMT</pubDate><guid>http://blogs.interknowlogy.com/bradcunningham/archive/2007/12/20/22901.aspx</guid><description>&lt;p&gt;For some reason at every company I have worked for I have been dubbed the "Reporting dude." I don't know how this title was bestowed on me but so be it. Unfortunately reports aren't particularly sexy, you never hear people saying "Whoa check out that pivot table!" &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;All that aside, recently I came across a reporting challenge that I thought was particularly interesting. Currently in WPF there isn't much in the way of report designers (at least none that I have seen). We do have some very simple integration with the XPS framework, which makes printing XAML very easy. However, all the examples out there of generating an XPS document relies on the fact that your created the XAML objects in code. Ok, but that goes against a major tenet of WPF of separating the design and the implementation.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;The challenge I was faced with was to create a reporting architecture in WPF that would support changes to report formats without invasive code changes, Support multiple output formats if desired (XPS, HTML, Excel, etc..) and the nice to have feature is to allow reports to be built using a visual designer if possible.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Well looking at the requirements and the toolset available first thought we were going to have to make a lot of compromises. I thought some more about it and took a lesson from my web developer toolset. Why not use XML to model the data and XSL to transform the data to the desired format?&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;I knew this would work for HTML and Excel outputs, what I didn't know was how it would work for XAML. So I gave it a go and here is how it went.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;1. Model some test data in XML:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;We need a sample chunk of data to work with in order to test our idea. So I started with this :&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;xml&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;version&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;1.0&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;encoding&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;utf-8&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt; ?&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;EmployeeInfo&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Employee&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;FirstName&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;Bob&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;FirstName&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;LastName&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;Smith&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;LastName&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;City&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;San Diego&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;City&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;State&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;CA&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;State&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Employee&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;EmployeeInfo&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/blockquote&gt;
&lt;p&gt;2. Transform the data in to a XAML document: &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Now that we have sample data to work with we need to write and XSLT document that will take the XML data above and turn it into a XAML document (I wasn't sure what I was going to get with this step. I didn't know how nicely XSL would play with XAML.)&lt;/p&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;xml&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;version&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;1.0&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;encoding&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;UTF-8&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt; ?&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(43,145,175)"&gt;xsl:stylesheet&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;version&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;1.0&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;xmlns:xsl&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;http://www.w3.org/1999/XSL/Transform&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;

    &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(43,145,175)"&gt;xsl:template&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;match&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;EmployeeInfo&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;StackPanel&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;strong&gt;&lt;span style="color: rgb(255,0,0)"&gt;xmlns&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;http://schemas.microsoft.com/winfx/2006/xaml/presentation&lt;/span&gt;"&lt;/strong&gt;&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;Orientation&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;Vertical&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;TextBlock&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;TextBlock.Text&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(43,145,175)"&gt;xsl:value-of&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;select&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;Employee/FirstName&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;/&amp;gt;
                &amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;TextBlock.Text&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;TextBlock&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;TextBlock&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;TextBlock.Text&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(43,145,175)"&gt;xsl:value-of&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;select&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;Employee/LastName&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;/&amp;gt;
                &amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;TextBlock.Text&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;TextBlock&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;TextBlock&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;TextBlock.Text&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(43,145,175)"&gt;xsl:value-of&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;select&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;Employee/City&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;/&amp;gt;
                &amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;TextBlock.Text&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;TextBlock&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;TextBlock&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;TextBlock.Text&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(43,145,175)"&gt;xsl:value-of&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;select&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;Employee/State&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;/&amp;gt;
                &amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;TextBlock.Text&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;TextBlock&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;StackPanel&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(43,145,175)"&gt;xsl:template&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(43,145,175)"&gt;xsl:stylesheet&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;3.&amp;nbsp; From here the rest is fairly straight forward. You do the actual transformation in code (something like this)&lt;/p&gt;
&lt;blockquote&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(43,145,175)"&gt;XmlReader&lt;/span&gt; xreader = &lt;span style="color: rgb(43,145,175)"&gt;XmlReader&lt;/span&gt;.Create(&lt;span style="background: rgb(255,255,0)"&gt;"SampleData.xml"&lt;/span&gt;);

&lt;span style="color: rgb(43,145,175)"&gt;MemoryStream&lt;/span&gt; mem = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;MemoryStream&lt;/span&gt;();
&lt;span style="color: rgb(43,145,175)"&gt;TextWriter&lt;/span&gt; twriter = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;StreamWriter&lt;/span&gt;(mem, System.Text.&lt;span style="color: rgb(43,145,175)"&gt;Encoding&lt;/span&gt;.UTF8);

&lt;span style="color: rgb(43,145,175)"&gt;XslCompiledTransform&lt;/span&gt; trans = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;XslCompiledTransform&lt;/span&gt;();
trans.Load(&lt;span style="background: rgb(255,255,0)"&gt;"XAMLOutput.xslt"&lt;/span&gt;);
trans.Transform(xreader, &lt;span style="color: rgb(0,0,255)"&gt;null&lt;/span&gt;, twriter);&lt;/pre&gt;&lt;pre class="code"&gt;&amp;nbsp;&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;4. From there all we have to do is to take the transformed output and turn it into an XPS document. What I did was take the transformed output and get it in string format and then created a function to create an XPS document&lt;/p&gt;
&lt;blockquote&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;void&lt;/span&gt; XamlToXPS(&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; srcXaml,&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; destXpsFile)
        {
            
            &lt;span style="color: rgb(43,145,175)"&gt;StringReader&lt;/span&gt; stringReader = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;StringReader&lt;/span&gt;(srcXaml);
            &lt;span style="color: rgb(43,145,175)"&gt;XmlReader&lt;/span&gt; xmlReader = &lt;span style="color: rgb(43,145,175)"&gt;XmlReader&lt;/span&gt;.Create(stringReader);

            &lt;span style="color: rgb(0,0,255)"&gt;object&lt;/span&gt; parsedDocObject = &lt;span style="color: rgb(43,145,175)"&gt;XamlReader&lt;/span&gt;.Load(xmlReader);
           
            &lt;span style="color: rgb(43,145,175)"&gt;XpsDocument&lt;/span&gt; document = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;XpsDocument&lt;/span&gt;(destXpsFile, &lt;span style="color: rgb(43,145,175)"&gt;FileAccess&lt;/span&gt;.ReadWrite);
            &lt;span style="color: rgb(43,145,175)"&gt;XpsPackagingPolicy&lt;/span&gt; packagePolicy = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;XpsPackagingPolicy&lt;/span&gt;(document);
            &lt;span style="color: rgb(43,145,175)"&gt;XpsSerializationManager&lt;/span&gt; serializationMgr = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;XpsSerializationManager&lt;/span&gt;(packagePolicy, &lt;span style="color: rgb(0,0,255)"&gt;false&lt;/span&gt;);
            
            serializationMgr.SaveAsXaml(parsedDocObject);
            document.Close();
        }&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;That's it!&lt;/p&gt;
&lt;p&gt;I tested this much more complex chunks of xaml and didn't find any issues. One thing to note is that you have to make sure the XAML namespace is specified for the root element of the document in order for the &lt;/p&gt;
&lt;p&gt;XAML reader to understand the XAML elements (see the bolded area of my sample XSLT).&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;This solution separates the data from the implementation, it allows for format changes to the report without invasive code changes, and it adds the nice to have feature of allowing report design through a visual designer. Since XPS is simply loose xaml packaged up, you can design the report using Blend. Then take that xaml and paste it into the XSLT file and manipulate it to show the data from the XML where needed.&amp;nbsp; &lt;/p&gt;&lt;img src ="http://blogs.interknowlogy.com/bradcunningham/aggbug/22901.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Brad Cunningham</dc:creator><title>WPF &amp;quot;Master Page&amp;quot; like functionality</title><link>http://blogs.interknowlogy.com/bradcunningham/archive/2007/11/21/22690.aspx</link><pubDate>Wed, 21 Nov 2007 14:46:00 GMT</pubDate><guid>http://blogs.interknowlogy.com/bradcunningham/archive/2007/11/21/22690.aspx</guid><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;strong&gt;UPDATE:&lt;/strong&gt; I found and issue with placing the default content elements in the Resources for the Page. When you place the elements directly in the resources, without wrapping them in a template, there is only one instance of the elements created. This means that after the MasterPage control is created the first time the elements will never get re-initialized. This causes problems when you have buttons or other interactions that bind to properties specific to current instance of the master page. &lt;/p&gt; &lt;p&gt;&lt;strong&gt;For example : &lt;/strong&gt;If you had a ButtonContentArea defined and you placed a save button in that area with a Command "SaveCommand" that was bound to a command on the consumer of the MasterPage control, that command would be initialized the first time the MasterPage control is created. Then any subsequent consumers of the master page would use the Binding from the first instance of the master page. This means your save command would be routed to the wrong handler. If you make the Dependency Properties of Type DataTemplate and you wrap the elements in a DataTemplate then bind to the ContentTemplate property of the controls you can resolve this issue. The code below has been updated to reflect this change. &lt;/p&gt; &lt;p&gt;Now on with your regularly scheduled programming.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Coming from an ASP.NET background one of the things I really like are Master Pages. If you aren't familiar with master pages read &lt;a href="http://msdn2.microsoft.com/en-us/library/wtxbf3hh.aspx" target="_blank"&gt;this&lt;/a&gt; first.&lt;/p&gt; &lt;p&gt;In WPF there are several different ways to share styles and templates across pages. Recently I had a need to share a common layout across multiple pages while still allowing for different content and behaviors on each page. The first thing I thought was Master Page. However this feature doesn't come out of the box with WPF.&lt;/p&gt; &lt;p&gt;However it is easy enough to implement your own version. A quick search provided me with Karin Huber's &lt;a href="http://www.codeproject.com/WPF/WPFMasterPage.asp" target="_blank"&gt;code project article&lt;/a&gt; about this very subject. This approach uses a user control as the master page. After playing around with this example one problem I found is that you are unable to name elements that are inside of the master page user control (others have discovered this as well if you view the comments on the codeplex project or you view &lt;a href="http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2130.entry" target="_blank"&gt;Rob Relyea's blog post&lt;/a&gt;) This isn't a deal breaker by any means but I wanted to give a go at implementing it myself. It was surprisingly easy when I got down to it.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;First I created a simple custom control named Master Page and a few dependency properties for the different content zones I am going to expose. Here is what that looks like&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;class&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;MasterPage&lt;/span&gt; : &lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt;&lt;span style="color: rgb(43,145,175)"&gt;Control&lt;br&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;static&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;DependencyProperty&lt;/span&gt; MainContentAreaProperty =&lt;br&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: rgb(43,145,175)"&gt;DependencyProperty&lt;/span&gt;.Register(&lt;span style="background: rgb(255,255,0)"&gt;"MainContentArea"&lt;/span&gt;, &lt;span style="color: rgb(0,0,255)"&gt;typeof&lt;/span&gt; (&lt;span style="color: rgb(0,0,255)"&gt;DataTemplate&lt;/span&gt;), &lt;span style="color: rgb(0,0,255)"&gt;typeof&lt;/span&gt; (&lt;span style="color: rgb(43,145,175)"&gt;MasterPage&lt;/span&gt;));&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;static&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;DependencyProperty&lt;/span&gt; HeaderContentAreaProperty =&lt;br&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: rgb(43,145,175)"&gt;DependencyProperty&lt;/span&gt;.Register(&lt;span style="background: rgb(255,255,0)"&gt;"HeaderContentArea"&lt;/span&gt;, &lt;span style="color: rgb(0,0,255)"&gt;typeof&lt;/span&gt;(&lt;span style="color: rgb(0,0,255)"&gt;DataTemplate&lt;/span&gt;), &lt;span style="color: rgb(0,0,255)"&gt;typeof&lt;/span&gt;(&lt;span style="color: rgb(43,145,175)"&gt;MasterPage&lt;/span&gt;));&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;static&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;DependencyProperty&lt;/span&gt; RightContentAreaProperty =&lt;br&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: rgb(43,145,175)"&gt;DependencyProperty&lt;/span&gt;.Register(&lt;span style="background: rgb(255,255,0)"&gt;"RightContentArea"&lt;/span&gt;, &lt;span style="color: rgb(0,0,255)"&gt;typeof&lt;/span&gt;(&lt;span style="color: rgb(0,0,255)"&gt;DataTemplate&lt;/span&gt;), &lt;span style="color: rgb(0,0,255)"&gt;typeof&lt;/span&gt;(&lt;span style="color: rgb(43,145,175)"&gt;MasterPage&lt;/span&gt;));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;static&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;DependencyProperty&lt;/span&gt; FooterContentAreaProperty =&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(43,145,175)"&gt;DependencyProperty&lt;/span&gt;.Register(&lt;span style="background: rgb(255,255,0)"&gt;"FooterContentArea"&lt;/span&gt;, &lt;span style="color: rgb(0,0,255)"&gt;typeof&lt;/span&gt;(&lt;span style="color: rgb(0,0,255)"&gt;DataTemplate&lt;/span&gt;), &lt;span style="color: rgb(0,0,255)"&gt;typeof&lt;/span&gt;(&lt;span style="color: rgb(43,145,175)"&gt;MasterPage&lt;/span&gt;));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0,0,255)"&gt;static&lt;/span&gt; MasterPage()&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DefaultStyleKeyProperty.OverrideMetadata(&lt;span style="color: rgb(0,0,255)"&gt;typeof&lt;/span&gt;(&lt;span style="color: rgb(43,145,175)"&gt;MasterPage&lt;/span&gt;), &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;FrameworkPropertyMetadata&lt;/span&gt;(&lt;span style="color: rgb(0,0,255)"&gt;typeof&lt;/span&gt;(&lt;span style="color: rgb(43,145,175)"&gt;MasterPage&lt;/span&gt;)));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;DataTemplate &lt;/span&gt;MainContentArea&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&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: rgb(0,0,255)"&gt;get&lt;/span&gt; { &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; (&lt;span style="color: rgb(0,0,255)"&gt;DataTemplate&lt;/span&gt;)GetValue(MainContentAreaProperty); }&lt;br&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: rgb(0,0,255)"&gt;set&lt;/span&gt; { SetValue(MainContentAreaProperty, &lt;span style="color: rgb(0,0,255)"&gt;value&lt;/span&gt;); }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;DataTemplate &lt;/span&gt;HeaderContentArea&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&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: rgb(0,0,255)"&gt;get&lt;/span&gt; { &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; (&lt;span style="color: rgb(0,0,255)"&gt;DataTemplate&lt;/span&gt;)GetValue(HeaderContentAreaProperty); }&lt;br&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: rgb(0,0,255)"&gt;set&lt;/span&gt; { SetValue(HeaderContentAreaProperty, &lt;span style="color: rgb(0,0,255)"&gt;value&lt;/span&gt;); }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;DataTemplate &lt;/span&gt;RightContentArea&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&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: rgb(0,0,255)"&gt;get&lt;/span&gt; { &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; (&lt;span style="color: rgb(0,0,255)"&gt;DataTemplate&lt;/span&gt;)GetValue(RightContentAreaProperty); }&lt;br&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: rgb(0,0,255)"&gt;set&lt;/span&gt; { SetValue(RightContentAreaProperty, &lt;span style="color: rgb(0,0,255)"&gt;value&lt;/span&gt;); }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;DataTemplate &lt;/span&gt;FooterContentArea&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&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: rgb(0,0,255)"&gt;get&lt;/span&gt; { &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; (&lt;span style="color: rgb(0,0,255)"&gt;DataTemplate&lt;/span&gt;)GetValue(FooterContentAreaProperty); }&lt;br&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: rgb(0,0,255)"&gt;set&lt;/span&gt; { SetValue(FooterContentAreaProperty, &lt;span style="color: rgb(0,0,255)"&gt;value&lt;/span&gt;); }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt; The generic.xaml is straightforward. I placed ContentControls where I wanted "content zones." I named them accordingly and I bound the ContentTemplate property to the appropriate dependency property &lt;/p&gt; &lt;blockquote&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Style&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; TargetType&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="{&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;x&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Type&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; local&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;MasterPage&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;}"&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Setter&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Property&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="HeaderContentArea"&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Value&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="{&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;StaticResource&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; HeaderContent&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;}"/&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Setter&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Property&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="MainContentArea"&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Value&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="{&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;StaticResource&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; MainContent&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;}"/&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Setter&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Property&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="RightContentArea"&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Value&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="{&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;StaticResource&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; RightContent&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;}"/&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Setter&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Property&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="FooterContentArea"&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Value&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="{&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;StaticResource&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; FooterContent&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;}"/&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Setter&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Property&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="Template"&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;            &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Setter.Value&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;                &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;ControlTemplate&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; TargetType&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="{&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;x&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Type&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; local&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;MasterPage&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;}"&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;                    &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Grid&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; ShowGridLines&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="True"&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;                        &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;                            &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;ColumnDefinition&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Width&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="*"&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;ColumnDefinition&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;                            &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;ColumnDefinition&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Width&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="225"&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;ColumnDefinition&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;                        &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;                        &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Grid.RowDefinitions&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;                            &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;RowDefinition&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Height&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="50"&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;RowDefinition&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;                            &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;RowDefinition&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Height&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="*"&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;RowDefinition&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;                            &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;RowDefinition&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Height&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="25"&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;RowDefinition&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;                            &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;RowDefinition&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Height&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="25"&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;RowDefinition&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;                        &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Grid.RowDefinitions&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;                        &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;ContentControl&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Grid.Column&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="0"&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Grid.Row&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="0"&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; x&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;Name&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="HeaderContentArea"&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; ContentTemplate&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="{&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;TemplateBinding&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; HeaderContentArea&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;}"/&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;                        &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;ContentControl&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Grid.Column&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="0"&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Grid.Row&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="1"&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; x&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;Name&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="MainContentArea"&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; ContentTemplate&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="{&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;TemplateBinding&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; MainContentArea&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;}"/&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;                        &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;ContentControl&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Grid.Column&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="0"&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Grid.Row&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="2"&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; x&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;Name&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="FooterContentArea"&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; ContentTemplate&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="{&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;TemplateBinding&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; FooterContentArea&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;}"/&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;                        &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;ContentControl&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Grid.Column&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="1"&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Grid.RowSpan&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="3"&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; x&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;Name&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="RightContentArea"&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; ContentTemplate&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="{&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;TemplateBinding&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; RightContentArea&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;}"/&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;                    &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Grid&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;                &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;ControlTemplate&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;            &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Setter.Value&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Setter&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Style&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&lt;span style="color: rgb(0,0,255)"&gt;&lt;span style="color: rgb(0,0,255)"&gt;&lt;span style="color: rgb(0,0,255)"&gt;&lt;span style="color: rgb(0,0,255)"&gt;&lt;span style="color: rgb(0,0,255)"&gt;&lt;span style="color: rgb(0,0,255)"&gt;&lt;span style="color: rgb(0,0,255)"&gt;&lt;span style="color: rgb(0,0,255)"&gt;&lt;span style="color: rgb(0,0,255)"&gt;&lt;span style="color: rgb(0,0,255)"&gt;&lt;span style="color: rgb(0,0,255)"&gt;&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;font color="#000000"&gt;This allows a consumer of this control to bind any piece of content they want to the dependency property of their choice and that content will be displayed in the "content zone" defined in the generic.xaml.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;For example your Window1.xaml would look something like this&amp;nbsp; &lt;/font&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(163,21,21)"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Window.Resources&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;DataTemplate&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; x&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;Key&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="HeaderContent"&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;            &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;StackPanel&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;                &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;TextBlock&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Text&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="Header Text"/&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;                &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Rectangle&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Fill&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="Black"&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Width&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="25"&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Height&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="25"/&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;            &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;StackPanel&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;DataTemplate&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;

&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;DataTemplate&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; x&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;Key&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="RightContent"&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;            &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;StackPanel&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Grid.RowSpan&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="3"&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;                &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Rectangle&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Width&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="100"&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Height&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="50"&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Fill&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="DarkBlue"/&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;            &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;StackPanel&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;DataTemplate&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;        
    &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Window.Resources&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;   
    &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;local&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;MasterPage&lt;/span&gt; &lt;span style="color: rgb(255,0,0)"&gt; HeaderContentArea&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="{&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;StaticResource&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; HeaderContent&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;}"&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; RightContentArea&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="{&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;StaticResource&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; RightContent&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;}" /&amp;gt;
&lt;/span&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;span style="color: rgb(0,0,255)"&gt;&lt;span style="color: rgb(0,0,255)"&gt;&lt;span style="color: rgb(0,0,255)"&gt;
&lt;p&gt;&lt;font color="#000000"&gt;Pretty simple right?&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;Well what if we don't bind to all the available content zones like in the example above? With the current setup the layout elements (in this case grid rows / columns) will still be rendered but they will be empty. This may or may not be the desired behavior for your situation.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;Furthermore you don't want to build this nice layout template and still force your consumers to bind content that will be static across multiple consumers. So we want to provide default content for the content zones from within the generic.xaml. &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;Easy enough we just need to bind the content property of our zone to a static resource defined in generic.xaml right?&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;Something like this :&lt;/font&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;DataTemplate&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; x&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;Key&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="FooterContent"&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;    &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;StackPanel&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;        &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;TextBlock&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Text&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="Copyright 2007. All rights reserved"/&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;    &amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;StackPanel&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;DataTemplate&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt;&lt;span style="color: rgb(0,0,255)"&gt;  &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;ContentControl&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;Grid.Column&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;0&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;Grid.Row&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;2&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;x:Name&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;FooterContentArea&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;Content&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;{&lt;strong&gt;StaticResource FooterContent&lt;/strong&gt;}&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;/&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt;&lt;span style="color: rgb(0,0,255)"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&amp;nbsp;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;font color="#000000"&gt;This will work and will give you a distinct behavior. By doing this you are no longer binding to the dependency property defined in the control and therefore you are forcing the content zone to use the content defined in the generic.xaml. Your consumer will not be able override the content for this zone. This may or may not be the desired behavior.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;For my situation I wanted to provide default content for the different zones but I also wanted to let the consumer override the content if they wanted to. I also wanted to provide specific defaults for zones that give the user a visual cue they have not bound to a "required" content zone.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;First we defined default content for each of our zones in the generic.xaml file like this.&lt;/font&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;DataTemplate&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; x&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;Key&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="HeaderContent"&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;StackPanel&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;            &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;TextBlock&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Text&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="Header"&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; FontSize&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="15"&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; FontWeight&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="Bold"/&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;           
        &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;StackPanel&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;DataTemplate&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;

&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;DataTemplate&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; x&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;Key&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="MainContent"&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;StackPanel&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;            &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;TextBlock&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Opacity&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="0.25"&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; FontSize&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="18"&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Text&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="CONTENT ERROR! Bind content to the MainContentArea dependency property"&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; TextWrapping&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="Wrap"/&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;StackPanel&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;DataTemplate&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;

&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;DataTemplate&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; x&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;Key&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="RightContent"&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;StackPanel&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Orientation&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="Horizontal"&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;            &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;TextBlock&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Text&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="Right Text"/&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Rectangle&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Fill&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="AliceBlue"&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Width&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="25"&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Height&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="25"&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;            &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Rectangle.BitmapEffect&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;                &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;DropShadowBitmapEffect&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;/&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;            &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Rectangle.BitmapEffect&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Rectangle&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Ellipse&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Fill&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="YellowGreen"&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Width&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="25"&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Height&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="25"/&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;StackPanel&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;DataTemplate&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;

&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;DataTemplate&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; x&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;Key&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="FooterContent"&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;StackPanel&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;            &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;TextBlock&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Text&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="Copyright 2007. All rights reserved"/&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;StackPanel&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;DataTemplate&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;span style="color: rgb(0,0,255)"&gt;&lt;span style="color: rgb(0,0,255)"&gt;&lt;span style="color: rgb(0,0,255)"&gt;&lt;span style="color: rgb(0,0,255)"&gt;&lt;span style="color: rgb(0,0,255)"&gt;&lt;span style="color: rgb(0,0,255)"&gt;&lt;/blockquote&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;Then we modified our control template to use Setters to set the dependency properties to the Static Resources in our generic.xaml.&lt;/font&gt; &lt;/p&gt;
&lt;blockquote&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Style&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; TargetType&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="{&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;x&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Type&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; local&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;MasterPage&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;}"&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Setter&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Property&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="HeaderContentArea"&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Value&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="{&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;StaticResource&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; HeaderContent&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;}"/&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Setter&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Property&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="MainContentArea"&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Value&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="{&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;StaticResource&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; MainContent&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;}"/&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Setter&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Property&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="RightContentArea"&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Value&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="{&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;StaticResource&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; RightContent&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;}"/&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Setter&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Property&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="FooterContentArea"&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Value&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="{&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;StaticResource&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; FooterContent&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;}"/&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Setter&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Property&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="Template"&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;            &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Setter.Value&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;                &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;ControlTemplate&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; TargetType&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="{&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;x&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Type&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; local&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;MasterPage&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;}"&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;                    &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Grid&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; ShowGridLines&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="True"&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;                        &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;                            &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;ColumnDefinition&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Width&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="*"&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;ColumnDefinition&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;                            &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;ColumnDefinition&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Width&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="225"&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;ColumnDefinition&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;                        &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;                        &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Grid.RowDefinitions&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;                            &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;RowDefinition&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Height&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="50"&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;RowDefinition&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;                            &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;RowDefinition&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Height&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="*"&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;RowDefinition&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;                            &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;RowDefinition&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Height&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="25"&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;RowDefinition&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;                            &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;RowDefinition&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Height&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="25"&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;RowDefinition&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;                        &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Grid.RowDefinitions&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;                        &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;ContentControl&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Grid.Column&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="0"&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Grid.Row&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="0"&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; x&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;Name&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="HeaderContentArea"&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; ContentTemplate&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="{&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;TemplateBinding&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; HeaderContentArea&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;}"/&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;                        &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;ContentControl&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Grid.Column&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="0"&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Grid.Row&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="1"&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; x&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;Name&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="MainContentArea"&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; ContentTemplate&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="{&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;TemplateBinding&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; MainContentArea&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;}"/&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;                        &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;ContentControl&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Grid.Column&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="0"&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Grid.Row&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="2"&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; x&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;Name&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="FooterContentArea"&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; ContentTemplate&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="{&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;TemplateBinding&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; FooterContentArea&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;}"/&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;                        &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;ContentControl&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Grid.Column&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="1"&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Grid.RowSpan&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="3"&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; x&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;Name&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="RightContentArea"&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; ContentTemplate&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="{&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;TemplateBinding&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; RightContentArea&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;}"/&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;                    &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Grid&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;                &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;ControlTemplate&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;            &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Setter.Value&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Setter&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Style&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&lt;span style="color: rgb(0,0,255)"&gt;&lt;span style="color: rgb(0,0,255)"&gt;&lt;span style="color: rgb(0,0,255)"&gt;&lt;span style="color: rgb(0,0,255)"&gt;&lt;span style="color: rgb(0,0,255)"&gt;&lt;span style="color: rgb(0,0,255)"&gt;&lt;span style="color: rgb(0,0,255)"&gt;&lt;span style="color: rgb(0,0,255)"&gt;&lt;span style="color: rgb(0,0,255)"&gt;&lt;span style="color: rgb(0,0,255)"&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;nbsp;&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;Notice that we can now keep the content properties for each of our zones bound to the dependency properties we defined in our class. We have also set these properties with default values so if the consumer doesn't set them they will get the content we defined. This is nice because it allows us to move static content in to the custom control's generic.xaml and leaves less for the consumer to worry about.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;Another nice feature is we are able to give the user a visual error if they do not bind to a zone that we feel they should bind to. In this case I have defined a main content area and defaulted the content to a textblock that shows an error:&lt;/font&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;DataTemplate&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; x&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;:&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;Key&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="MainContent"&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;StackPanel&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;            &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;TextBlock&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Opacity&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="0.25"&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; FontSize&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="18"&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; Text&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="CONTENT ERROR! Bind content to the MainContentArea dependency property"&lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt; TextWrapping&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;="Wrap"/&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;StackPanel&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;
&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;DataTemplate&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;Right away the consumer will see the message that they forgot to bind to the content area and can quickly fix the error.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;Overall this is a pretty simple solution that gives you a nice way to share a layout across multiple pages while still allowing the individual pages to control the content. This also makes it easy to change the layout of your pages in one place. You just modify the layout of the "content zones" in the master page and all your consumer using the control will see the change.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font color="#000000"&gt;&lt;strong&gt;UPDATE:&lt;/strong&gt; You can find the sample code &lt;a href="ftp://blogs.interknowlogy.com/bradcunningham/WPFMasterPages/WPFMasterPages.zip" target="_blank"&gt;here&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;img src ="http://blogs.interknowlogy.com/bradcunningham/aggbug/22690.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Brad Cunningham</dc:creator><title>Anonymous Delegates, how do I love thee? Let me count the ways...</title><link>http://blogs.interknowlogy.com/bradcunningham/archive/2007/11/19/22664.aspx</link><pubDate>Mon, 19 Nov 2007 18:53:00 GMT</pubDate><guid>http://blogs.interknowlogy.com/bradcunningham/archive/2007/11/19/22664.aspx</guid><description>&lt;p&gt;This isn't anything new but I came across a situation recently where I was able to re-factor a seemingly trivial piece code to use an anonymous delegate and it reminded me how cool they are.&lt;/p&gt; &lt;p&gt;One great thing about generics is you can create a collection of strongly typed custom objects and iterate that collection to perform any number of operations. Often times you want to locate an item in the collection given a certain criteria.&lt;/p&gt; &lt;p&gt;I put together a simple little example to show the situation pre-generics,post generics without anonymous delegates, and post generics with anonymous delegates.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;To set the scene let's assume we have a person class defined as follows&lt;/p&gt; &lt;p&gt;&lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;class&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;Person&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt; &lt;p&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0,0,255)"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;int&lt;/span&gt; id;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0,0,255)"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; firstName = &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt;.Empty;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0,0,255)"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; lastName = &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt;.Empty;&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;int&lt;/span&gt; ID&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&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: rgb(0,0,255)"&gt;get&lt;/span&gt; { &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; id; }&lt;br&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: rgb(0,0,255)"&gt;set&lt;/span&gt; { id = &lt;span style="color: rgb(0,0,255)"&gt;value&lt;/span&gt;; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; FirstName&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&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: rgb(0,0,255)"&gt;get&lt;/span&gt; { &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; firstName; }&lt;br&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: rgb(0,0,255)"&gt;set&lt;/span&gt; { firstName = &lt;span style="color: rgb(0,0,255)"&gt;value&lt;/span&gt;; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; LastName&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&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: rgb(0,0,255)"&gt;get&lt;/span&gt; { &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; lastName; }&lt;br&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: rgb(0,0,255)"&gt;set&lt;/span&gt; { lastName = &lt;span style="color: rgb(0,0,255)"&gt;value&lt;/span&gt;; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Prior to generics you might load an ArrayList of person objects like so:&lt;/p&gt; &lt;p&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; static&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;ArrayList&lt;/span&gt; LoadPersonList()&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&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: rgb(43,145,175)"&gt;ArrayList&lt;/span&gt; list = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;ArrayList&lt;/span&gt;();&lt;br&gt;&lt;br&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: rgb(43,145,175)"&gt;Person&lt;/span&gt; Bob = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;Person&lt;/span&gt;();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bob.ID = 1;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bob.FirstName = &lt;span style="background: rgb(255,255,0)"&gt;"Bob"&lt;/span&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bob.LastName = &lt;span style="background: rgb(255,255,0)"&gt;"Smith"&lt;/span&gt;;&lt;br&gt;&lt;br&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: rgb(43,145,175)"&gt;Person&lt;/span&gt; Sally = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;Person&lt;/span&gt;();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sally.ID = 2;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sally.FirstName = &lt;span style="background: rgb(255,255,0)"&gt;"Sally"&lt;/span&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sally.LastName = &lt;span style="background: rgb(255,255,0)"&gt;"Jones"&lt;/span&gt;;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; list.Add(Bob);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; list.Add(Sally);&lt;br&gt;&lt;br&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: rgb(0,0,255)"&gt;return&lt;/span&gt; list;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p&gt;So working from this example if we wanted to find the Person record with the first name Bob we could do something like this. &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;First write a find method that searches the ArrayList for the given first name. Something like this :&lt;/p&gt; &lt;p&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; static&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;Person&lt;/span&gt; FindPersonByFirstName(&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; firstName, &lt;span style="color: rgb(43,145,175)"&gt;ArrayList&lt;/span&gt; personList)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&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: rgb(0,0,255)"&gt;foreach&lt;/span&gt; (&lt;span style="color: rgb(43,145,175)"&gt;Person&lt;/span&gt; p &lt;span style="color: rgb(0,0,255)"&gt;in&lt;/span&gt; personList)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&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 style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; (p.FirstName == firstName)&lt;br&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;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; p;&lt;br&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;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&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: rgb(0,0,255)"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;null&lt;/span&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt; &lt;p&gt;Then we call the find method and pass the FirstName "Bob":&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;span style="color: rgb(0,0,255)"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; static&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;void&lt;/span&gt; Main(&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt;[] args)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&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: rgb(43,145,175)"&gt;ArrayList&lt;/span&gt; personList = LoadPersonList();&lt;br&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: rgb(43,145,175)"&gt;Person&lt;/span&gt; bob = FindPersonByFirstName(&lt;span style="background: rgb(255,255,0)"&gt;"Bob"&lt;/span&gt;, personList);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt; &lt;p&gt;Not so bad.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;With generics we get a little better&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;First our load method now looks like this &lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0,0,255)"&gt;static&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: rgb(43,145,175)"&gt;Person&lt;/span&gt;&amp;gt; LoadPersonList()&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&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: rgb(43,145,175)"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: rgb(43,145,175)"&gt;Person&lt;/span&gt;&amp;gt; list = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: rgb(43,145,175)"&gt;Person&lt;/span&gt;&amp;gt;();&lt;br&gt;&lt;br&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: rgb(43,145,175)"&gt;Person&lt;/span&gt; Bob = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;Person&lt;/span&gt;();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bob.ID = 1;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bob.FirstName = &lt;span style="background: rgb(255,255,0)"&gt;"Bob"&lt;/span&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bob.LastName = &lt;span style="background: rgb(255,255,0)"&gt;"Smith"&lt;/span&gt;;&lt;br&gt;&lt;br&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: rgb(43,145,175)"&gt;Person&lt;/span&gt; Sally = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;Person&lt;/span&gt;();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sally.ID = 2;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sally.FirstName = &lt;span style="background: rgb(255,255,0)"&gt;"Sally"&lt;/span&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sally.LastName = &lt;span style="background: rgb(255,255,0)"&gt;"Jones"&lt;/span&gt;;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; list.Add(Bob);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; list.Add(Sally);&lt;br&gt;&lt;br&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: rgb(0,0,255)"&gt;return&lt;/span&gt; list;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;And our find method has been simplified to look like this &lt;/p&gt; &lt;p&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;static&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;bool&lt;/span&gt; FindPersonByFirstName(&lt;span style="color: rgb(43,145,175)"&gt;Person&lt;/span&gt; p)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&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: rgb(0,0,255)"&gt;if&lt;/span&gt; (p.FirstName == &lt;span style="background: rgb(255,255,0)"&gt;"Bob"&lt;/span&gt;)&lt;br&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 style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;true&lt;/span&gt;;&lt;br&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: rgb(0,0,255)"&gt;else&lt;br&gt;&lt;/span&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 style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;false&lt;/span&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;And now we use the List&amp;lt;T&amp;gt; Find method like this to locate the item in the list that we want:&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0,0,255)"&gt;static&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;void&lt;/span&gt; Main(&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt;[] args)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&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: rgb(43,145,175)"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: rgb(43,145,175)"&gt;Person&lt;/span&gt;&amp;gt; personList = LoadPersonList();&lt;br&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: rgb(43,145,175)"&gt;Person&lt;/span&gt; found = personList.Find(FindPersonByFirstName);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt; &lt;p&gt;You notice that we are now hard-coding "Bob" in the implementation of the Find method. That obviously isn't ideal. We need a better solution for passing arguments to the find method while still leveraging the generic List's built in find features (namely iterating the collection for you)&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;This is where anonymous delegates come in to play. Using the same person list we loaded above, we can eliminate our find method all together and do this instead:&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0,0,255)"&gt;static&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;void&lt;/span&gt; Main(&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt;[] args)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&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: rgb(43,145,175)"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: rgb(43,145,175)"&gt;Person&lt;/span&gt;&amp;gt; personList = LoadPersonList();&lt;br&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: rgb(43,145,175)"&gt;Person&lt;/span&gt; found = personList.Find( &lt;span style="color: rgb(0,0,255)"&gt;delegate&lt;/span&gt; (&lt;span style="color: rgb(43,145,175)"&gt;Person&lt;/span&gt; p) { &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; p.FirstName == &lt;span style="background: rgb(255,255,0)"&gt;"Bob"&lt;/span&gt;;});&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p&gt;&lt;br&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Neat huh? &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;To take it a little further if you want to be able to call a generic method passing the List and the value to search for (instead of writing the above for each time you need to find an item). You could do something like this :&lt;/p&gt; &lt;p&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; static&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;Person&lt;/span&gt; FindPersonByFirstName(&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; firstName, &lt;span style="color: rgb(43,145,175)"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: rgb(43,145,175)"&gt;Person&lt;/span&gt;&amp;gt; list)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&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: rgb(0,0,255)"&gt;return&lt;/span&gt; list.Find(&lt;span style="color: rgb(0,0,255)"&gt;delegate&lt;/span&gt;(&lt;span style="color: rgb(43,145,175)"&gt;Person&lt;/span&gt; p) { &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; p.FirstName == firstName; });&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;With this implementation of the Find method the Main method from above would like this:&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0,0,255)"&gt;static&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;void&lt;/span&gt; Main(&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt;[] args)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&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: rgb(43,145,175)"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: rgb(43,145,175)"&gt;Person&lt;/span&gt;&amp;gt; personList = LoadPersonList();&lt;br&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: rgb(43,145,175)"&gt;Person&lt;/span&gt; found = FindPersonByFirstName(&lt;span style="background: rgb(255,255,0)"&gt;"Bob"&lt;/span&gt;, personList);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;This works for all of the methods attached List&amp;lt;T&amp;gt; and will simplify the mundane task implementing the guts of the various methods (FindAll,FindLast,Exists,etc..)&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;img src ="http://blogs.interknowlogy.com/bradcunningham/aggbug/22664.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>