C# WPF主窗口以显示其他页面

C# WPF主窗口以显示其他页面,c#,wpf,xaml,C#,Wpf,Xaml,我正在尝试创建一个主窗口,该窗口将有一个用于导航/按钮的页眉和一个用于显示信息的页脚。 (类似于StackOverflow.com上的顶部和底部栏) 使主窗口作为一个可以显示页眉/页脚之间任何页面的容器运行的最佳方法是什么?创建一个包含3行的页面。顶行的高度为“自动”,中间行的高度为“*”,底行的高度也为“自动”。顶行和底行将占据页眉和页脚所需的空间,中间行将占据房间的其余部分。您可以使用网格 <Grid > <Grid.RowDefinitions>

我正在尝试创建一个主窗口,该窗口将有一个用于导航/按钮的页眉和一个用于显示信息的页脚。 (类似于StackOverflow.com上的顶部和底部栏)


使主窗口作为一个可以显示页眉/页脚之间任何页面的容器运行的最佳方法是什么?

创建一个包含3行的页面。顶行的高度为“自动”,中间行的高度为“*”,底行的高度也为“自动”。顶行和底行将占据页眉和页脚所需的空间,中间行将占据房间的其余部分。

您可以使用网格

<Grid >
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>
 <local:TopPage Grid.Column="0" Grid.Row="0" />
 <local:MidPage Grid.Column="0" Grid.Row="1" />
 <local:BottomPage Grid.Column="0" Grid.Row="2" />
 </Grid>

我将创建一个3行
网格
,中心项为
内容控件
。将其绑定到视图模型上的
CurrentPage
属性

创建一个基本
页面
类,并为要显示的每页数据创建子类。该子类也是每个页面的viewmodel

ContentControl
要使用的
Page
的每个子类添加
DataTemplate
,确保指定
Type
属性(这是基于
CurrentPage
属性将页面类型物理附加到UI的内容)。
DataTemplate
的内容应该是一个
UserControl
,其中包含每种页面类型的UI

现在,当您想要更改页面时,只需将CurrentPage设置为所需页面的实例,它就会自动更改


此模式将使每个页面的UI与其他页面分开,并为它们提供一个强大的视图模型(
页面
子类)。它允许超级轻松地更改页面。并且很好地遵循MVVM模式。您甚至可以将所有页面加载到显示给用户的列表中。再加上一点绑定,用户选择页面时只需很少的工作就可以直接进入页面更改行为。

当我遇到这个问题时,我们使用了带有隐藏选项卡的大
TabControl