UWP Prism UWP视图模型

时间:2019-01-17 18:36:15

标签: c# xaml uwp prism

我一直在使用Prism的Viewmodel定位器通过棱镜命名约定实例化我的视图模型。我一直不了解,因为我已经创建了一个用户控件,并拥有自己的视图模型,并使用Prism Event Aggregator与其他视图模型进行了通信,效果很好但我想创建此用户控件的其他实例。使用事件聚合器,用户控件的所有实例显然都订阅​​了已发布的事件,因此:

  1. 如何区分要定位的实际用户控件。
  2. 如何在不使用viewmodel定位器的情况下实例化视图模型并定位视图数据上下文?

1 个答案:

答案 0 :(得分:0)

我所做的是在用户控件中创建一个名为vmType的依赖项属性。

    public string vmType
    {
        get { return (string)GetValue(vmTypeProperty); }
        set { SetValue(vmTypeProperty, value); viewModel.vmType = vmType; }
    }

    // Using a DependencyProperty as the backing store for vmType.  This enables animation, styling, binding, etc...
    public static readonly DependencyProperty vmTypeProperty =
        DependencyProperty.Register("vmType", typeof(string), typeof(UserControl), new PropertyMetadata(null));

在集合中,我将关联的viewmodel属性vmType标记为应该用于用户控件的内容。在父视图的XAM1中,只需将vmType设置为所需的值即可。