我正在學習使用MVVM Light,並且正在製作一個使用實體框架的數據庫優先模型的程序。WPF MVVM Light DataGrid帶編輯記錄按鈕和多個編輯窗口
我有一個DataGrid綁定到一個ViewModel,它從一個Repository中獲取數據。我試圖創建一個按鈕,當它被點擊時打開一個窗口,綁定到它自己的View Model並允許你添加一個記錄通過將其添加到存儲庫中,DataGrid具有一個事件,在添加項目時調用該事件,以便它可以更新DataGridViewModel。
這裏的一切都很好。我打開表單,鍵入數據,按添加,記錄被添加到數據庫中,DataGrid會通過存儲庫事件自動刷新。
問題出現在打開多個「添加記錄」窗口時。當我在其中一個窗口中鍵入內容時,它會顯示在另一個窗口中。
我知道這是因爲「添加記錄」窗口的兩個實例綁定到視圖模型的同一實例。
有沒有辦法解決這個問題,所以每個窗口都可以獨立?我知道目前這看起來並不是什麼大問題,但是我將來會計劃使用同一個窗口和相同的視圖模型來編輯記錄(這是一個很好的方法,您能否以某種方式推薦我記錄ID或記錄本身從DataGrid窗口添加/編輯記錄窗口?)。
在此先感謝!告訴我,如果我錯過了一些東西,我將它添加:)
編輯: 確定這就是我想出了:
public EditParentViewModel EditParent
{
get
{
EditParentViewModel editParentViewModelInstance = new EditParentViewModel(ServiceLocator.Current.GetInstance<IParentsRepository>(),
ServiceLocator.Current.GetInstance<IChildrenRepository>(),
ServiceLocator.Current.GetInstance<IBailiffsRepository>());
return editParentViewModelInstance;
}
}
這是工作,但這個是提供一個正確的方法視圖模型的存儲庫?
視圖模型單身?可以爲每個對話框實例創建一個新的視圖模型 – Joao 2013-02-14 17:33:25
是的,它是單身人士。我正在使用簡單的IOC MVVM Light提供的,所以我不確定我應該如何爲窗口的每個實例創建一個單獨的viewmodel實例。 – Phoenix 2013-02-14 18:37:02