这就是我最终实现它的方式,使用来自 user2799780 和 Romasz 的指针,尽管我不能 100% 确定我没有双重(取消)注册处理程序。我猜这取决于每个 NavigatedTo 是否总是有一个 NavigatedFrom。
编辑:我被提醒(见评论),当被暂停时,应用程序会收到 OnNavigatedFrom 事件,但在恢复时,它不会看到 OnNavigatedTo 事件,导致在这种情况下无法注册处理程序。下面的实现可能会受到这个错误的影响。
protected override async void OnNavigatedTo(NavigationEventArgs e)
{
// When we're on this page, pressing Back should close the app
Windows.Phone.UI.Input.HardwareButtons.BackPressed += HardwareButtons_BackPressed;
}
protected override async void OnNavigatedFrom(NavigationEventArgs e)
{
// When we leave this page, pressing Back should no longer close the app
Windows.Phone.UI.Input.HardwareButtons.BackPressed -= HardwareButtons_BackPressed;
}
private void HardwareButtons_BackPressed(object sender, Windows.Phone.UI.Input.BackPressedEventArgs e)
{
if (!e.Handled)
{
Application.Current.Exit();
}
}