在视图模型之间切换

本文关键字:之间 模型 视图 | 更新日期: 2023-09-27 18:25:35

我的WPF应用程序有3个模型,每个模型都有自己的视图模型&看法

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

在视图模型之间切换

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

如果您正在使用视图模型,我将假设您正在使用MVVM。

一种方法是为视图模型创建基类,然后在主视图模型或MainWindow.xaml文件的代码隐藏中创建此类型的属性。不同的人会用不同的方式来做这件事,即使只是建议在背后使用你的代码,我也不会惊讶地看到负面评论。。。无论哪种方式,都取决于你把它放在哪里。

如果所有视图模型都扩展了此基本视图模型,则可以将其中任何一个设置为此属性的值。您可以在App.xaml中为每个视图模型类型设置基本的DataTemplate,它将视图连接到视图模型。。。同样,有几种方法可以做到这一点,但这是我喜欢的方法:

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

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