代码之家  ›  专栏  ›  技术社区  ›  Vinita

在windows phone 8.1应用程序中,关闭硬件上的弹出按钮

  •  0
  • Vinita  · 技术社区  · 9 年前

    我有一个弹出窗口,在点击按钮时出现。。 但我无法关闭弹出窗口..我想在硬件按钮_回按事件上关闭弹出窗口。。 有人能告诉我怎么做吗。。 我正在使用此代码显示弹出窗口

    Public void showpopup_click()
    {
            Popup p =new Popup();
            p.child= new Mypopup();
            p.Isopen=true;
    }
    

    这里Mypopup是我的用户控件。。 我正在使用visual studio开发一个windows phone 8.1应用程序。。

    2 回复  |  直到 9 年前
        1
  •  1
  •   Kristian Vukusic    9 年前

    我认为,另一种更好的方法是使用 IsLightDismissEnabled 属性中,您不需要检查弹出窗口是否已打开,或者如果您有多个打开的弹出窗口,则一切都会自动处理。

    var popup = new Popup();
    popup.IsLightDismissEnabled = true;
    popup.IsOpen = true;
    
        2
  •  0
  •   Tóth Tibor    9 年前

    您必须订阅 Windows.Phone.UI.Input.HardwareButtons.BackPressed 事件来处理带有自定义逻辑的后退按钮。如果将弹出窗口存储在字段中,可以轻松地将IsOpen属性设置为false。

    这样地:

    private Popup _popup;
    
    public void showpopup_click()
    {
        _popup = new Popup();
        _popup.Child = new Mypopup();
        _popup.IsOpen = true;
    
         Windows.Phone.UI.Input.HardwareButtons.BackPressed += HardwareButtons_BackPressed;
    }
    
    private void HardwareButtons_BackPressed(object sender, Windows.Phone.UI.Input.BackPressedEventArgs args)
    {
        _popup.IsOpen = false;
    
        args.Handled = true;
    
        Windows.Phone.UI.Input.HardwareButtons.BackPressed -= HardwareButtons_BackPressed;
    }
    

    在事件处理程序中,您需要设置参数。Handled属性设置为true,以防止应用程序在按下后退按钮时关闭。您还需要从事件中取消订阅,以避免内存泄漏。