现在位置首页 / 项目实战 /正文

wpf控件-自定义美化版MessageBox弹出框控件(扁平化、多样式动画效果)

作者: IT小兵 | 2014年7月15日| 热度:℃ | 评论: |参与:

wpf都发展到4.5了,却还是保持这winform版本的MessageBox。真心不知道微软是咋想的。就更盖了一座美丽的城堡,

大门口确实破破烂烂的。真心不懂。

不过,我们可以美化MessageBox--今天分享一个美化版MessageBox,支持动画,扁平化设计,支持多种弹出方式。

先看看效果图:

大家可以直接下载代码运行看看效果。下面是百度网盘链接:http://pan.baidu.com/s/1kT2xbIf   密码:sr4q 

如果需要了解思路的可以往下看。


思路:

MessageBox经常使用的元素有这些:

1.MessageButton:由于方便以后扩展,这里不使用原生的MessageButton枚举,而是自定义一个枚举:

/// <summary>
    /// CMessageBox显示的按钮类型
    /// </summary>
    public enum CMessageBoxButton
    {
        OK = 0,
        OKCancel = 1,
        YesNO = 2,
        YesNoCancel = 3
    }

2.MessageBoxImage,由于方便以后扩展,这里不使用原生的MessageBoxImage枚举,而是自定义一个枚举:

/// <summary>
    /// CMessageBox显示的图标类型
    /// </summary>
    public enum CMessageBoxImage
    {
        None = 0,
        Error = 1,
        Question = 2,
        Warning = 3
    }
CMessageBoxImage

3.MessageBoxResult,由于方便以后扩展,这里不使用原生的MessageBoxResult枚举,而是自定义一个枚举:

 
/// <summary>
    /// 消息框的返回值
    /// </summary>
    public enum CMessageBoxResult
    {
        //用户直接关闭了消息窗口
        None = 0,
        //用户点击确定按钮
        OK = 1,
        //用户点击取消按钮
        Cancel = 2,
        //用户点击是按钮
        Yes = 3,
        //用户点击否按钮
        No = 4
    }
CMessageBoxResult

4.CMessageBoxDefaultButton,Windows的MessageBox并没有这个枚举。通过这个枚举可以将MessageBox上面的按钮突出显示(比如YesNo的MessageBox可以突出显示Yes),这样的应用场景很多。

MessageBox常用的枚举就是1、2、3.定义完成枚举之后就可以仿造Windows的MessageBox重载Show方法了:

/// <summary>
        /// 显示消息框
        /// </summary>
        /// <param name="cmessageBoxText">消息内容</param>
        public static CMessageBoxResult Show(string cmessageBoxText)
        /// <summary>
        /// 显示消息框
        /// </summary>
        /// <param name="cmessageBoxText">消息内容</param>
        /// <param name="caption">消息标题</param>
        public static CMessageBoxResult Show(string cmessageBoxText, string caption)
        /// <summary>
        /// 显示消息框
        /// </summary>
        /// <param name="cmessageBoxText">消息内容</param>
        /// <param name="CMessageBoxButton">消息框按钮</param>
        public static CMessageBoxResult Show(string cmessageBoxText, CMessageBoxButton CMessageBoxButton)
        /// <summary>
        /// 显示消息框
        /// </summary>
        /// <param name="cmessageBoxText">消息内容</param>
        /// <param name="caption">消息标题</param>
        /// <param name="CMessageBoxButton">消息框按钮</param>
        public static CMessageBoxResult Show(string cmessageBoxText, string caption, CMessageBoxButton CMessageBoxButton)
        /// <summary>
        /// 显示消息框
        /// </summary>
        /// <param name="cmessageBoxText">消息内容</param>
        /// <param name="caption">消息标题</param>
        /// <param name="CMessageBoxButton">消息框按钮</param>
        /// <param name="CMessageBoxImage">消息框图标</param>
        /// <returns></returns>
        public static CMessageBoxResult Show(string cmessageBoxText, string caption, CMessageBoxButton CMessageBoxButton, CMessageBoxImage CMessageBoxImage)
        /// <summary>
        /// 显示消息框
        /// </summary>
        /// <param name="cmessageBoxText">消息内容</param>
        /// <param name="caption">消息标题</param>
        /// <param name="CMessageBoxButton">消息框按钮</param>
        /// <param name="CMessageBoxImage">消息框图标</param>
        /// <param name="CMessageBoxDefaultButton">消息框默认按钮</param>
        /// <returns></returns>
        public static CMessageBoxResult Show(string cmessageBoxText, string caption, CMessageBoxButton CMessageBoxButton, CMessageBoxImage CMessageBoxImage, CMessageBoxDefaultButton CMessageBoxDefaultButton)

然后需要添加一个Window,这个Window就是自定义的MessageBox的主界面。这个界面没什么好说的,需要代码的可以在最后的代码下载链接进行下载。

值得一提的是,在Loaded的Trriger里面为MessageBox添加了一个启动动画,这个动画是个缩放动画,并带有反弹效果。

 

然后需要未MessageBox实现模糊效果。当然模糊效果并不是说让MessageBox变得模糊,而是MessageBox弹出时其父窗体变得模糊。

模糊效果很好实现:

            BlurEffect effect = new BlurEffect();
            effect.Radius = 6;
            effect.KernelType = KernelType.Gaussian;
            Application.Current.Windows[0].Effect = effect;


原文地址:http://www.cnblogs.com/DoNetCoder/p/3843658.html 

点击阅读本文所属分类的更多文章: 项目实战 。和高手一起交流:346717337
友荐云推荐

未注明转发、原文均为本站原创。分享本文请注明 原文链接

给您更多信息和帮助

在这里您可以找到更多:

技术交流群:346717337 Jquery插件交流

投稿:suchso@vip.qq.com

承接:企业网站门户/微网站/微商城/CMS系统/微信公众号运营/业务咨询

抢天猫双11红包
推荐使用阿里云服务器
echarts教程系列
本月最热文章

微信扫一扫,徜徉悠嘻网,您的休闲乐园

微信公众号:快乐每一天

随机文章
标签

技术交流群:346717337

投稿:suchso@vip.qq.com

专业专注:企业网站门户/微网站/微商城/CMS系统/微信公众号运营/付费问题咨询