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