在WP7中重新加载MainPage以重新启动应用程序

时间:2011-07-21 06:45:52

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

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

我可以使用NavigationService执行此操作吗?从MainPage本身调用时,以下行在App的RootFrame中获取导航失败的异常:

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

这可以轻松完成,还是需要创建第二页导航到导航回主页之前?

2 个答案:

答案 0 :(得分:3)

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

我建议采用MVVM模式(参见示例here)。按下新按钮后,只需创建一个新的视图模型并将其与MainPage关联,方法是将其设置为DataContext,这将影响您清除和重置状态所需的效果。

答案 1 :(得分:0)

事实证明代码中有一个拼写错误:

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

MainPage.xaml前面的斜杠修正了我提到的导航失败异常。

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

感谢ColinE提供了正确方向的链接和推动。

相关问题