在 windows phone 8.1 应用程序中按下硬件按钮后关闭弹出窗口

Close popup on hardwarebutton backpressed in windows phone 8.1 application

我有一个弹出窗口出现在按钮的点击事件上.. 但是我无法关闭弹出窗口。我想在 hardwarebutton_backpress 事件上关闭弹出窗口。 谁能告诉我该怎么做.. 我正在使用此代码显示弹出窗口

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

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

您必须订阅 Windows.Phone.UI.Input.HardwareButtons.BackPressed 事件才能使用自定义逻辑处理后退按钮。如果将 Popup 存储在字段中,则可以轻松地将 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;
}

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

另一种方法,在我看来更好,是使用 IsLightDismissEnabled 属性,您不需要检查弹出窗口是否已经打开,或者您是否有多个打开的弹出窗口, 一切都是自动处理的。

var popup = new Popup();
popup.IsLightDismissEnabled = true;
popup.IsOpen = true;