在我的弹出窗口(包含游戏选项控件)中,我有“重置HighScores”按钮。按钮触发带有MessageDialog的TextBlock“您确定.”还有两个按钮“是”和“不是”。但是,当MessageDialog打开时,弹出窗口就会关闭。你知道怎么弥补弹出式还活着吗?
发布于 2013-09-18 20:44:45
我能够使用Action委托作为MessageDialog关闭时的回调来解决这个问题。
关键是在await on MessageDialog's ShowAsync之后调用async函数中的Action。
另一个关键是关闭并打开弹出窗口,以使IsLightDismissEnabled真正占上风。
XAML:
<Popup
IsLightDismissEnabled="{Binding IsLightDismiss, Mode=TwoWay}"
IsOpen="{Binding IsPopupOpen, Mode=TwoWay}">ViewModel:
private bool isPopupOpen;
public bool IsPopupOpen
{
get { return this.isPopupOpen; }
set { this.SetProperty(ref this.isPopupOpen, value); }
}
private bool isLightDismiss;
public bool IsLightDismiss
{
get { return this.isLightDismiss; }
set { this.SetProperty(ref this.isLightDismiss, value); }
}
protected void ShowDialog()
{
this.IsLightDismiss = false;
this.IsPopupOpen = false;
this.IsPopupOpen = true;
Action showPopup = () => {
this.IsLightDismiss = true;
this.IsPopupOpen = false;
this.IsPopupOpen = true;
};
ShowMessageDialog("message", "title", showPopup);
}private async void ShowMessageDialog(string message, string title, Action callback)
{
var _messageDialog = new MessageDialog(message, title);
await _messageDialog.ShowAsync();
callback();
}发布于 2012-11-10 18:51:21
将Popup的IsLightDismissEnabled属性设置为false以实现这一点。
popup.IsLightDismissEnabled = false;https://stackoverflow.com/questions/13323752
复制相似问题