我有一个系统(使用Prisim和MVVM),它有许多用于收集数据的视图。每个View都有自己的ViewModel,它当前将数据发送到公共数据类。 我一直在尝试(没有成功)创建一个ViewModel,可以被所有这些视图用来保存不断更新公共数据类。 但是我遇到了困难,因为我的共享ViewModel需要使用EventAggregator。我的共享ViewModel的构造函数有(IEventAgreggator eventAggregator)作为参数。但是,当我尝试使用以下方法将我的视图绑定到此时
<UserControl.DataContext>
<vm:DataViewModel/>
</UserControl.DataContext>
我收到错误
&#34; DataViewModel不包含带有1个参数的构造函数&#34;
。有没有解决的办法?如果我使用autowire,我不会遇到这个问题,但似乎无法以这种方式在Views之间共享ViewModel。这是我的第一篇文章,如果这是一个愚蠢的问题,请道歉。谢谢
答案 0 :(得分:0)
通常在基于PRISM的应用程序中,我们在容器中注册ViewModels,以便可以通过DI容器自动解析它们。
您需要确保在Module Initialize方法中在容器中注册新创建的ViewModel类型。
我们的应用中通常包含Unity容器,我们必须在模块Initialize
方法中执行以下操作。
Container.RegisterType<DataViewModel >(new ContainerControlledLifetimeManager());
希望它有帮助!
答案 1 :(得分:0)
请尝试以下代码。
public Myusercontrol ()
{
InitializeComponent();
DataViewModel vm = new DataViewModel (eventAggregator);
this.DataContext = vm;
}