Introduction

This article shows a way of creating MasterPage-like functionality in WPF with 15 lines of code.

Background

One of the great things in .NET 2.0 was MasterPage. Unfortunately, MasterPage no longer exists in WPF. I have seen a lot of different approaches to achieving ASP.NET MasterPage-like functionality in WPF, with varying levels of complexity. I was not satisfied with any of the techniques and therefore came up with my own approach.

Solution

My solution is Frame. Frames can be used as a kind of content placeholder. "Ding". Surely that must ring a bell.

Using the Code

The sample code was written in C# using Visual Studio 2008 IDE. All the relevant code is in StartPage.xaml and should be self-explanatory. I will summarize the code shown below. You use a DockPanel for your MasterPage layouter. Then you add a first Frame and dock it to the top. Add a second Frame and dock it to the bottom, then add a StackPanel for your navigation (or whatever layout control you fancy) and dock it to the left or right. Finally add a Frame that will contain your content pages. The trick is to set the Source property of that Frame to a Page.