【发布时间】:2011-03-18 16:01:13
【问题描述】:
最近我开始在 Silverlight 中使用 Prism。我想使用 EventAggregator 在两个 ViewModel 之间订阅和发布事件。正如我在一些指南中看到的,ViewModel 的 ctor 应该接受 IEventAggregator 作为参数。我不知道如何做到这一点,因此我的 View 总是想用无参数的 ctor 初始化 ViewModel。
我的 ViewModel ctor:
MyViewModel(IEventAggregator eventAggregator)
{
// get the event....
}
我的观点:
<UserControl ....>
<UserControl.Resources>
<ViewModels:MyViewModel x:Key="MyViewModel"/>
</UserControl.Resources>
<Grid x:Name="LayoutRoot" DataContext="{Binding Source={StaticResource MyViewModel}}">
....
<Grid/>
</UserControl>
我可以在 View 的 ctor 中实例化 ViewModel,然后将其分配给它的 DataContext,但是我的 View 中必须有一个 IEventAggregator,我也无法获得。但这可能不是将 IEventAggregator(或任何其他对象!例如 IUnityContainer)传递给 ViewModel 的正确方法。
谁能告诉我我做错了什么?
【问题讨论】:
标签: silverlight mvvm silverlight-4.0 unity-container prism