Wpf 使用MEF导出MVVM视图
我正在构建的应用程序有几个(10+)Wpf 使用MEF导出MVVM视图,wpf,xaml,mvvm,mef,markup-extensions,Wpf,Xaml,Mvvm,Mef,Markup Extensions,我正在构建的应用程序有几个(10+)[Module]可执行文件 我想在[Module]View.xaml文件中指定类似的内容 <Window ... mef:ExportView ExpectingViewModel={x:Type [Module]ViewModel} > </Window> 其中mef:ExportView是一个为mef编写器准备部件的程序 目前 在[Module]View.xaml.cs文件中,我在。(typeof参数指定预期的Vi
[Module]
可执行文件
我想在[Module]View.xaml文件中指定类似的内容
<Window ...
mef:ExportView ExpectingViewModel={x:Type [Module]ViewModel}
>
</Window>
其中mef:ExportView
是一个为mef编写器准备部件的程序
目前
- 在
[Module]View.xaml.cs
文件中,我在。(typeof参数指定预期的ViewModel。)
- 我还使用
[ExportViewModel]
属性标记我的ViewModel李>
- (这两个属性都派生自ExportAttribute。)
- 每个可执行文件的应用程序类还继承自一个
ApplicationBase
类,该类执行MEF组合并与视图/视图模型结合/链接李>
现在,我希望能够从[Module]View.xaml.cs
中删除所有代码隐藏,以防止我和同事忘记标记代码隐藏文件
我想这需要一个定制的MarkupExtension。我熟悉MEF的基础知识,以及使用元数据创建自定义导出属性。然而,我认为这个解决方案需要从一些公式中推导出来。我不需要精确的解决方案;只是“导出导出定义并执行bli。导出ComposablePart并执行bla。当您编写时,执行ji。”有趣的问题。我个人认为这并没有太大的开销,但也许使用T4模板你就能解决这个问题?看@surfen:这个问题读起来很有趣。我认为OP的目标是生成大量代码(类似于LightSwitch,正如公认的答案第5点所提到的)。我曾考虑过执行InheritedExport
,但这不允许我获取正在查找的ViewModel类型元数据。我还知道我可以执行继承的导出
,实例化所有视图并扫描导出视图扩展
,但我宁愿使用惰性
。(最后一个选项可能是我的唯一选项。)