【发布时间】:2018-07-20 04:08:39
【问题描述】:
我有一个系统(使用 Prisim 和 MVVM),它有许多用于收集数据的视图。每个 View 都有自己的 ViewModel,当前将数据发送到公共数据类。 我一直在尝试(没有成功)创建一个 ViewModel,所有这些视图都可以使用它来保存不断更新的公共数据类。 但是我遇到了困难,因为我的共享 ViewModel 需要使用 EventAggregator。我的共享 ViewModel 的构造函数有 (IEventAgreggator eventAggregator) 作为参数。但是,当我尝试使用以下方法将我的视图绑定到此时:
<UserControl.DataContext>
<vm:DataViewModel/>
</UserControl.DataContext>
我收到错误消息
“DataViewModel 不包含带 1 个参数的构造函数”
。有没有解决的办法?如果我使用自动装配,但似乎无法以这种方式在视图之间共享 ViewModel,我就没有这个问题。这是我的第一篇文章,如果这是一个愚蠢的问题,请道歉。谢谢
【问题讨论】:
-
在用户控件中设置 DataContext 通常是一个非常糟糕的主意。 UserControls 应该是为您的模型或视图模型设计的。您不应该为您的 UserControl 设计视图模型。 TextBox 有 TextBoxViewModel 吗? 不, 而且有一个很好的理由。对于这种反模式的真实示例以及为什么它如此难以阅读this answer。
标签: c# wpf mvvm viewmodel eventaggregator