zoukankan      html  css  js  c++  java
  • 【WPF】PopupColorEdit 的使用

    一、前言

           PopupColorEdit 是 dev中一个常用的调色盘控件,它的Color属性返回的是一个System.Windows.Media.Color对象,而不是System.Drawing.Color对象。

    二、实例

           一般而言数据库存放的是16进制颜色表示法,那么我们需要把它转换为RGB的格式来支持PopupColorEdit控件

            View:(这里的DataColor还是16进制的,所以我们要写一个Converter)

      <dxe:PopupColorEdit  HorizontalAlignment="Center" VerticalContentAlignment="Center" Width="120"
                           AllowNullInput="False" 
                           VerticalAlignment="Center" 
                           IsTextEditable="False"
                           Color ="{Binding DataColor, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged,Converter={x:Static cvt:ColorConverter.Instance}}"/>

          

             Converter :

        public class ColorConverter : IValueConverter
        {
            public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                if (value != null)
                {
                    var drawingColor =  ColorTranslator.FromHtml(value.ToString());
                    var mediaColor = System.Windows.Media.Color.FromArgb(drawingColor.A, drawingColor.R, drawingColor.G, drawingColor.B);
                    return mediaColor;
                }
                return  System.Windows.Media.Color.FromArgb(0,0,0,0);
            }
    
            public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                if (value != null)
                {
                    var mediacolor = (System.Windows.Media.Color)value;
                    var drawingcolor = Color.FromArgb(mediacolor.A, mediacolor.R, mediacolor.G, mediacolor.B);
                    return ColorTranslator.ToHtml(drawingcolor);
                }
                return "#000000";
            }
    
            private static ColorConverter _instance;
            public static ColorConverter Instance
            {
                get
                {
                    if (_instance == null)
                    {
                        _instance = new ColorConverter();
                    }
                    return _instance;
                }
            }
        }

             这里的Converter牵涉到了System.Windows.Media.Color 与 System.Drawing.Color的相互转换。

             System.Drawing.Color相当于System.Windows.Media.Color(RGB格式)与16进制颜色表示法的媒介。

     

    三、结语

           发现工作一年多,用户体验-操作界面这块做了很多工作,Dev WPF这套MVVM的框架越写越顺手,大多数时间是在挖掘新控件,寻找人机交互的最和谐方式。

            之后会逐步往业务逻辑,产品授权优化这块儿学习新知识。

  • 相关阅读:
    jQuery过滤器 过滤器
    查询总结
    ado.net
    禅修程序员十诫
    Asp.net中Bind()和Eval()的区别
    什么是好代码?
    12 个有效的提高编程技能的方法
    Visual Studio各种版本之间的转换工具
    程序员的培养
    session和cookie的区别和联系!
  • 原文地址:https://www.cnblogs.com/lovecsharp094/p/7350489.html
Copyright © 2011-2022 走看看