Gregory,
I don't know if you have received an answer for this yet, but I will attempt to here:
You will want to create a custom control and derive this control from the Page object as follows:
namespace Lotamor.Intranet.Controls
{
public class NavPage : Page
{
static NavPage()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(NavPage),
new FrameworkPropertyMetadata(typeof(NavPage)));
}
}
}
For this example, I will not get into much more for the control code.
The following is a complete XAML for this control.
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Lotamor.Intranet.Controls">
<Style TargetType="{x:Type local:NavPage}"
BasedOn="{StaticResource {x:Type Page}}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:NavPage}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<ContentPresenter Grid.Row="0" Grid.Column="0"/>
<ItemsControl Grid.Row="0" Grid.Column="1" Margin="10">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel
Orientation="Vertical"
Margin="10"
VerticalAlignment="Top"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<Button Margin="10" Width="120" Height="36"
Content="Right Button One"/>
<Button Margin="10" Width="120" Height="36"
Content="Right Button Two"/>
<Button Margin="10" Width="120" Height="36"
Content="Right Button Three"/>
<Button Margin="10" Width="120" Height="36"
Content="Right Button Four"/>
</ItemsControl>
<ItemsControl Grid.Row="1" Grid.Column="0"
Grid.ColumnSpan="2" Margin="10">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal"
ItemWidth="220" ItemHeight="40"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<Button Margin="10,0" Width="200" Height="36"
Content="Bottom Button One"/>
<Button Margin="10,0" Width="200" Height="36"
Content="Bottom Button Two"/>
<Button Margin="10,0" Width="200" Height="36"
Content="Bottom Button Three"/>
<Button Margin="10,0" Width="200" Height="36"
Content="Bottom Button Four"/>
<Button Margin="10,0" Width="200" Height="36"
Content="Bottom Button Five"/>
<Button Margin="10,0" Width="200" Height="36"
Content="Bottom Button Six"/>
</ItemsControl>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
The grid divides up the page into 4 sections.
In the first row (0) and column (0) is where your content of you page will be.
<Canvas>
...Welcome page stuff...
</Canvas>
See:
<ContentPresenter/>
At row(0) and column(1) is a button button pannel.
At row(1) spanning both columns is a footer.
This should demonstrate the "Master" page for your WPF (browser) application.
I find it to work well.
Cheers,
Jim