Windows phone 7 导航到新页面而不将当前页面放在后堆栈上?

Windows phone 7 导航到新页面而不将当前页面放在后堆栈上?,windows-phone-7,navigation,Windows Phone 7,Navigation,在Windows Phone 7应用程序中,我得到了一个CurrentPage,在特殊事件中,它使用NavigationService导航到新页面: NavigationService.Navigate(new Uri("/NewPage.xaml", UriKind.Relative)); 现在,当用户在新页面上单击后退时,我希望应用程序跳过当前页面,直接转到应用程序的主页面 我尝试使用NavigationService.RemoveBackEntry,但这会删除主页而不是当前页面 如何导航

在Windows Phone 7应用程序中,我得到了一个CurrentPage,在特殊事件中,它使用NavigationService导航到新页面:

NavigationService.Navigate(new Uri("/NewPage.xaml", UriKind.Relative));
现在,当用户在新页面上单击后退时,我希望应用程序跳过当前页面,直接转到应用程序的主页面

我尝试使用NavigationService.RemoveBackEntry,但这会删除主页而不是当前页面


如何导航到新页面而不将当前页面放在后堆栈上?

这听起来像是您在调用RemoveBackEntry to early(当您仍在CurrentPage.xaml上时)。这就是它删除MainPage.xaml的原因。当您导航到NewPage.xaml时,在OnNavigatedTo事件中调用NavigationService.RemoveBackEntry,这应该可以解决问题。

您在哪里调用了“NavigationService.RemoveBackEntry()”? 我想你必须在新的页面上做,而不是在你想跳过的页面上

编辑: 因此,为了获得更好的图片:您正在使用主页->第一个子页(应该在后面的导航中跳过)->第二个子页,它独立于第一个子页

2个想法: 1) 尝试在第一个子页面的OnNavigatedFrom事件中调用“NavigationService.RemoveBackEntry()”
2) 如果NavigationMode(请参阅事件参数)=返回,请检入第一个子页的OnNavigatedTo事件,然后再次返回。

导航到NewPage时。xaml传递一个参数,以便知道何时从返回中删除上一页

您可以这样做:

CurrentPage.xaml导航到NewPage.xaml时,传递参数

bool remove = true; String removeParam = remove ? bool.TrueString : bool.FalseString; NavigationService.Navigate(new Uri("/NewPage.xaml?removePrevious="+removeParam , UriKind.Relative)); bool-remove=true; String removeParam=删除?bool.TrueString:bool.false字符串; NavigationService.Navigate(新Uri(“/NewPage.xaml?removePrevious=“+removeParam,UriKind.Relative)); 在NewPage.xaml的导航到事件中,检查是否删除上一页

bool remove = false; if (NavigationContext.QueryString.ContainsKey("removePrevious")) { remove = ((string)NavigationContext.QueryString["removePrevious"]).Equals(bool.TrueString); NavigationContext.QueryString.Remove("removePrevious"); } if(remove) { NavigationService.RemoveBackEntry(); } bool-remove=false; if(NavigationContext.QueryString.ContainsKey(“removePrevious”)) { remove=((字符串)NavigationContext.QueryString[“removePrevious”]).Equals(bool.TrueString); NavigationContext.QueryString.Remove(“removePrevious”); } 如果(删除) { NavigationService.RemoveBackEntry(); }
通过这种方式,您可以在CurrentPage.xaml上决定是否要从后台删除它。

我必须在CurrentPage上调用它,因为新页面不知道它需要删除后台堆栈。@Sam查看akalucas的答案。这就是我在OnNavigatedTo事件中调用它的想法。您还可以判断您是否来自CurrentPage.xaml。我必须在CurrentPage上调用它,因为新页面不知道它需要删除后堆栈。现在我们如何在Windows应用商店应用上执行此操作?看到我们似乎没有
RemoveBackEntry()
?我还没有研究过这一点,我所知道的是这在WP7上是有效的。如果我碰巧遇到一个答案,我会把它贴在这里。