我是MVVM和WPF的新手。我正在使用MVVM Light來創建一個應用程序,其中包含一個DataGrid窗口內,其中有一個視圖模型(MainViewModel)和另一個窗口添加和編輯DataGrid中的記錄,也有自己的視圖模型(EditViewModel )。MVVM Light將參數傳遞給子視圖模型
我擔心的是我用來從MainViewModel打開添加/編輯窗口的方法。在MainViewModel中,我有一個屬性SelectedItem,它綁定到DataGrid的SelectedItem屬性和一個IsEdit布爾屬性,指示添加/編輯窗口是否應以添加或編輯模式啓動。
當添加/編輯窗口得到在編輯模式下打開,在視圖模型的構造我有以下行:
MainViewModel mainViewModel = ServiceLocator.Current.GetInstance<MainViewModel>();
這顯然檢索MainViewModel,這工作完全正常的當前實例,但我不確定這是做到這一點的最佳方式。
此外,如果我有多個主窗口實例,它們使用相同的MainViewModel實例,並且我從這兩個實例打開了添加/編輯窗口實例,添加/編輯窗口將從MainViewModel的相同實例可能是一個問題。
如果我嘗試爲每個打開的MainWindow創建一個MainViewModel的新實例,那麼我不知道如何將當前使用的MainViewModel的實例傳遞給EditViewModel。
我希望我明確了我需要做的事情。告訴我,如果我錯過了一些東西,我將它添加:)提前
對不起。我認爲你誤解了我的問題。我需要做的是將DataGrid中的選定對象傳遞給Edit視圖模型,這樣窗口就可以顯示數據並允許從那裏編輯數據。 – Phoenix 2013-02-15 06:19:19