WPF 自定义内容的弹窗
目标是重复使用固定的弹窗样式,并提供确认和取消按钮,而弹窗的具体内容则由传参决定。
为了达到目的,使用ContentControl
设置内容,并通过新增ShowDialog方法为确认按钮添加业务逻辑。
效果如图:
绿色框的部分为自定义内容
关键代码
设置ContentControl
<ContentControl Grid.Row="0" Margin="0" x:Name="contentContainer" />
public CustomDialog(UserControl control, string title, Window window = null)
{
InitializeComponent();
Title = title;
//设置内容
contentContainer.Content = control;
}
新增ShowDialog方法
public void ShowDialog(Func<bool> onOKCallback)
{
btnOK.Click += (s1, e1) => {
try
{
var fOK = true;
if (onOKCallback != null)
{
fOK = onOKCallback();
}
if (fOK)
{
Close();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "错误", MessageBoxButton.OK, MessageBoxImage.Error);
}
};
ShowDialog();
}
调用弹窗,TestCustomDialogContentControl是自定义内容
CustomDialog dialog = new CustomDialog(new TestCustomDialogContentControl(), "自定义弹窗");
dialog.ShowDialog(()=>
{
return true;
});
关于ShowInTaskbar="False"的问题,请看解决ShowInTaskbar=false的窗口在失去焦点后无法找到的问题
示例代码
参考资料
学习技术最好的文档就是【官方文档】,没有之一。
还有学习资料【Microsoft Learn】、【CSharp Learn】、【My Note】。
如果,你认为阅读这篇博客让你有些收获,不妨点击一下右下角的【推荐】按钮。
如果,你希望更容易地发现我的新博客,不妨点击一下【关注】。