我在尋找一些幫助,我希望那裏有一些善良的靈魂能夠給我一個提示:)如何在View中參數化導入?
我正在使用MVVM Light構建一個新的應用程序。在這個應用程序中,當創建一個View時,它通過使用MEF導入實例化對應的ViewModel。
下面是一些代碼:
public partial class ContractEditorView : Window
{
public ContractEditorView()
{
InitializeComponent();
CompositionInitializer.SatisfyImports(this);
}
[Import(ViewModelTypes.ContractEditorViewModel)]
public object ViewModel
{
set
{
DataContext = value;
}
}
}
這裏是視圖模型導出:
[PartCreationPolicy(CreationPolicy.NonShared)]
[Export(ViewModelTypes.ContractEditorViewModel)]
public class ContractEditorViewModel: ViewModelBase
{
public ContractEditorViewModel()
{
_contract = new Models.Contract();
}
}
現在,這個作品,如果我想,以創建一個新打開一個新窗口合同......換句話說,如果我不需要通過現有合同的身份證明,這是完美的。
但是,讓我們假設我想使用相同的視圖來編輯現有合同。在這種情況下,我會添加一個新的構造函數到相同的視圖,該視圖接受模型ID或模型對象。
「不幸的是」視圖模型總是以同樣的方式創建:
[Import(ViewModelTypes.ContractEditorViewModel)]
public object ViewModel
{
set
{
DataContext = value;
}
}
據我所知,這個調用標準/無參數對應的視圖模型的構造在組成時。
所以我想知道的是如何區分這種行爲?我如何在組合時間調用特定的構造函數?或者如何在導入期間傳遞一些參數?
我真的很抱歉,如果這個問題聽起來很愚蠢,但我最近纔開始使用MEF!
由於提前,
乾杯, 贊布羅塔。