我使用NavigationService.Navigate("...")
。但是当我点击事件goBack();
答案 0 :(得分:4)
在goBack方法中,您可以使用NavigationService.GoBack()调用从SecondPage移回MainPage。您可以在MSDN上查看可用的所有导航方法。
答案 1 :(得分:2)
您可以覆盖OnBackKeyPress方法,并在下面显示的方法编写代码中,它将导航到MainPage.xaml
protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
{
NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));
}
答案 2 :(得分:1)
如果您正在使用绑定,请执行以下操作:
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
App.ViewModel.LoadData();
}
在MainViewModel.cs
中public void LoadData() { 的 Items.Clear(); 强>
this.Items.Add(new ItemViewModel(){LineOne =“runtime one”,LineTwo =“Data info 2”}); this.IsDataLoaded = true; }
答案 3 :(得分:0)
就像Nigel所说,你可以使用NavigationService.GoBack()但是这只有你从MainPage转到第二页才有效。
执行此操作的唯一方法是您提到如何使用NavigationService.Navigate(uri)。
答案 4 :(得分:0)
覆盖导航到事件
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
if (PhoneApplicationService.Current.State["msg"].ToString() == "from page2")
{
// do something when its comming from page2
}
base.OnNavigatedTo(e);
}
现在每次导航时都会触发,但你可以发送一些参数,以便根据它来自哪个页面知道要做什么。
PhoneApplicationService.Current.State["msg"] = "from page2";
NavigationService.Navigate(new Uri("/MainPage.xaml?msg=", UriKind.Relative));
答案 5 :(得分:0)
有两种方法可以返回主页。
(第一种方法)覆盖OnBackKeyPress()并在其中写下以下代码段。
NavigationService.GoBack();
注意:
仅当MainPage是导航历史记录中的上一页时,才会移至MainPage。
(第二种方法)覆盖OnBackKeyPress()并在其中写下以下代码段。
NavigationService.Navigation(new Url("/MainPage.xaml",UriKind.Relative));
注意:
这将创建一个New MainPage并导航到它。因此,如果您从MainPage导航到SecondPage,并且如果使用上面的代码段再次导航到MainPage,则导航历史记录中将有两个MainPage。
因此,请根据您的方案使用任何一个代码段。
答案 6 :(得分:0)
如果WP7或WP8:NavigationService.GoBack()
如果是WP8.1:Frame.GoBack();
并且您可以覆盖导航到事件
受保护的覆盖无效 OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e){
// do nothing }
答案 7 :(得分:0)
我不建议覆盖OnBackKeyPress方法并在其中调用NavigationService.Navigate方法,因为它可能会弄乱您的页面堆栈。
我认为您的应用有超过2页。否则你应该像其他人推荐的那样调用NavigateService.GoBack()。
实施例
解决方案
覆盖OnNavigatingFrom并删除您不希望用户访问的任何backstack条目。您可以允许用户按后退按钮从ThirdPage返回MainPage,也可以调用NavigationService.GoBack()。
protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
{
base.OnNavigatingFrom(e);
// Remove all backstack entries except for the first one
while(NavigationService.BackStack.Count() > 1)
{
NavigationService.RemoveBackEntry();
}
}