Windows 8 MessageDialog关闭弹出窗口

Windows 8 MessageDialog关闭弹出窗口,windows-8,popup,microsoft-metro,windows-store-apps,messagedialog,Windows 8,Popup,Microsoft Metro,Windows Store Apps,Messagedialog,在我的弹出窗口(包含游戏选项控件)中,我有“重置高分”按钮。按钮触发带有文本块“您确定…”和两个按钮“是”和“否”的消息对话框。但是,当MessageDialog打开时,弹出窗口关闭。您知道如何使弹出窗口保持活动状态吗?将您的弹出窗口的IsLightDismissEnabled属性设置为false,以实现此目的 popup.IsLightDismissEnabled = false; 将弹出窗口的IsLightDismissEnabled属性设置为false,以实现此目的 popup.IsLi

在我的弹出窗口(包含游戏选项控件)中,我有“重置高分”按钮。按钮触发带有文本块“您确定…”和两个按钮“是”和“否”的消息对话框。但是,当MessageDialog打开时,弹出窗口关闭。您知道如何使弹出窗口保持活动状态吗?

将您的
弹出窗口的
IsLightDismissEnabled
属性设置为
false
,以实现此目的

popup.IsLightDismissEnabled = false;

弹出窗口的
IsLightDismissEnabled
属性设置为
false
,以实现此目的

popup.IsLightDismissEnabled = false;

MessageDialog
关闭时,我可以使用
Action
委托作为回调来解决这个问题

关键是在
async
函数中
MessageDialog
ShowAsync
上的
wait
之后调用操作

另一个关键是关闭并打开弹出窗口,以使
IsLightDismissEnabled
实际生效

XAML:


视图模型:

private bool isPopupOpen;
公共场所
{
获取{返回this.isPopupOpen;}
set{this.SetProperty(ref this.isPopupOpen,value);}
}
私人布尔岛;
公共布尔岛
{
获取{返回this.islightdisclose;}
设置{this.SetProperty(ref this.islightdismission,value);}
}
受保护的void ShowDialog()
{
this.islightdisclose=false;
this.IsPopupOpen=false;
this.IsPopupOpen=true;
动作showPopup=()=>{
this.islightdisclose=true;
this.IsPopupOpen=false;
this.IsPopupOpen=true;
};
ShowMessageDialog(“消息”、“标题”、showPopup);
}
private async void ShowMessageDialog(字符串消息、字符串标题、操作回调)
{
var\u messageDialog=新建messageDialog(消息,标题);
wait_messageDialog.ShowAsync();
回调();
}

消息对话框
关闭时,我可以使用
操作
委托作为回调来解决这个问题

关键是在
async
函数中
MessageDialog
ShowAsync
上的
wait
之后调用操作

另一个关键是关闭并打开弹出窗口,以使
IsLightDismissEnabled
实际生效

XAML:


视图模型:

private bool isPopupOpen;
公共场所
{
获取{返回this.isPopupOpen;}
set{this.SetProperty(ref this.isPopupOpen,value);}
}
私人布尔岛;
公共布尔岛
{
获取{返回this.islightdisclose;}
设置{this.SetProperty(ref this.islightdismission,value);}
}
受保护的void ShowDialog()
{
this.islightdisclose=false;
this.IsPopupOpen=false;
this.IsPopupOpen=true;
动作showPopup=()=>{
this.islightdisclose=true;
this.IsPopupOpen=false;
this.IsPopupOpen=true;
};
ShowMessageDialog(“消息”、“标题”、showPopup);
}
private async void ShowMessageDialog(字符串消息、字符串标题、操作回调)
{
var\u messageDialog=新建messageDialog(消息,标题);
wait_messageDialog.ShowAsync();
回调();
}

您应该添加
popup.LostFocus
事件处理程序,然后在事件处理程序中确保它保持打开。您应该添加
popup.LostFocus
事件处理程序,然后在事件处理程序中确保它保持打开