我有两个视图模型A和B.双击视图A我需要显示视图B.
如何使用MVVM
模式从模型A中调用视图B?
我环顾四周,找不到一个明确的例子来证明MVVM
模式的这个基本概念。
using Microsoft.Practices.Prism.Commands;
using Microsoft.Practices.Prism.Mvvm;
using System.Windows.Input;
namespace Example.ViewModels
{
public class ViewModelA : BindableBase
{
public ICommand ShowInfoCommand { get; private set; }
//Need to call view B
private void OnShowInfo(object obj)
{
//To Be Implemented
}
}
}
答案 0 :(得分:1)
嗯,这是一个简单的方法(假设您已正确实现了INotifyPropertyChanged):
转到App.xaml并声明一些DataTemplates以将Views与ViewModels连接:
<DataTemplate DataType="{x:Type ViewModels:ViewModelA}">
<Views:ViewA />
</DataTemplate>
<DataTemplate DataType="{x:Type ViewModels:ViewModelB}">
<Views:ViewB />
</DataTemplate>
现在,只要您的应用程序使用ViewModelA或ViewModelB,这些DataTemplates就会设置正确的视图。 您可以使用内容演示者或内容控件来控制要显示的视图模型:
<ContentControl Content="{Binding ViewModel}" />
然后,只要您想更改视图,就会设置ViewModel:
//Need to call view B
private void OnShowInfo(object obj)
{
ViewModel = new ViewModelB();
}
嗯,就是这样。 ContentControl与DataTemplates的ViewModel绑定将完成工作! 当然,有很多不同的方法可以做到这一点。这取决于您的要求。我目前正在使用NavigationService在我的一个项目中处理这个问题。