2017-02-23 4 views
0

Im mit den INavigationService, so kann ich zwischen zwei Ansichtsmodellen wie folgt navigieren:Verwenden von INavigationService ohne ViewModels zu verwerfen?

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); 

Wenn ich kehre zu meinen MasterViewModel all meinen Änderungen werden verworfen. Wie kann ich das vermeiden? Ich möchte die SubUserControlView verwenden, um einen einzelnen Wert aus einer Liste auszuwählen und es an MasterViewModel zurückzugeben.

Antwort

1

Versuchen Sie, die KeepAlive Eigenschaft der Master Seite zu true einzustellen:

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

Dies sollte eine neue Instanz der Page verhindern, dass jedes Mal erstellt immer es navigiert wird: https://msdn.microsoft.com/en-us/library/system.windows.controls.page.keepalive(v=vs.110).aspx.

Dies führt auch dazu, dass Ihre Ansichtsmodelle nicht neu erstellt werden, wenn Sie diese im Konstruktor der Seiten erstellen.

+0

Ich nehme an, UserControls haben diese Eigenschaft nicht? –

+0

Nein. Nur Seiten. – mm8

Verwandte Themen