在 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;
我有一个弹出窗口出现在按钮的点击事件上.. 但是我无法关闭弹出窗口。我想在 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;