我继承了WPF Prism应用程序,我很难看到viewmodel如何链接到各自的视图(xaml)。有时后面的视图代码将DataContext设置为正确的viewmodel,但我正在处理的应用程序没有在后面的代码中设置它。在Prism应用程序中还可以设置哪些其他内容?
答案 0 :(得分:2)
使用Prism,可以自动为您设置视图模型。通常在视图中设置AutoWireViewModel = True属性。其余的按惯例完成。 Prism查找符合特定命名约定的任何ViewModel。默认命名约定是视图的YouPage和视图模型的YouPageViewModel。
可以在引导程序中更改视图模型约定,通常是app.xaml.cs文件。使用ViewModelLocator,您可以自定义命名约定。大多数人只是将其保留为默认值。
如果设置正确,视图模型所需的任何构造函数参数也将使用某种形式的IoC容器自动传递给它们。像Autofac,Unity或Ninject之类的东西。这也将在引导程序中配置。
答案 1 :(得分:0)
可以从Xaml,Behind Code或View Model Locator进行设置。
使用XAML创建视图模型
也许最简单的方法是视图以声明方式 在XAML中实例化其对应的视图模型。当视图是 构造后,相应的视图模型对象也将是 建造。您还可以在XAML中指定要设置的视图模型 作为视图的数据上下文。
以编程方式创建视图模型
另一种方法是视图实例化其相应的视图 以编程方式在其构造函数中建模实例。然后它可以设置它 作为其数据上下文,如以下代码示例所示。
使用视图模型定位器创建视图模型
创建视图模型实例并将其与其关联的另一种方法 视图是使用视图模型定位器。