<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>WPF</title><link>http://blogs.interknowlogy.com/bradcunningham/category/169.aspx</link><description>WPF</description><dc:language>en-US</dc:language><generator>.Text Version 0.95.2004.111</generator><item><dc:creator>Brad Cunningham</dc:creator><title>WPFPerf and software rendering</title><link>http://blogs.interknowlogy.com/bradcunningham/archive/2008/05/09/23947.aspx</link><pubDate>Fri, 09 May 2008 14:37:00 GMT</pubDate><guid>http://blogs.interknowlogy.com/bradcunningham/archive/2008/05/09/23947.aspx</guid><wfw:comment>http://blogs.interknowlogy.com/bradcunningham/comments/23947.aspx</wfw:comment><comments>http://blogs.interknowlogy.com/bradcunningham/archive/2008/05/09/23947.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.interknowlogy.com/bradcunningham/comments/commentRss/23947.aspx</wfw:commentRss><trackback:ping>http://blogs.interknowlogy.com/bradcunningham/services/trackbacks/23947.aspx</trackback:ping><description>&lt;p&gt;The WPFPerf tool that is included with the windows SDK can be a very useful tool in finding areas of your application that is being rendered using the WPF software pipeline. &lt;/p&gt; &lt;p&gt;Recently I was profiling an application looking for areas that could be improved, performance wise, at the WPF level. One thing I thought to do was use the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=F26B1AA4-741A-433A-9BE5-FA919850BDBF&amp;amp;displaylang=en" target="_blank"&gt;WPFPerf&lt;/a&gt; tool and look for elements that were being software rendered and see if I could modify them to use the hardware pipeline and still get desired effect. See &lt;a href="http://msdn.microsoft.com/en-us/library/bb613578.aspx" target="_blank"&gt;here&lt;/a&gt; for more information on the two pipelines.&lt;/p&gt; &lt;p&gt;To find the areas that are using software rendering the &lt;a href="http://msdn.microsoft.com/en-us/library/aa969767.aspx" target="_blank"&gt;Perfortator&lt;/a&gt; plug-in gives a nice, albeit cheesy, visual cue. By enabling "Draw software rendering with purple tint"&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.interknowlogy.com/downloads/bradcunningham/blogimages/WPFPerfandsoftwarerendering_CD88/Purple.gif"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="188" alt="Purple" src="http://blogs.interknowlogy.com/downloads/bradcunningham/blogimages/WPFPerfandsoftwarerendering_CD88/Purple_thumb.gif" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Come on guys, really? Is that really what the option is called? I wonder what the property is called in code ShowSoftwareRenderingUsingPurpleShadeBecauseMyKidWasWatchingBarneyWhileIWasWritingThisFuction.&lt;/p&gt; &lt;p&gt;But I digress, The functionality works well.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;a href="http://blogs.interknowlogy.com/downloads/bradcunningham/blogimages/WPFPerfandsoftwarerendering_CD88/FullApp.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="271" alt="FullApp" src="http://blogs.interknowlogy.com/downloads/bradcunningham/blogimages/WPFPerfandsoftwarerendering_CD88/FullApp_thumb.jpg" width="476" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;So a discovery I made was that WPF is able to use the hardware rendering pipeline to render bitmap drop shadows (which is typically documented as being software rendered) but only if the drop shadow is rectangular. In my case I had a button template that was using a border element ad applying a drop shadow to the border element to give the drop shadow effect on the button&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.interknowlogy.com/downloads/bradcunningham/blogimages/WPFPerfandsoftwarerendering_CD88/SoftwareRender.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="55" alt="SoftwareRender" src="http://blogs.interknowlogy.com/downloads/bradcunningham/blogimages/WPFPerfandsoftwarerendering_CD88/SoftwareRender_thumb.jpg" width="557" border="0"&gt;&lt;/a&gt; &lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Style &lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Key&lt;/span&gt;&lt;span style="color: blue"&gt;="SoftwareRenderTemplate"&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Setter &lt;/span&gt;&lt;span style="color: red"&gt;Property&lt;/span&gt;&lt;span style="color: blue"&gt;="Control.Template"&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Setter.Value&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ControlTemplate &lt;/span&gt;&lt;span style="color: red"&gt;TargetType&lt;/span&gt;&lt;span style="color: blue"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;Type &lt;/span&gt;&lt;span style="color: red"&gt;Button&lt;/span&gt;&lt;span style="color: blue"&gt;}"&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid &lt;/span&gt;&lt;span style="color: red"&gt;Height&lt;/span&gt;&lt;span style="color: blue"&gt;="22"&amp;gt;
                            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Border &lt;/span&gt;&lt;span style="color: red"&gt;Background&lt;/span&gt;&lt;span style="color: blue"&gt;="Gray" &lt;/span&gt;&lt;span style="color: red"&gt;Height&lt;/span&gt;&lt;span style="color: blue"&gt;="22" &lt;/span&gt;&lt;span style="color: red"&gt;Margin&lt;/span&gt;&lt;span style="color: blue"&gt;="0,0,0,0"&amp;gt;
                                &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Border.BitmapEffect&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
                                    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;DropShadowBitmapEffect &lt;/span&gt;&lt;span style="color: red"&gt;Opacity&lt;/span&gt;&lt;span style="color: blue"&gt;="0.5" &lt;/span&gt;&lt;span style="color: red"&gt;ShadowDepth&lt;/span&gt;&lt;span style="color: blue"&gt;="3" &lt;/span&gt;&lt;span style="color: red"&gt;Softness&lt;/span&gt;&lt;span style="color: blue"&gt;="0.285"/&amp;gt;
                                &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Border.BitmapEffect&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
                                &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ContentPresenter &lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;="ButtonContent" &lt;/span&gt;&lt;span style="color: red"&gt;Width&lt;/span&gt;&lt;span style="color: blue"&gt;="Auto" &lt;/span&gt;&lt;span style="color: red"&gt;Content&lt;/span&gt;&lt;span style="color: blue"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515"&gt;TemplateBinding &lt;/span&gt;&lt;span style="color: red"&gt;Content&lt;/span&gt;&lt;span style="color: blue"&gt;}" &lt;/span&gt;&lt;span style="color: red"&gt;OpacityMask&lt;/span&gt;&lt;span style="color: blue"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515"&gt;TemplateBinding &lt;/span&gt;&lt;span style="color: red"&gt;Foreground&lt;/span&gt;&lt;span style="color: blue"&gt;}" &lt;/span&gt;&lt;span style="color: red"&gt;HorizontalAlignment&lt;/span&gt;&lt;span style="color: blue"&gt;="Center" &lt;/span&gt;&lt;span style="color: red"&gt;VerticalAlignment&lt;/span&gt;&lt;span style="color: blue"&gt;="Center" &lt;/span&gt;&lt;span style="color: red"&gt;Height&lt;/span&gt;&lt;span style="color: blue"&gt;="Auto" &lt;/span&gt;&lt;span style="color: red"&gt;Margin&lt;/span&gt;&lt;span style="color: blue"&gt;="10,0,10,0"/&amp;gt;
                            &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Border&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
                        &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
                    &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ControlTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
                &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Setter.Value&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Setter&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Style&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;When I built the template this way and ran Perforator it showed me that the button was using software rendering. Which is what I would have expected. However, if I modify the template to use a rectangle shape instead of a border element. Then apply the drop shadow effect to the the rectangle I noticed that Perforator no longer indicated (which means to remove the lovely purple tint) that the button was using software rendering. This is not what I would have expected. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Style &lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Key&lt;/span&gt;&lt;span style="color: blue"&gt;="HardwareRenderTemplate"&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Setter &lt;/span&gt;&lt;span style="color: red"&gt;Property&lt;/span&gt;&lt;span style="color: blue"&gt;="Control.Template"&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Setter.Value&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ControlTemplate &lt;/span&gt;&lt;span style="color: red"&gt;TargetType&lt;/span&gt;&lt;span style="color: blue"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;Type &lt;/span&gt;&lt;span style="color: red"&gt;Button&lt;/span&gt;&lt;span style="color: blue"&gt;}"&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid &lt;/span&gt;&lt;span style="color: red"&gt;Height&lt;/span&gt;&lt;span style="color: blue"&gt;="22"&amp;gt;
                            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Rectangle &lt;/span&gt;&lt;span style="color: red"&gt;Fill&lt;/span&gt;&lt;span style="color: blue"&gt;="Gray" &lt;/span&gt;&lt;span style="color: red"&gt;Height&lt;/span&gt;&lt;span style="color: blue"&gt;="22" &lt;/span&gt;&lt;span style="color: red"&gt;Margin&lt;/span&gt;&lt;span style="color: blue"&gt;="0,0,0,0" &lt;/span&gt;&lt;span style="color: red"&gt;Stroke&lt;/span&gt;&lt;span style="color: blue"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;Null&lt;/span&gt;&lt;span style="color: blue"&gt;}"&amp;gt;
                                &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Rectangle.BitmapEffect&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
                                    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;DropShadowBitmapEffect &lt;/span&gt;&lt;span style="color: red"&gt;Opacity&lt;/span&gt;&lt;span style="color: blue"&gt;="0.5" &lt;/span&gt;&lt;span style="color: red"&gt;ShadowDepth&lt;/span&gt;&lt;span style="color: blue"&gt;="3" &lt;/span&gt;&lt;span style="color: red"&gt;Softness&lt;/span&gt;&lt;span style="color: blue"&gt;="0.285"/&amp;gt;
                                &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Rectangle.BitmapEffect&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
                            &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Rectangle&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
                            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ContentPresenter &lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;="ButtonContent" &lt;/span&gt;&lt;span style="color: red"&gt;Width&lt;/span&gt;&lt;span style="color: blue"&gt;="Auto" &lt;/span&gt;&lt;span style="color: red"&gt;Content&lt;/span&gt;&lt;span style="color: blue"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515"&gt;TemplateBinding &lt;/span&gt;&lt;span style="color: red"&gt;Content&lt;/span&gt;&lt;span style="color: blue"&gt;}" &lt;/span&gt;&lt;span style="color: red"&gt;OpacityMask&lt;/span&gt;&lt;span style="color: blue"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515"&gt;TemplateBinding &lt;/span&gt;&lt;span style="color: red"&gt;Foreground&lt;/span&gt;&lt;span style="color: blue"&gt;}" &lt;/span&gt;&lt;span style="color: red"&gt;HorizontalAlignment&lt;/span&gt;&lt;span style="color: blue"&gt;="Center" &lt;/span&gt;&lt;span style="color: red"&gt;VerticalAlignment&lt;/span&gt;&lt;span style="color: blue"&gt;="Center" &lt;/span&gt;&lt;span style="color: red"&gt;Height&lt;/span&gt;&lt;span style="color: blue"&gt;="Auto" &lt;/span&gt;&lt;span style="color: red"&gt;Margin&lt;/span&gt;&lt;span style="color: blue"&gt;="10,0,10,0"/&amp;gt;
                        &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
                    &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ControlTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
                &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Setter.Value&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Setter&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Style&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&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;a href="http://blogs.interknowlogy.com/downloads/bradcunningham/blogimages/WPFPerfandsoftwarerendering_CD88/HardwareRender.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="50" alt="HardwareRender" src="http://blogs.interknowlogy.com/downloads/bradcunningham/blogimages/WPFPerfandsoftwarerendering_CD88/HardwareRender_thumb.jpg" width="526" border="0"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I searched around a bit to try and determine what was going on here and the information is sparse (hence my blog entry) But I did find &lt;a href="http://www.designerwpf.com/2008/02/08/wpf-drop-shadows-on-the-cheap/" target="_blank"&gt;one source&lt;/a&gt; that hints to the fact that the underlying implementation of the drop shadow effect is optimized when sticking to rectangular shapes. &lt;/p&gt;
&lt;p&gt;So there it is. If you really like drop shadows but don't want to get hammered by the performance this is one way to do it. &lt;/p&gt;&lt;img src ="http://blogs.interknowlogy.com/bradcunningham/aggbug/23947.aspx" width = "1" height = "1" /&gt;</description></item><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><wfw:comment>http://blogs.interknowlogy.com/bradcunningham/comments/22901.aspx</wfw:comment><comments>http://blogs.interknowlogy.com/bradcunningham/archive/2007/12/20/22901.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.interknowlogy.com/bradcunningham/comments/commentRss/22901.aspx</wfw:commentRss><trackback:ping>http://blogs.interknowlogy.com/bradcunningham/services/trackbacks/22901.aspx</trackback:ping><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><wfw:comment>http://blogs.interknowlogy.com/bradcunningham/comments/22690.aspx</wfw:comment><comments>http://blogs.interknowlogy.com/bradcunningham/archive/2007/11/21/22690.aspx#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blogs.interknowlogy.com/bradcunningham/comments/commentRss/22690.aspx</wfw:commentRss><trackback:ping>http://blogs.interknowlogy.com/bradcunningham/services/trackbacks/22690.aspx</trackback:ping><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></channel></rss>