使用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);
}
}