在视图模型之间切换

时间:2013-07-31 13:06:08

标签: c# wpf mvvm

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

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

2 个答案:

答案 0 :(得分:2)

切换虚拟机不是主要由于数据绑定而导致的路径。每个页面都应该有自己的VM。这并不意味着你不能共享虚拟机。让主页面VM具有彼此的VM,然后在切换时,将该更改与数据绑定一起考虑。

答案 1 :(得分:2)

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

一种方法是为视图模型创建基类,然后在主视图模型中创建此类型的属性,或者在MainWindow.xaml文件后面创建代码。不同的人会以不同的方式做到这一点,即使只是建议使用你的代码,我也不会感到惊讶。无论哪种方式,它都取决于你所说的。< / p>

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

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

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