我有一个按钮点击事件的弹出窗口.. 但我无法关闭弹出窗口..我想在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 ..
答案 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以防止应用程序在按下后退按钮时关闭。您还需要从事件中取消删除以避免内存泄漏。