我正在使用MEF使用ViewExports组织和创建视图,例如:
[ViewExport(RegionName = "CustTabs")]
[ViewSortHint("20")]
[PartCreationPolicy(CreationPolicy.NonShared)]
public partial class SomeLocalView : UserControl
使用这些创建视图和ViewModel确实很有效。现在有一次我需要使用特殊的RegionName导出所有视图。对于其他导出(以及合同名称而不是地区名称),我会使用
container.GetExportedValues<SomeType>("CustTabs");
获取/创建此区域/合同的所有视图。但这对使用ViewExport导出的内容不起作用。
那么如何使用容器中的ViewExport属性获取/创建类?
答案 0 :(得分:1)
ViewExport
属性会自动将其附加的所有视图注册为容器中的UserControls
。从记忆中,我认为你可以用
container.GetExportedValues<Lazy<UserControl,IViewRegionRegistration>>;
检查元数据会告诉您他们注册了哪个区域。
我能想到的另一种方法可能是更清晰一点,就是添加一个额外的Export属性来将视图导出为所需的类型。