我想以不同方式处理我手机上几个页面上的后退按钮事件。我的应用程序的页面是按层次排序的,而不是退出应用程序本身(在层次结构最上面的页面上也应该是唯一的=>也称为主页)我想导航到分层的上一页面。< / p>
分层导航:
WP主菜单&gt;应用程序主菜单&gt;应用页面#1&gt;应用页面#2&gt; ...
我已经定义了一个处理后退按钮的相关方法,但我似乎无法相应地在页面的构造函数中注册处理程序,并且没有相关的C ++ / CX指南有!
private:
void Page::HardwareBackButtonPressed(Platform::Object^ sender,
Windows::Phone::UI::Input::BackPressedEventArgs^ e)
{
e->Handled = true;
if (Frame->CanGoBack == true)
Frame->GoBack();
else
Frame->Navigate(MainPage::typeid, safe_cast<Platform::Object^>(0));
}
处理程序的注册看起来像这样(似乎无效)
HardwareButtons::BackPressed += ref new Windows::Foundation::EventHandler<BackPressedEventArgs^>(
this, &HardwareBackButtonPressed);
我甚至不确定这是否是正确的方法。
答案 0 :(得分:1)
好的,在对生成的NavigationHelper
课程进行了深入研究后,我能够自己解决问题。
为了实现硬件后退按钮的页面特定行为,您需要在OnNavigatedTo
方法中注册相应的事件处理程序。
_hardwareBackPressedEventToken = HardwareButtons::BackPressed += ref new EventHandler<BackPressedEventArgs^>(
this, &thisPage::HardwareBackButtonPressed);
此外,如果您想要另一个或默认行为,您需要使用EventRegistrationToken
以便首先取消注册当前处理程序。在我的情况下 - 导航回到分层的上下一页 - 这是在OnNavigatedFrom
方法中完成的。
HardwareButtons::BackPressed -= _hardwareBackPressedEventToken;