如何从视图模型实例化视图,即使我不想在之后立即显示它?



我想搜索几个视图的控件,但我只能访问它们的 ViewModels,因为这些视图不显示,并且没有视图的活动实例。有没有办法在代码中通过其视图模型实例化视图?我必须在一个地方实例化其中的几个,只有 VM 类型。我希望代码是通用的。

编辑 - 更具体的信息:我有很多不同的设置视图。我想搜索它们,因为现在,用户必须手动搜索 - 这意味着用户必须转到每个选项卡并查找他需要的单词。当然,我的 VM 从输入中获取数据,但我对数据不感兴趣 - 我对向用户显示的标签和文本感兴趣。

我正在使用WPF,MVVM和Caliburn.Micro。

是的,你可以做到。 您需要了解视图也是一个类,因此您只需像任何其他类一样创建一个对象,并在调用 ShowDialog 时创建。 视图中的方法调用它将显示在 UI 上

View MyView= new View();
ViewModel MyViewmodel= new ViewModel();
MyView.DataContext=MyViewmodel;

在代码的这一部分中,它将创建视图和视图模型的对象,并将 dataContext Prop 分配给您的 VM,但不显示在任何地方。

List<View> AllView= new List<View>()
AllView.Add(MyView);

在这里,我将您的视图保存在列表中。 这些可以是静态的,也可以是全局的。 每当我需要访问这些时,我都会这样做

AllView[0].ShowDialog();

我正在显示第一个视图。我想你明白了。根据通用方法,您可以检查它创建一个对象。这并不难。据我说,没有必要。

最新更新