zoukankan      html  css  js  c++  java
  • 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的窗口在失去焦点后无法找到的问题

    示例代码

    CustomDialogs

    参考资料

    ContentControl 类

  • 相关阅读:
    Heroku
    Git基本命令(转)
    github之从零开发
    物理层、、。。。
    BeautifulSoup, 的使用
    路径设置
    http协议
    Python 的os模块与sys模块
    python 操作MySQL数据库
    多进程记要
  • 原文地址:https://www.cnblogs.com/Lulus/p/13754638.html
Copyright © 2011-2022 走看看