Я использую Prism 6 с UWP. У меня есть кнопка в MainPage.xaml, которая перенаправляет на DashboardPage.xaml. В DashboardPage я сохраняю состояние просмотра в DashboardPage.xaml.cs:
protected override void SaveState(Dictionary<string, object> pageState)
{
base.SaveState(pageState);
pageState["viewState"] = 123;
}
и сохранение состояния модели представления в DashboardPageViewModel.cs:
public override void OnNavigatingFrom(NavigatingFromEventArgs e, Dictionary<string, object> viewModelState, bool suspending)
{
base.OnNavigatingFrom(e, viewModelState, suspending);
}
[RestorableState]
public string Name
{
get { return _name; }
set { SetProperty(ref _name, value); }
}
Нажав кнопку «Назад» на верхней панели, я вернулся к MainPage.xaml. После этого, когда я снова перехожу к DashboardPage.xaml, я обнаружил, что состояния представления и состояния модели представления имеют значение null. Это означает, что в приведенном ниже коде DashboardPage.xaml.cs
protected override void LoadState(object navigationParameter, Dictionary<string, object> pageState)
{
if (pageState == null)
{
return;
}
base.LoadState(navigationParameter, pageState);
if (pageState.ContainsKey("viewState"))
{
var data = pageState["viewState"].ToString();
}
}
pageState имеет значение null.
И для просмотра состояния модели в DashboardPageViewModel.cs:
public async override void OnNavigatedTo(NavigatedToEventArgs e, Dictionary<string, object> viewModelState)
{
base.OnNavigatedTo(e, viewModelState);
}
viewModelState имеет значение null