我的应用只有一个页面 - 主页。当用户从ApplicationBar菜单中选择“新”时,我真正想做的就是清除我的源数据并重新加载页面。
我可以使用NavigationService执行此操作吗?从MainPage本身调用时,以下行在App的RootFrame中获取导航失败的异常:
this.NavigationService.Navigate(new Uri("MainPage.xaml", UriKind.Relative));
这可以轻松完成,还是需要创建第二页导航到导航回主页之前?
答案 0 :(得分:3)
为此目的使用导航听起来像是一种可怕的方式!如果您创建第二个页面作为解决您遇到的问题的方法,它将保留在后端堆栈中,这意味着当用户点击后退按钮时它将可以访问。
我建议采用MVVM模式(参见示例here)。按下新按钮后,只需创建一个新的视图模型并将其与MainPage
关联,方法是将其设置为DataContext
,这将影响您清除和重置状态所需的效果。
答案 1 :(得分:0)
事实证明代码中有一个拼写错误:
this.NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));
MainPage.xaml前面的斜杠修正了我提到的导航失败异常。
当然,这对于重新加载页面毫无帮助,就像应用程序刚刚启动一样,也没有导航和返回。清除数据和刷新UI是微不足道的,也是正确的事情(不需要MVVM,尽管这会有所改进)。
感谢ColinE提供了正确方向的链接和推动。