C# 如何使用MVVM模式从视图模型调用视图?

C# 如何使用MVVM模式从视图模型调用视图?,c#,wpf,mvvm,C#,Wpf,Mvvm,我有两个视图模型A和B。双击视图A,我需要显示视图B。 如何使用MVVM模式从视图模型a调用视图B 我环顾四周,找不到一个清晰的例子来说明MVVM模式的基本概念 c# 好的,这里有一个简单的方法(假设您已经正确地实现了INotifyPropertyChanged): 转到App.xaml并声明一些数据模板以将视图与ViewModels连接起来: <DataTemplate DataType="{x:Type ViewModels:ViewModelA}"> <Views

我有两个视图模型A和B。双击视图A,我需要显示视图B。 如何使用
MVVM
模式从视图模型a调用视图B

我环顾四周,找不到一个清晰的例子来说明
MVVM
模式的基本概念

c#
好的,这里有一个简单的方法(假设您已经正确地实现了INotifyPropertyChanged):

转到App.xaml并声明一些数据模板以将视图与ViewModels连接起来:

<DataTemplate DataType="{x:Type ViewModels:ViewModelA}">
    <Views:ViewA />
</DataTemplate>
<DataTemplate DataType="{x:Type ViewModels:ViewModelB}">
    <Views:ViewB />
</DataTemplate>
好了,就这样。ContentControl的ViewModel绑定以及DataTemplates将完成这项工作!
当然,有很多不同的方法可以做到这一点。这将取决于你的要求。我目前正在使用NavigationService在我的一个项目中处理这个问题

你搜索过导航吗@不,我没有看到这个链接。请把它作为答案贴出来。谢谢:)场外链接不构成stackoverflow的有效答案。答案必须是自包含的。您应该将ViewModel视为应用程序的当前状态。其曲面特征包含来自外部世界的访问点(ICommand属性)。视图通过这些访问端口将用户输入导入视图模型。ViewModel的曲面还包含应用程序当前状态的表达式(所有其他属性)。视图观察ViewModel的状态更改,并根据需要作出反应。这通常采用更新UI的形式,但也可以采用显示不同视图的形式。这可以通过许多不同的方式实现。。。
<DataTemplate DataType="{x:Type ViewModels:ViewModelA}">
    <Views:ViewA />
</DataTemplate>
<DataTemplate DataType="{x:Type ViewModels:ViewModelB}">
    <Views:ViewB />
</DataTemplate>
<ContentControl Content="{Binding ViewModel}" />
//Need to call view B  
private void OnShowInfo(object obj)
{
    ViewModel = new ViewModelB();
}