c# - UWP/C#-如何判断当前正在显示哪种类型的ViewModel

标签 c# mvvm uwp

我需要的是一种以编程方式查找哪个ViewModel(在MVVM中)对应于当前在应用程序上显示的 View 的方法。

我有一个包含通信处理程序方法的ViewModel。从外部线程调用此comm处理程序。发生这种情况时,我需要执行以下两项操作之一:如果对应于VM的 View 位于屏幕上,则需要解析消息内容并将其显示在屏幕上。如果与虚拟机相对应的 View 未显示在屏幕上,则需要存储消息以供以后使用。

例如,如果我有一个DisplayPage.xaml和一个DisplayPageViewModel.cs,并且该应用当前正在显示DisplayPage的内容,那么我想要类似于以下代码的内容来完成特定任务。

if (<code to find VM type here> == typeof(DisplayPageViewModel)){
    //do viewmodel specific task
}

但是,如果应用当前正在显示MainPage.xaml,则我不希望代码运行。

最佳答案

您可以使用is关键字检查类型。您可以使用DataContext属性来获取DataContext :-)

public class ViewModelOne{

}

public class ViewModelTwo{

}


public class MasterClass : Control{

    public void CheckViewModel(){
         if(this.DataContext is ViewModelOne){

         }
         else if(this.DataContext is ViewModelTwo){

         }
    }

}

关于c# - UWP/C#-如何判断当前正在显示哪种类型的ViewModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38399777/

相关文章:

c# - 无法从方法组转换为对象移植 WFP => UWP

c# - UWP 设置 NavigationView TogglePaneButton 颜色

WPF MVVM : Add item not present in combobox

c# - 使用模板列从数据网格中获取选定的单元格

c# - 按下 ENTER 键后提交表格

c# - c#中的换行符

wpf - 将 View 模型放在资源字典中是否正确?

tfs - 不包含在 VSTS 中的引用

c# - 如何向 Internet Explorer 添加自定义工具栏按钮?

c# - 如何确定文件是否在 SSH.NET 中完成下载