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

本文关键字:显示 视图 类型 模型 判断 何判断 UWP | 更新日期: 2023-09-27 17:57:11

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

我有一个包含通信处理程序方法的视图模型。 此通信处理程序是从外部线程调用的。 发生这种情况时,我需要执行以下两项操作之一:如果屏幕上显示与 VM 对应的视图,则需要分析消息内容并将其显示在屏幕上。 如果屏幕上没有与 VM 对应的视图,则需要存储消息以供以后使用。

例如,如果我有一个 DisplayPage.xaml 和一个 DisplayPageViewModel.cs,并且该应用程序当前正在显示 DisplayPage 的内容,我希望类似于下面的代码才能完成特定任务。

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

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

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

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