2013-10-29 21 views
1

我使用MEF組織和創建使用ViewExports這樣的觀點:使用這些MEF,如何使用容器獲取視圖?

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

創建視圖和的ViewModels沒有很好地工作。現在有一次我需要使用特殊的RegionName導出所有視圖。對於其他出口(及合約名稱,而不是地區名稱)我會用

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

獲取/創建與本地區/合同的所有意見。但這對於使用ViewExport導出的東西無效。

那麼如何獲取/創建使用容器中的ViewExport屬性導出的類?

回答

1

ViewExport屬性自動註冊,它的連接到作爲UserControls容器中的所有視圖。從內存中,我認爲你可以得到他們的列表

container.GetExportedValues<Lazy<UserControl,IViewRegionRegistration>>; 

檢查元數據將告訴你他們註冊到哪個區域。

我能想到的,唯一的其他方式可能有點清潔器是添加一個額外的導出屬性導出的視圖作爲所需的類型。

+1

我添加了第二個導出屬性,感謝提示! – Sam