我刚刚在我的应用程序中完成了一个页面的逻辑删除,当时我注意到我只在墓碑上显示我正在查看的页面,这意味着在我返回后面的页面后丢失了所有成员并且没有被墓碑化。我只找到关于如何对当前页面进行tomstone的示例,但没有关于对Backstack页面进行逻辑删除的示例...这样做的优雅方法是什么?
只是为了表明我是如何墓碑化的:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
if (e.IsNavigationInitiator == false)
{
_tombstone = this.LoadState<Tombstone>("tombstone");
}
else
{
_tombstone.NavigationParameters = NavigationParameters;
}
}
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
if (_tombstone != null && e.IsNavigationInitiator == false)
this.SaveState("tombstone", _tombstone);
}
public static void SaveState(this PhoneApplicationPage phoneApplicationPage, string key, object value)
{
if (phoneApplicationPage.State.ContainsKey(key))
{
phoneApplicationPage.State.Remove(key);
}
phoneApplicationPage.State.Add(key, value);
}
_tombstone包含我当前页面的所有重要成员,我需要在逻辑删除后重新初始化页面
答案 0 :(得分:0)
您应该在离开时保留每个页面的数据(如果NavigationMode!= Back),因为您不知道应用程序在另一个页面上将被逻辑删除,并且您无法访问其他页面墓碑发生时的堆栈。
或者,您可以集中存储所有内容(使用超级视图模型)并在应用程序级别处理状态持久性。