C# 如何在WPF中单击menuitem时动态加载表单?

C# 如何在WPF中单击menuitem时动态加载表单?,c#,wpf,xaml,C#,Wpf,Xaml,我正在学习使用菜单项创建wpf应用程序,单击菜单项a 新表单/一组文本框和按钮应显示在下面 Mainwindow.xaml:这是放置菜单项的窗口 <TabItem Header="IB Review Information"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="*"/> <

我正在学习使用菜单项创建wpf应用程序,单击菜单项a 新表单/一组文本框和按钮应显示在下面

Mainwindow.xaml:这是放置菜单项的窗口

<TabItem   Header="IB Review Information">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition  Height="*"/>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>
            <uc:IBReview  />
        </Grid>
    </TabItem>
xamluc:IBReview:这是包含菜单数据的menuitem usercontrol。此usercontrol将放在mainwindow.xaml下

<Grid>
<DockPanel>
    <Menu DockPanel.Dock="Top">
        <MenuItem Header="_File">
            <MenuItem Header="_Exit" />
        </MenuItem>
        <MenuItem Header="_Tools">
            <MenuItem Header="_Manage users">
            </MenuItem>
            <MenuItem Header="_Show groups" IsCheckable="True" IsChecked="True" />
        </MenuItem>
    </Menu>
</DockPanel>

    <Grid>
现在我已经用menuitem构建了窗口。在此之后,我不知道如何在每个菜单项下构造一个类似表单的应用程序。我不知道是使用页面、窗口还是用户控件

我尝试使用usercontrol构建表单,但当我尝试加载到主窗口时,它无法正常工作

   <Grid>
        <Grid.RowDefinitions>
            <RowDefinition  Height="*"/>
                <RowDefinition  Height="*"/>
            </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
               <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>
    <TextBlock Grid.Row="0" Text="claimid" />
    <TextBox Grid.Row="1" Grid.Column="2"  Width="50" TextAlignment="Center" HorizontalAlignment="Center" VerticalAlignment="Center" Height="50" Text="ram"/>
    <TextBox Grid.Column="2"  Width="50" TextAlignment="Center" HorizontalAlignment="Center" VerticalAlignment="Center" Height="50" Text="ram"/>
    <TextBlock Grid.Row="0" Text="claimdata" />
</Grid>
1在单击菜单项时使用新窗口、页面或用户控件的正确方法是什么


2我试图在mvvm中实现这一点,非常感谢任何链接或简单示例。我完全不知道如何实现这一点。

有一些方法可以实现您的目标,如果我理解的话,您需要在发生某些事情时更改主窗口内容,例如当用户在菜单中选择某个内容时

您可以使用from Prism库,该库将提供对导航的所有支持、在视图和视图模型之间共享参数、导航历史记录等

可以使用更改ContentControl的内容,方法是使用一个类,该类具有返回右视图实例的方法,具体取决于c代码。这是最简单的一个,从一开始我建议您使用它,稍后您可以重构代码以实现Prism库

或者,您甚至可以使用和属性,就像我制作的样本一样。这甚至更简单…该示例还实现了模板选择器,如果您需要应用一些c代码来决定一个可能更好

Prism库是实现MVVM的一个完整框架,如果您还不知道,请看一看

我已经创建了两个关于这三种方法的简单示例,这是一个应用程序,当用户更改菜单时,cat图片将发生变化,每个图片位于不同的视图/视图模型中


谢谢你的辛勤工作。您开发的示例应用程序正是我所期望的。没问题。我知道一开始很难适应wpf+mvvm。如果您需要更多信息,请随时通过邮件联系我。。。