我想搜索一些视图的控件,但是我只能访问它们的ViewModel,因为这些视图没有显示,并且没有该视图的活动实例。 有没有办法通过代码中的ViewModel实例化View?我必须在一处实例化其中几个实例,而只有VM类型。 我希望代码是通用的。
编辑-更具体的信息: 我有很多不同的设置视图。我要搜索它们,因为现在用户必须手动搜索-这意味着用户必须转到每个选项卡并查找他需要的单词。 我的VM当然是从输入中获取数据,但是我对数据不感兴趣-我对显示给用户的标签和文本感兴趣。
我正在使用WPF,MVVM和Caliburn.Micro。
答案 0 :(得分:0)
是的,您可以做到。您需要了解视图也是一个类,因此您只需要像调用其他任何类一样在调用ShowDialog时创建一个对象即可。视图调用中的方法将显示在UI上
View MyView= new View();
ViewModel MyViewmodel= new ViewModel();
MyView.DataContext=MyViewmodel;
在这部分代码中,它将创建View和ViewModel的对象,并将dataContext Prop分配给您的Vm,但不显示在任何地方。
List<View> AllView= new List<View>()
AllView.Add(MyView);
我在这里将您的视图保存在列表中。这些可以是静态的也可以是全局的。并且每当我需要访问这些文件时,我都会这样做
AllView[0].ShowDialog();
我正在显示第一个视图。我想你有主意。按照通用方法,您可以检查它是否创建了一个对象。这并不难。按照我的看法,这不是必须的。