首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >导航助手SaveState / LoadState工作不正确

导航助手SaveState / LoadState工作不正确
EN

Stack Overflow用户
提问于 2014-08-15 12:16:35
回答 1查看 1.1K关注 0票数 0

首先,我从数据库中读取条目列表并将其显示在ListView中。当我离开页面以显示条目的详细信息,然后返回列表时,一切都是正常的。

接下来,我打开另一个页面,向数据库中添加一个条目。

返回到列表,从数据库中读取数据会显示正确的计数。

当我要显示一个详细信息时,正确的计数存储在SaveState中。

回到列表,LoadState给出了错误的计数。这是以前的州。

“显示其他详细信息”和“立即返回”适用于旧列表,并且不向我显示添加的条目。

这是我的代码:

代码语言:javascript
复制
    private void getList()
    {
        memoList = new List<MemoItem>();
        db.loadHistory(ref memoList);
        DelButton.IsEnabled = false;
        System.Diagnostics.Debug.WriteLine("GetList, memoList[{0}]", memoList.Count);
    }

    private void NavigationHelper_SaveState(object sender, SaveStateEventArgs e)
    {
        if (memoList != null)
        {
            e.PageState["MemoItem"] = memoList;
            if (memoSelected > -1)
                e.PageState["memoSelected"] = memoSelected;
            System.Diagnostics.Debug.WriteLine("SaveState, memoList[{0}]", memoList.Count);
        }
    }

    private void NavigationHelper_LoadState(object sender, LoadStateEventArgs e)
    {
        if (e.PageState != null)
        {
            if (e.PageState.ContainsKey("MemoItem"))
            {
                memoList = (List<MemoItem>)e.PageState["MemoItem"];
                System.Diagnostics.Debug.WriteLine("LoadState, memoList[{0}]", memoList.Count);
                if (e.PageState.ContainsKey("memoSelected"))
                    memoSelected = (int)e.PageState["memoSelected"];
                MemoListView.ItemsSource = memoList;
                MemoListView.Visibility = Visibility.Visible;
            }
            else
            {
                getList();
                showList();
            }
        }
    }

以下是()中带有注释的Systems.Diagnostic输出:

GetList,memoList8

SaveState,memoList8

LoadState,memoList8

SaveState,memoList8

GetList,memoList9

SaveState,memoList9

LoadState,memoList8

SaveState,memoList8

LoadState,memoList8

备注:我不能每次都从数据库中调用GetList,因为我必须在列表中保留未包含在数据库中的复选标记。

我的代码出了什么问题?如何解决此问题?从数据库中获取新列表后,如何使StateEvent数据失效?

EN

回答 1

Stack Overflow用户

发布于 2014-08-17 17:33:12

现在问题已经解决了。这实际上是后台堆栈操作的结果。

我的程序中有四个基本页面,对于这些页面来说,GoBack是有意义的。但我不想回到更深的地方。(我不认为任何人都想倒退20步或更多步骤,但看似无限的BackStack将允许that.The所需的内存消耗不可忽略。)

为了在选择一个基本页面时清除BackStack,我设置了以下内容:

代码语言:javascript
复制
    private void NavButton_Click(object sender, RoutedEventArgs e)
    {
        Button b = sender as Button;

        if (b != null && b.Tag != null)
        {
            Type pageType = Type.GetType(b.Tag.ToString());
            if (pageType != null)
            {
                if (rootFrame.CurrentSourcePageType != pageType)
                {
                    rootFrame.Navigate(pageType, rootFrame); 

                    // No goBack for Basic Pages
                    if (testBasicPage(pageType))
                    {
                        while (rootFrame.BackStackDepth > 1)
                        {
                            rootFrame.BackStack.RemoveAt(0);
                        }
                    }
                }
            }
        }
    }

在我遇到SaveState / Load State的问题之前,它工作得很好。

现在,我首先清空BackStack,然后导航到目标页面。这是可行的。

代码语言:javascript
复制
    private void NavButton_Click(object sender, RoutedEventArgs e)
    {
        Button b = sender as Button;

        if (b != null && b.Tag != null)
        {
            Type pageType = Type.GetType(b.Tag.ToString());
            if (pageType != null)
            {
                if (rootFrame.CurrentSourcePageType != pageType)
                {

                    // No goBack for Basic Pages
                    if (testBasicPage(pageType))
                    {
                        while (rootFrame.BackStackDepth > 0)
                        {
                            rootFrame.BackStack.RemoveAt(0);
                        }
                    }
                    rootFrame.Navigate(pageType, rootFrame); 
                }
            }
        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25321174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档