MEF,如何使用容器获取视图?

时间:2013-10-29 14:06:44

标签: export mef

我正在使用MEF使用ViewExports组织和创建视图,例如:

[ViewExport(RegionName = "CustTabs")]
[ViewSortHint("20")]
[PartCreationPolicy(CreationPolicy.NonShared)]
public partial class SomeLocalView : UserControl

使用这些创建视图和ViewModel确实很有效。现在有一次我需要使用特殊的RegionName导出所有视图。对于其他导出(以及合同名称而不是地区名称),我会使用

container.GetExportedValues<SomeType>("CustTabs");

获取/创建此区域/合同的所有视图。但这对使用ViewExport导出的内容不起作用。

那么如何使用容器中的ViewExport属性获取/创建类?

1 个答案:

答案 0 :(得分:1)

ViewExport属性会自动将其附加的所有视图注册为容器中的UserControls。从记忆中,我认为你可以用

获得它们的列表
container.GetExportedValues<Lazy<UserControl,IViewRegionRegistration>>;

检查元数据会告诉您他们注册了哪个区域。

我能想到的另一种方法可能是更清晰一点,就是添加一个额外的Export属性来将视图导出为所需的类型。