【问题标题】:Reloading MainPage in WP7 to restart the app在 WP7 中重新加载 MainPage 以重新启动应用程序
【发布时间】:2011-07-21 06:45:51
【问题描述】:

我的应用只有一页 - MainPage。当用户从 ApplicationBar 菜单中选择“新建”时,我真正想做的就是清除我的源数据并重新加载页面。

我可以用 NavigationService 做到这一点吗?从 MainPage 本身调用以下行时,应用程序的 RootFrame 中会出现 Navigation Failed 异常:

this.NavigationService.Navigate(new Uri("MainPage.xaml", UriKind.Relative));

这很容易做到吗,还是我需要创建第二个页面才能导航到我的主页面?

【问题讨论】:

    标签: c# .net silverlight windows-phone-7 navigation


    【解决方案1】:

    为此目的使用导航听起来是一种可怕的方式!如果您创建第二个页面作为您面临的问题的解决方法,它将保留在后退堆栈中,这意味着当用户点击后退按钮时可以访问它。

    我建议采用 MVVM 模式(参见示例 here)。当按下新按钮时,只需创建一个新的视图模型并将其与您的MainPage 关联,将其设置为DataContext,这将产生您清除和重置状态的愿望。

    【讨论】:

    • 对不起,我想我应该更清楚我在寻找什么。我有一个由设计师在 2 天内创建的现有原型,我有不到一天的时间将其连接到数据并刷新状态。考虑到所有的限制,我只是在寻找一种简单的可能很糟糕的方法来完成这项工作,而无需从 MVVM 重新开始。我只是想赶上最后期限,然后我会扔掉所有代码,我保证。
    • 好的,好吧 - 我想这是关于 stackoverflow 的“正确”答案。谢谢!
    【解决方案2】:

    原来代码中有错字:

    this.NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));
    

    MainPage.xaml 前面的斜线更正了我提到的 Navigation Failed 异常。

    当然,这对于重新加载页面毫无帮助,就好像应用程序刚刚启动一样,导航离开和返回也没有帮助。清除数据和刷新 UI 是微不足道的,而且是正确的做法(不需要 MVVM,尽管它会有所改进)。

    感谢 ColinE 的链接和向正确方向轻推。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-10
      • 2010-09-15
      • 2017-08-13
      相关资源
      最近更新 更多