MEF - 从其他视图显示视图

时间:2010-10-20 11:32:40

标签: c# wpf mef

我正在学习MEF并且在理解它时遇到一些问题。我有一个带有MainWindow的小项目和一些加载到目录中的程序集。 其中一个组件需要显示来自其他组件的视图,一旦开始,之后,如果我单击按钮。 以下是该观点的主要部分:

[Export("OperatingPlugin", typeof(UserControl))]    
[ExportMetadata("Name", "EDIFACT Viewer")]
[ExportMetadata("Dock", "main")]
[ExportMetadata("Hidden",true)]
[ExportMetadata("Icon","editedi.xaml")]
public partial class EdiView : UserControl
{
    //[Import("PluginSelectFile", typeof(UserControl))]
    //public Lazy<UserControl> SelectFile { get; set; }

当视图加载时,我想显示另一个选择文件的视图(在单独的程序集中)。 我可以在app.xaml.cs目录中看到所有视图(也是PluginSelectFile),但在删除上面的注释之后,这个程序集(EDIFACT Viewer)就不再显示了。 我失踪的地方?

1 个答案:

答案 0 :(得分:0)

很可能PluginSelectFile的导出与取消注释时的导入不匹配,或者存在多个匹配的导出,这两种导出都会导致OperationPlugin导出被拒绝。

请参阅How to Debug and Diagnose MEF Failures上的博文,详细了解为何会出现这种情况以及如何解决问题。