Backstack Tombstone wp7

时间:2012-05-29 13:12:45

标签: windows-phone-7 back-stack tombstone

我刚刚在我的应用程序中完成了一个页面的逻辑删除,当时我注意到我只在墓碑上显示我正在查看的页面,这意味着在我返回后面的页面后丢失了所有成员并且没有被墓碑化。我只找到关于如何对当前页面进行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包含我当前页面的所有重要成员,我需要在逻辑删除后重新初始化页面

1 个答案:

答案 0 :(得分:0)

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

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