首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MessageDialog关闭弹出窗口

MessageDialog关闭弹出窗口
EN

Stack Overflow用户
提问于 2012-11-10 16:24:53
回答 2查看 683关注 0票数 0

在我的弹出窗口(包含游戏选项控件)中,我有“重置HighScores”按钮。按钮触发带有MessageDialog的TextBlock“您确定.”还有两个按钮“是”和“不是”。但是,当MessageDialog打开时,弹出窗口就会关闭。你知道怎么弥补弹出式还活着吗?

EN

回答 2

Stack Overflow用户

发布于 2013-09-18 20:44:45

我能够使用Action委托作为MessageDialog关闭时的回调来解决这个问题。

关键是在await on MessageDialog's ShowAsync之后调用async函数中的Action。

另一个关键是关闭并打开弹出窗口,以使IsLightDismissEnabled真正占上风。

XAML:

代码语言:javascript
复制
<Popup
    IsLightDismissEnabled="{Binding IsLightDismiss, Mode=TwoWay}"
    IsOpen="{Binding IsPopupOpen, Mode=TwoWay}">

ViewModel:

代码语言:javascript
复制
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);
}
代码语言:javascript
复制
private async void ShowMessageDialog(string message, string title, Action callback)
{
    var _messageDialog = new MessageDialog(message, title);
    await _messageDialog.ShowAsync();
    callback();
}
票数 4
EN

Stack Overflow用户

发布于 2012-11-10 18:51:21

PopupIsLightDismissEnabled属性设置为false以实现这一点。

代码语言:javascript
复制
popup.IsLightDismissEnabled = false;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13323752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档