【问题标题】:BackButtonPressed issues in Windows Phone 8.1?Windows Phone 8.1 中的 BackButtonPressed 问题?
【发布时间】:2014-06-06 12:20:35
【问题描述】:

我的 windows phone 8.1 运行时应用程序中有一个弹出窗口。

当按下返回按钮并在页面中打开弹出窗口时,应用程序应保留在页面本身中,否则应返回。这是我的概念。所以,我编码如下:

    void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e)
    {
        if (PopupWindow.IsOpen)
        {
            PopupWindow.IsOpen = false;
            e.Handled = true;
        }
    }

即使弹出窗口在页面中打开,应用程序也会转到上一页。我在 windows phone silverlight 应用程序中使用了相同的逻辑并且有效。

注意:我使用的是基本页面。

我到底犯了什么错误?

【问题讨论】:

  • 看起来很完美。什么不工作?您的应用程序正在关闭?你需要一个 else 在那个逻辑中吗?

标签: c# windows-phone-8.1 win-universal-app


【解决方案1】:

检查两件事:

  • NavigationHelper 默认情况下,HardwareButtons_BackPressed 缺少检查事件是否已经被处理,尝试改进它:

    private void HardwareButtons_BackPressed(object sender, Windows.Phone.UI.Input.BackPressedEventArgs e)
    {
        // if (this.GoBackCommand.CanExecute(null)) // this is as a default
        if (this.GoBackCommand.CanExecute(null) && !e.Handled) //  add a check-up
        // ... rest of the code
    
  • 查看您的 App.xaml.cs 文件,在 App() 中有 HardwareButtons_BackPressed 已订阅(检查已订阅的方法是否也导航回来):

    public App()
    {
        this.InitializeComponent();
        this.Suspending += OnSuspending;
        //  HardwareButtons.BackPressed += HardwareButtons_BackPressed; // this line also could fire Frame.GoBack() (as default project template)
        // of course check what is in the above method
    }
    

还请记住,事件是按照您订阅它们的顺序触发的,例如导航助手在 Loaded 事件中订阅。如果您之后订阅,那么导航将是第一个。您可以先订阅,也可以使用标志。

【讨论】:

    【解决方案2】:

    我这样解决

        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            Windows.Phone.UI.Input.HardwareButtons.BackPressed += HardwareButtons_BackPressed;
        }
    
        protected virtual void HardwareButtons_BackPressed(object sender, Windows.Phone.UI.Input.BackPressedEventArgs e)
        {
            e.Handled = true;
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-07
      • 1970-01-01
      • 2015-11-13
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 2016-02-24
      • 1970-01-01
      相关资源
      最近更新 更多