2013-10-25 80 views
0

我想在應用程序中靜態嵌入兩個選項卡,並在選項卡更改時得到通知,但我不知道如何執行它以維護所有MVVM規則。什麼是在TabControl中嵌入選項卡的正確方法

我有MainViewModelConductor<IScreen>.Collection.OneActive

然後我有我子的ViewModels FirstViewModelSecondViewModelScreen繼承繼承。

現在我MainView看起來簡直像這樣:

<TabControl x:Name="Items" />

,我重視我的意見,其虛擬機的構造:

Items.AddRange(
    new IScreen[] 
    { 
     new FirstViewModel(events), 
     new SecondViewModel(events) 
    }); 

但這種方式我需要通過eventsEventAggregator)在PARAMS。

我希望能夠使用[ImportingConstructor]自動執行此操作。

另外,在代碼中創建這些視圖模型並不合適。我認爲我應該直接在MainView中指定這些標籤,但是當我這樣做時,我不能採用Conductor.Collection.OneActiveScreen的事件OnActivateOnDeactivate的事件。

這樣做的正確方法是什麼?

回答

1

假設你的事件聚合是單身,那麼你離開它通過MEF通過構造注射注射FirstViewModelSecondViewModelMainViewModel解決您的依賴關係。

由於這兩者都依賴於IEventAggregator,這也將作爲MainViewModel的構造的一部分來解決。

如果您有需要注入事件匯聚的特定實例,或者您希望從MainViewModel控制孩子視圖模型的實例,那麼你就應該引入將其注入到你的MainViewModel視圖模型廠。

相關問題