【问题标题】:wpf and prism: where is link between view and viewmodelwpf和棱镜:视图和视图模型之间的链接在哪里
【发布时间】:2014-07-19 04:23:27
【问题描述】:

我继承了一个 WPF Prism 应用程序,但我很难看到视图模型如何链接到它们各自的视图 (xaml)。有时,后面的视图代码会将 DataContext 设置为正确的视图模型,但我正在处理的应用程序并没有在后面的代码中设置它。在 Prism 应用程序中还能在哪里设置?

【问题讨论】:

    标签: wpf mvvm prism


    【解决方案1】:

    使用 Prism,视图模型会为您自动设置。视图中通常设置了 AutoWireViewModel=True 属性。其余的按惯例完成。 Prism 会寻找任何符合特定命名约定的 ViewModel。默认命名约定是视图的 YouPage 和视图模型的 YouPageViewModel。

    可以在引导程序(通常是 app.xaml.cs 文件)中更改视图模型约定。使用 ViewModelLocator,您可以自定义命名约定。大多数人只是将其保留为默认值。

    如果设置正确,视图模型所需的任何构造函数参数也将使用某种形式的 IoC 容器自动传递给它们。 Autofac、Unity 或 Ninject 之类的东西。这也将在引导程序中进行配置。

    【讨论】:

      【解决方案2】:

      可以通过 Xaml、Behind Code 或 View Model Locator 进行设置。

      使用 XAML 创建视图模型

      也许最简单的方法是让视图以声明方式 在 XAML 中实例化其对应的视图模型。当视图是 构造,相应的视图模型对象也将是 建造。您还可以在 XAML 中指定设置视图模型 作为视图的数据上下文。

      以编程方式创建视图模型

      另一种方法是让视图实例化其对应的视图 以编程方式在其构造函数中建模实例。然后它可以设置它 作为其数据上下文,如下代码示例所示。

      使用视图模型定位器创建视图模型

      另一种创建视图模型实例并将其与其关联的方法 视图是使用视图模型定位器。

      这里是documentation

      【讨论】:

        猜你喜欢
        • 2020-10-03
        • 2019-06-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-18
        • 1970-01-01
        • 1970-01-01
        • 2012-07-29
        相关资源
        最近更新 更多