Windows phone 8.1全新推出。基本功能是后退按钮点击。这个功能不正常的是这款Windows Phone 8.1。是这种行为还是我犯了错误。
下面的代码在主页中使用,但是这个代码在点击后也从所有其他类调用。我只需要在主页上访问以下方法。
请检查以下代码,并向我推荐一个好的解决方案。
请查看我的代码:
public HomePage()
{
this.InitializeComponent();
Windows.Phone.UI.Input.HardwareButtons.BackPressed += HardwareButtons_BackPressed;
}
void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e)
{
}
谢谢
答案 0 :(得分:10)
工作正常。 BackPressed event适用于整个应用范围。我想到了两个选择:
编写可识别当前调用它的 Page 的eventhandler - 简单示例如下所示:
private void HardwareButtons_BackPressed(object sender, Windows.Phone.UI.Input.BackPressedEventArgs e)
{
Frame frame = Window.Current.Content as Frame;
if (frame == null) return;
if (frame.Content is HomePage)
{
e.Handled = true;
Debug.WriteLine("I'm in HomePage");
}
else if (frame.CanGoBack)
{
frame.GoBack();
e.Handled = true;
}
}
第二个选项 - 当您输入 Page 时订阅Windows.Phone.UI.Input.HardwareButtons.BackPressed
,并在离开 Page 时取消订阅。请注意,这种方式存在一些缺陷 - 您必须正确处理OnNavigatedTo,OnNavigatedFrom,Suspending和Resuming(更多关于Lifecycle here)。另请注意,订阅应在其他人之前完成 - 例如 NavigationHelper 。
一些评论 - 上述代码应该有效,但也取决于其他情况:
BackPressed
的内容(在App.xaml.cs中) - 请记住,通常会在订阅时触发事件BackPressed