C# 在TabControl中嵌入选项卡的正确方法是什么
我希望在我的应用程序中静态嵌入两个选项卡,并在选项卡更改时得到通知,但我不知道如何维护所有MVVM规则 我有C# 在TabControl中嵌入选项卡的正确方法是什么,c#,wpf,mvvm,caliburn.micro,C#,Wpf,Mvvm,Caliburn.micro,我希望在我的应用程序中静态嵌入两个选项卡,并在选项卡更改时得到通知,但我不知道如何维护所有MVVM规则 我有MainViewModel,它继承自Conductor.Collection.OneActive 然后我得到了从屏幕继承的子视图模型FirstViewModel和SecondViewModel 现在我的MainView看起来就像这样: 我将我的视图附加到它的vm构造函数中: Items.AddRange( new IScreen[] { new First
MainViewModel
,它继承自Conductor.Collection.OneActive
然后我得到了从屏幕继承的子视图模型FirstViewModel
和SecondViewModel
现在我的MainView
看起来就像这样:
我将我的视图附加到它的vm构造函数中:
Items.AddRange(
new IScreen[]
{
new FirstViewModel(events),
new SecondViewModel(events)
});
但这样我需要在params中传递事件
(EventAggregator
)
我希望能够使用[ImportingConstructor]
自动完成
而且,在代码中创建这些视图模型对我来说也不合适。我想我应该直接在MainView
中指定这些选项卡,但当我这样做时,我不能冒险使用Conductor.Collection.OneActive
和Screen
的事件,如OnActivate
和OnDeactivate
正确的方法是什么?假设您的事件聚合器是单例的,那么您可以让MEF通过构造函数注入将FirstViewModel
和SecondViewModel
注入到MainViewModel
中来解决依赖关系
由于它们都依赖于IEventAggregator
,这也将作为构建MainViewModel
的一部分来解决
如果需要注入事件聚合器的特定实例,或者希望从MainViewModel
控制子视图模型的实例化,则应引入视图模型工厂,该工厂将注入到MainViewModel
中