我正在使用MEF和特定的IEventAggregator与我的项目在我的类之间发送信号,但我对IEventAggregator的导入不满意,值仍为NULL? 我错过了什么吗?你能从UserControls中的MEF导入吗?
public partial class MyControl : UserControl
{
public MyControl()
{
InitializeComponent();
}
[Import]
public IEventAggregator EventAggregator { get; set; }
public void SomeMethod()
{
EventAggregator.GetEvent<ErrorMessage>.Subscribe(SomeOtherMethod);
}
}
答案 0 :(得分:1)
您可以在UserControl
上声明导入,但必须满足这些导入。如果WPF正在创建您的UserControl
(例如通过DataTemplate
),那么您的导入将无法解析,因为WPF对MEF没有任何内在支持。您需要做的是通过MyControl
获取CompositionContainer
个实例,或者在创建UserControl
后致电SatisfyImportsOnce
。