2011-09-22 51 views
0

我有我的WPF應用程序下面的情況:MVVM和MEF和項目控制模板

我有它的MainViewModel其綁定到控制DataContext的主用戶控制。

主控裏面,我有一個項目源被綁定到列表中的項目控制。

項目控制有一個用戶控件作爲其模板,得出用戶的詳細信息,每一個,因爲我們知道有用戶作爲其DataContext的模板。

我的問題:

我如何使用模板的用戶控制的主控制的datacontext(MainViewModel)。我嘗試使用mef導入MainViewModel,但導出的問題是創建策略「NonShared」,因此導入將帶來MainViewModel的新實例,而不是Main控件的實例。

在此先感謝...

+0

你的列表/集合看起來像這樣嗎? '的ObservableCollection Workspaces' – eandersson

+0

主控件綁定到MainViewModel,裏面MainViewModel我的ObservableCollection ,因爲你現在用戶知道HASE的集合綁定到項目控制的項目來源,項目控制中的數據模板其數據上下文 – Wasim

+0

我通過導入'ViewModel'和'ResourceDictionary'來處理這個問題,該''ResourceDictionary'包含對'ViewModel'和'View'的引用。 – eandersson

回答

0

如果您嘗試使用MEF,你總是可以用一個唯一的名稱組成的現有值,例如:

MainViewModel vm = DataContext; 
container.ComposeExportedValue("SharedViewModel", vm); 

這樣一來,可以隨時提供在您的用戶控制它的導入:

[Import("SharedViewModel")] 
public MainViewModel ViewModel { get; set; } 

哪裏ComposeExportedValue是屬於AttributedModelServices類型的擴展方法。