WPF:解决MaterialDesign:DialogHost 无法关闭问题

这篇博客介绍了如何利用MaterialDesign库在WPF应用程序中创建具有遮罩效果的弹窗。通过DialogHost.Show方法展示弹窗,并展示了如何绑定关闭按钮的命令以及在后台关闭弹窗的正确方式。此外,还提供了更新弹窗内容的示例代码,以实现动态更新弹窗信息。
摘要由CSDN通过智能技术生成

使用MaterialDesion 开发WPF应用程序:做有遮罩的弹窗效果:

DialogHost.Show

如上图所示:点击“确定”按钮可关闭弹窗;

关闭按钮的绑定命令如下:

        <Button IsDefault="True" Style="{StaticResource MaterialDesignFlatButton}" 
               Width="160" Height="40"  Command="{x:Static materialDesign:DialogHost.CloseDialogCommand}" Content="确定"></Button>

如果希望后台能关闭弹窗:

使用下面的写法可能不会生效:

 DialogHost.CloseDialogCommand.Execute(null, null);

换了个思路解决了问题:

 var session = DialogHost.GetDialogSession(ROOT_DIALOG_ID);
                if (session == null)
                {
                    return;
                }
                session.Close();

同理:如果弹窗过程中需要更新弹窗的显示内容,可以使用session.Update();

例如:

 /// <summary>
        /// 弹窗提示,用户自行关闭
        /// </summary>
        /// <param name="text"></param>
        public static void PopHint(string text)
        {
            var dialog = new PopMessageBoxe
            {
                Message = { Text = text }
            };
            
            var session = DialogHost.GetDialogSession(ROOT_DIALOG_ID);
            if (session == null)
            {
                DialogHost.Show(dialog, ROOT_DIALOG_ID, ExtendedOpenedEventHandler);
            }
            else
            {
                session.UpdateContent(dialog);
            }
        }

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值