我需要的是一种以编程方式查找哪个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/