我正在使用带有 UWP 的 Prism 6。我在 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 时,我发现视图状态和视图模型状态为空。这意味着,在下面的 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被发现为空。
而且,对于 DashboardPageViewModel.cs 中的视图模型状态:
public async override void OnNavigatedTo(NavigatedToEventArgs e, Dictionary<string, object> viewModelState)
{
base.OnNavigatedTo(e, viewModelState);
}
viewModelState为空