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,我不希望代码运行。
您可以使用 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){
}
}
}