在UserControl中不满足Import

本文关键字:Import 不满足 UserControl | 更新日期: 2023-09-27 18:06:50

我正在使用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);
        }
    }

在UserControl中不满足Import

您可以在UserControl上声明导入,但是必须有一些东西满足这些导入。如果WPF正在创建您的UserControl(例如通过DataTemplate),那么您的导入将无法解决,因为WPF没有任何对MEF的内在支持。您需要做的是通过CompositionContainer获得MyControl实例,或者在创建UserControl后调用SatisfyImportsOnce