UWP / C# - 如何判断当前显示的ViewModel类型

时间:2016-07-15 15:22:02

标签: c# mvvm uwp

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

我有一个包含comm处理程序方法的ViewModel。从外部线程调用此comm处理程序。发生这种情况时,我需要做两件事之一:如果屏幕上有与VM对应的视图,我需要解析并将消息内容显示在屏幕上。如果屏幕上没有与VM对应的视图,我需要存储该消息以供日后使用。

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

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

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

1 个答案:

答案 0 :(得分:3)

您可以使用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){

         }
    }

}