覆盖硬件后退按钮
Overriding Hardware BackButton
我想在我的几个页面上以不同方式处理 windows phone 的后退按钮事件。我的应用程序的页面是按层次顺序排列的,而不是退出应用程序本身(只有在层次结构的最上层页面上才有可能 => 也称为主页)我想导航到层次结构的上一页。
分层导航:
WP Main Menu > App Home Menu > App Page#1 > App Page#2 > ...
我已经定义了一个处理后退按钮按下的相关方法,但我似乎无法相应地在页面的构造函数中注册处理程序,并且那里没有相关的 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);
我什至不确定这是否是正确的方法。
好的,在深入了解生成的 NavigationHelper
class 之后,我能够自行解决问题。
为了实现硬件后退按钮的页面特定行为,您需要在 OnNavigatedTo
方法中注册相应的事件处理程序。
_hardwareBackPressedEventToken = HardwareButtons::BackPressed += ref new EventHandler<BackPressedEventArgs^>(
this, &thisPage::HardwareBackButtonPressed);
此外,如果您想要其他行为或默认行为,您需要使用 EventRegistrationToken
以先注销当前处理程序。在我的例子中——为了导航回到分层的上一页——这是在 OnNavigatedFrom
方法中完成的。
HardwareButtons::BackPressed -= _hardwareBackPressedEventToken;
我想在我的几个页面上以不同方式处理 windows phone 的后退按钮事件。我的应用程序的页面是按层次顺序排列的,而不是退出应用程序本身(只有在层次结构的最上层页面上才有可能 => 也称为主页)我想导航到层次结构的上一页。
分层导航:
WP Main Menu > App Home Menu > App Page#1 > App Page#2 > ...
我已经定义了一个处理后退按钮按下的相关方法,但我似乎无法相应地在页面的构造函数中注册处理程序,并且那里没有相关的 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);
我什至不确定这是否是正确的方法。
好的,在深入了解生成的 NavigationHelper
class 之后,我能够自行解决问题。
为了实现硬件后退按钮的页面特定行为,您需要在 OnNavigatedTo
方法中注册相应的事件处理程序。
_hardwareBackPressedEventToken = HardwareButtons::BackPressed += ref new EventHandler<BackPressedEventArgs^>(
this, &thisPage::HardwareBackButtonPressed);
此外,如果您想要其他行为或默认行为,您需要使用 EventRegistrationToken
以先注销当前处理程序。在我的例子中——为了导航回到分层的上一页——这是在 OnNavigatedFrom
方法中完成的。
HardwareButtons::BackPressed -= _hardwareBackPressedEventToken;