2015-11-05 21 views
0

我的項目是建立在MVVM上。目前我有一個列表,我可以選擇一個對象並將它們添加到另一個列表中。我想創建的是一個新窗口,其中顯示了該列表(帶有添加的對象的列表),並在新窗口中編輯該列表(刪除該列表中的項目)。使用相同的viewmodel不同的窗口

我應該如何將數據(選定對象)傳遞到另一個窗口並能夠在那裏更新它們?

我目前在一個視圖中工作。在一些相關的問題,他們建議MVVM光,所以我試圖尋找,從我紅色mvvm燈主要用來取代通知屬性更改。我應該使用mvvm燈還是有一些我可以使用的特定模式?

兩個窗口將同時打開。

回答

1

如果你想在窗口之間共享你的ViewModel,你可以使用ViewModelLocator。它不是特定於MvvmLight,它只是爲您創建一個項目模板。你可以自己實現它,它基本上是一個ViewModel的容器。您可以查看here瞭解實施細節。

+0

感謝那正是我需要的 –

1

我不得不說,我不確定這些是最好的方法,如果它們很常見,那就是我和我的同事在WinRT應用程序中使用的,所以我會很高興如果有人提出更好的東西(這兩個都不是那麼幹淨)。

我能想到的兩種方式來傳遞頁面的導航數據(不堅持的話)

  1. 傳遞參數

  2. 有可觸及一些常見的數據通用共享類(靜態或單例類所有的ViewModels)

對於傳承導航:

我有這個方法在我的導航服務類:

public virtual void NavigateTo(Type sourcePageType, object parameter) 
{ 
    ((Frame)Window.Current.Content).Navigate(sourcePageType, parameter); 
} 

,我使用這樣的導航命令:

Navigation.NavigateTo(typeof(PageType), someParameters); 

然後,你可以在後面的代碼獲取值導航頁

protected override void OnNavigatedTo(NavigationEventArgs e) 
{ 
    var receivedParameter = e.Parameter as TheTypeOfThePassedParameter; 
} 

然後從那裏傳遞給ViewModel,也許有一個選項可以傳遞這個智慧在後面的代碼hout代碼,但我沒有試過這個。

擁有共享類:

這是非常簡單的只是靜態類或所需的字段是獨生子。

相關問題