【问题标题】:Switching between viewmodels在视图模型之间切换
【发布时间】:2013-07-31 13:06:08
【问题描述】:

我的 WPF 应用程序有 3 个模型,每个模型都有自己的视图模型和视图。

如何根据菜单选择在主窗口的这些视图之间切换?

【问题讨论】:

    标签: c# wpf mvvm


    【解决方案1】:

    切换虚拟机不是主要由于数据绑定的途径。每个页面都应该有自己的虚拟机。但这并不意味着您不能共享虚拟机。让主页虚拟机拥有彼此的虚拟机,然后在切换时将这种更改与数据绑定考虑在内。

    【讨论】:

    • 我还要补充一点,您可以使用 TabControl,每个 Page 一个 TabItem。
    【解决方案2】:

    如果您使用的是视图模型,我会假设您使用的是 MVVM。

    一种方法是为您的视图模型创建一个基类,然后在您的主视图模型或MainWindow.xaml 文件后面的代码中创建此类型的属性。不同的人会以不同的方式执行此操作,即使只是建议在后面使用您的代码,我也不会感到惊讶。

    如果所有视图模型都扩展了这个基本视图模型,那么您将能够将它们中的任何一个设置为该属性的值。您可以在App.xaml 中为每种视图模型类型设置基本的DataTemplates,它将视图连接到视图模型......同样,有几种方法可以做到这一点,但这是我的首选方式:

    <DataTemplate DataType="{x:Type ViewModels:MainViewModel}">
        <Views:MainView />
    </DataTemplate>
    <DataTemplate DataType="{x:Type ViewModels:UsersViewModel}">
        <Views:UsersView />
    </DataTemplate>
    

    然后您可以简单地将MenuItem 对象链接到此主视图模型中的Command 对象。在这些Commands 中,您可以简单地将相关视图模型设置为ViewModel 属性的值,视图将自动更新。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多