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

时间:2016-01-20 18:15:54

标签: windows-phone-8.1 popup

我有一个按钮点击事件的弹出窗口.. 但我无法关闭弹出窗口..我想在hardwarebutton_backpress事件上关闭弹出窗口.. 任何人都可以告诉我如何这样做.. 我正在使用此代码来显示弹出窗口

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

这里Mypopup是我的用户控件.. 我正在使用visual studio并开发一个Windows Phone 8.1 app ..

2 个答案:

答案 0 :(得分:1)

在我看来,另一种方法是使用IsLightDismissEnabled属性,您不需要检查弹出窗口是否已打开,或者如果您有多个打开的弹出窗口,则处理所有内容自动。

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

答案 1 :(得分:0)

您必须订阅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以防止应用程序在按下后退按钮时关闭。您还需要从事件中取消删除以避免内存泄漏。