Windows phone 7 OnBackKeyPress转到页面的另一个实例

Windows phone 7 OnBackKeyPress转到页面的另一个实例,windows-phone-7,Windows Phone 7,有没有一种方法可以处理OnBackKeyPress,使其返回到后堆栈中的实际页面,而不是返回到同一页面的另一个实例?这是我的代码: protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e) { e.Cancel = true; base.OnBackKeyPress(e); this.NavigationService.Navigate(new Uri("/MainP

有没有一种方法可以处理OnBackKeyPress,使其返回到后堆栈中的实际页面,而不是返回到同一页面的另一个实例?这是我的代码:

protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
{
    e.Cancel = true;

    base.OnBackKeyPress(e);

    this.NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));
}
但它不符合我的要求。有没有一种方法可以做到这一点,而不用使用NavigationService并在后堆栈中获取实际页面


谢谢。

我很好奇您想在这里做什么,以及为什么需要导航以返回

通常,您不实现覆盖,用户按back,NavigationService会自动将用户带到后堆栈中的前一个bage


如果情况并非如此,请详细说明原因。有一些信息可能会有帮助,但我认为这将是一个创伤性援助目前存在的问题。

< P>简短的答案是“不,你不能这样做”。除了使用NavigationService逐页向后移动外,没有其他方法可以操作后堆栈。无论对错,这都是故意的。这有点道理,因为他们需要确保后退按钮的操作是一致的

您试图做的实际上是更改“后退”按钮的行为。这不是OnBackKeyPress的用途。《WP7设计指南》对“后退”按钮作了如下说明:

后退按钮可以关闭屏幕上的屏幕 键盘、菜单、对话框、导航到 上一页,退出搜索 操作,甚至在 应用。但是校长 用法是从当前屏幕移动 转到上一屏幕


如果您的场景未包含在上述内容中,我建议您尝试做一些与Microsoft对“后退”按钮的意图基本一致的事情。

如果您希望此行为的原因是在返回时保持上一页的状态,您可以使用依赖项注入和MVVM模式来实现这一点。您可以在依赖项容器中注册viewmodel的单例/实例。这样,当您的视图通过“后退”按钮导航到视图时,您可以将viewmodel的单个实例注入到视图中,如果您依赖于MVVM的绑定技术,则具有先前的状态


我知道有一个手机版本的Ninject在依赖容器中浮动,因此您不需要滚动自己的注入容器(只需搜索Ninject wp7)。

我能够修复它。这就是问题所在:

主页->设置页面->设置位置页面

一旦设置了位置,我们将用户发送回带有
导航服务的设置页面。Navigate
,然后当用户按下设置页面中的后退按钮时,它将再次返回到设置位置,此时将其发送到主页面更有意义

事情是这样的:

设置位置->设置页面->(后退按钮)->设置位置页面

现在,我使用的是
NavigationService.GoBack
而不是SetLocationPage中的
NavigationService.Navigate

SetLocationPage(一旦设置了位置,就使用GoBack())->SettingsPage(在这里也使用GoBack)->MainPage

导航现在有了意义,我使用
NavigationService.GoBack()
解决了这个问题

谢谢大家的意见