none
win8 Sample中navigate 和LoadScenario的问题 C++ RRS feed

  • 问题

  • 在win8的众多sample中,如加载Scenario1时,LoadScenario函数中,Navigate时,都会重新调用Scenario1的构造函数。因为应用需要,把Navigate设置了NavigationCacheMode = NavigationCacheMode.Enabled模式,不再重复调用构造函数。结果,Scenario1只有第一次加载成功,以后每次都加载失败,不能从其他Scenario再回到Scenario1。LoadScenario函数中UIElement^ input和output值都为空。

    请问,有办法避免这种加载失败的方法没?谢谢!

    2012年10月25日 11:56

答案

  • 你可以先了解LoadScenario的设计作用, 参考这个帖子:http://social.msdn.microsoft.com/forums/zh-CN/winstoreappzhcn/thread/23c7c66b-81e6-48be-816d-f65b993c0caa 隐藏Frame导航载入Page后,通过查找找到其中的Input Output部分然后从Page中分离出来放入你的MainPage。 所以你第二次导航,并没有重新生成Page,所以Input Output部分已经被分离了,你从原来的Page中已经找不到了,故会出现问题。

    这个就是两者不可兼得的事情了。我建议你可以直接将你的Page导航入整个Frame, 或者你把你的Input Output部分分离成两个Page 分别缓存导航。


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 lezino 2012年11月1日 5:45
    2012年10月26日 6:34
    版主

全部回复

  • 你可以先了解LoadScenario的设计作用, 参考这个帖子:http://social.msdn.microsoft.com/forums/zh-CN/winstoreappzhcn/thread/23c7c66b-81e6-48be-816d-f65b993c0caa 隐藏Frame导航载入Page后,通过查找找到其中的Input Output部分然后从Page中分离出来放入你的MainPage。 所以你第二次导航,并没有重新生成Page,所以Input Output部分已经被分离了,你从原来的Page中已经找不到了,故会出现问题。

    这个就是两者不可兼得的事情了。我建议你可以直接将你的Page导航入整个Frame, 或者你把你的Input Output部分分离成两个Page 分别缓存导航。


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 lezino 2012年11月1日 5:45
    2012年10月26日 6:34
    版主
  • 谢谢Bob,开始不了解这种情况,借鉴sample的结构来设计程序,导致现在很矛盾。

    如果重新生成Page的话,Page的数据就无法保存。我需要使用Page的一个对象,每次重新生成Page的话,这个对象就没意义了啊。如果不生成Page的话,又无法导航。矛盾。。。。

    2012年10月26日 7:07