2017-02-23 76 views
0

即時通訊使用的INavigationService,所以我可以在兩個視圖模型這樣間導航:使用INavigationService而不放棄ViewModels?

MasterViewModel:

public virtual INavigationService NavigationService { get; } 
//Command Navigate to SubUserControlView: 
NavigationService.Navigate("SubUserControlView", parentViewModel: this); 

SubViewModel:

public virtual INavigationService NavigationService { get; } 
//Command Navigate back to MainUserControlView: 
NavigationService.GoBack(parameter); 

當我回到我的MasterViewModel我所有的更改將被丟棄。我該如何避免這種情況?我想使用SubUserControlView從列表中選擇一個值並將其返回到MasterViewModel

回答

1

嘗試主頁面KeepAlive屬性設置爲true

<Page x:Class="WpfApplication3.MasterPage" 
     .... KeepAlive="True"> 

這可以防止Page的新實例從得到創建在每次航行時間:https://msdn.microsoft.com/en-us/library/system.windows.controls.page.keepalive(v=vs.110).aspx

這也會導致您的視圖模型不會被重新創建,假設您在頁面的構造函數中創建了這些模型。

+0

我假設UserControls沒有這個屬性? –

+0

No. Just Pages。 – mm8