我刚刚在应用程序中完成了对页面的逻辑删除,这时我注意到我只对当前正在查看的页面进行了逻辑删除,这意味着在我返回后栈中的页面将失去所有成员,并且不会被逻辑删除。我只找到了关于如何对当前页面进行tomstone的示例,但没有找到关于对backstack页面进行tomstone的示例……做这件事最优雅的方式是什么?
只是为了展示我是如何进行墓碑测试的:
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包含当前页面的所有重要成员,我需要这些成员在逻辑删除后重新初始化页面
发布于 2012-05-30 17:16:45
你应该在你离开时保存每个页面的数据(如果NavigationMode != Back),因为你不会知道它,当应用程序在另一个页面上时,你将无法访问堆栈中的其他页面。
或者,您可以集中存储所有内容(使用超级视图模型),并在应用程序级别处理状态持久性。
https://stackoverflow.com/questions/10799901
复制相似问题