最近我開始在Silverlight中使用Prism。我想使用EventAggregator在兩個ViewModel之間訂閱和發佈事件。正如我在一些指南中看到的,ViewModel的ctor應該接受IEventAggregator作爲參數。我無法找到如何做到這一點,因此我的視圖總是想用無參數ctor初始化ViewModel。棱鏡MVVM - 如何將IEventAggregator傳遞給我的ViewModel
我的視圖模型構造函數:
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>
我可以實例化視圖模型的視圖的構造函數,然後將其分配給其的DataContext,但我必須有在我的視圖,我也無法得到一個IEventAggregator。但這可能不是將IEventAggregator(或任何其他對象 - 例如IUnityContainer)傳遞給ViewModel的正確方法。
有人能告訴我我做錯了什麼嗎?
這是正確的方法。 – Maciek 2011-02-23 14:14:35
感謝您的回覆。你在哪裏實例化視圖模型? – leeran 2011-02-23 16:03:16
@ leeran88:我們需要看到更多的應用程序來回答這個問題。基本上在這種情況下,你將首先實例化視圖,然後實例化視圖模型,然後結合這兩個視圖。在這種情況下,您的視圖也必須實現IView界面。 – 2011-02-23 20:17:12