0

我想在我的应用程序中静态嵌入两个选项卡,并在选项卡更改时收到通知,但我不知道如何维护所有 MVVM 规则。

我有MainViewModel继承自Conductor<IScreen>.Collection.OneActive

然后我有我的子视图模型FirstViewModelSecondViewModel它继承自Screen.

现在我MainView看起来就像这样:

<TabControl x:Name="Items" />

我在它的 vm 构造函数中附加了我的观点:

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

但是这样我需要在参数中传递eventsEventAggregator)。

我希望能够使用[ImportingConstructor]它自动完成。

此外,在代码中创建这些视图模型对我来说也不合适。我想我应该直接在其中指定这些选项卡,MainView但是当我这样做时,我无法利用Conductor.Collection.OneActiveandScreen之类的事件OnActivateand OnDeactivate

这样做的正确方法是什么?

4

1 回答 1

1

假设您的事件聚合器是一个单例,那么您将它留给 MEF 通过将FirstViewModelandSecondViewModel注入到MainViewModelvia 构造函数注入来解决您的依赖关系。

由于它们都依赖于IEventAggregator,这也将作为构造的一部分来解决MainViewModel

MainViewModel如果您有需要注入的事件聚合器的特定实例,或者您希望从MainViewModel.

于 2013-10-25T09:42:28.303 回答