0

当我注意到我只对我当前正在查看的页面进行墓碑化时,我刚刚在我的应用程序中完成了墓碑化页面,这意味着在我返回后台堆栈中的页面后会丢失所有成员并且不会被墓碑化..我只找到示例关于如何删除当前页面,但没有关于删除后台页面的内容......什么是优雅的方式来做到这一点?

只是为了展示我是如何墓碑的:

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 包含我当前页面的所有重要成员,我需要在墓碑后重新初始化页面

4

1 回答 1

0

您应该在离开时保留每个页面的数据(如果 NavigationMode != Back),因为您不会知道应用程序在另一个页面上时将被墓碑化,并且您将无法访问堆栈中的其他页面发生墓碑。

或者,您可以集中存储所有内容(使用超级视图模型)并在应用程序级别处理状态持久性。

于 2012-05-30T09:16:44.950 回答