zoukankan      html  css  js  c++  java
  • BoolToObjectConverter

       介绍两种BoolToObjectConverter,一种是自定义的,一个是devexpress的

       xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"

         xmlns:com="http://schemas.Sample.com.cn/common"

        public class BoolToObjectConverter : DependencyObject, IValueConverter
        {
            public static readonly DependencyProperty TrueValueProperty = DependencyProperty.RegisterAttached(nameof(TrueValue), typeof(object), typeof(BoolToObjectConverter));
            public static readonly DependencyProperty FalseValueProperty = DependencyProperty.RegisterAttached(nameof(FalseValue), typeof(object), typeof(BoolToObjectConverter));
            public static readonly DependencyProperty NullValueProperty = DependencyProperty.RegisterAttached(nameof(NullValue), typeof(object), typeof(BoolToObjectConverter));
            public object NullValue
            {
                get { return GetValue(NullValueProperty); }
                set { SetValue(NullValueProperty, value); }
            }
            public object TrueValue
            {
                get { return GetValue(TrueValueProperty); }
                set { SetValue(TrueValueProperty, value); }
            }
            public object FalseValue
            {
                get { return GetValue(FalseValueProperty); }
                set { SetValue(FalseValueProperty, value); }
            }
    
            public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
            {
                if(value == null || (!(value is bool?) && !(value is bool)))
                {
                    return NullValue;
                }
                return ((bool)value) ? TrueValue : FalseValue;
    
            }
            public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
            {
                return null;
            }
        }
    View Code
        <UserControl.Resources>
                   <com:BoolToObjectConverter x:Key="wrapIconSelector">
                <com:BoolToObjectConverter.TrueValue>
                    <BitmapImage UriSource="pack://application:,,,/Sineva.Modeler.Define;component/image/word-wrap-on.png" />
                </com:BoolToObjectConverter.TrueValue>
                <com:BoolToObjectConverter.NullValue>
                    <BitmapImage UriSource="pack://application:,,,/Sineva.Modeler.Define;component/image/word-wrap-off.png" />
                </com:BoolToObjectConverter.NullValue>
                <com:BoolToObjectConverter.FalseValue>
                    <BitmapImage UriSource="pack://application:,,,/Sineva.Modeler.Define;component/image/word-wrap-off.png" />
                </com:BoolToObjectConverter.FalseValue>
            </com:BoolToObjectConverter>
            <com:BoolToObjectConverter x:Key="actionStateIconSelector">
                <com:BoolToObjectConverter.TrueValue>
                    <BitmapImage UriSource="pack://application:,,,/Sineva.Modeler.Define;component/image/mini_ok.png" />
                </com:BoolToObjectConverter.TrueValue>
                <com:BoolToObjectConverter.NullValue>
                    <BitmapImage UriSource="pack://application:,,,/Sineva.Modeler.Define;component/image/mini_error.png" />
                </com:BoolToObjectConverter.NullValue>
                <com:BoolToObjectConverter.FalseValue>
                    <BitmapImage UriSource="pack://application:,,,/Sineva.Modeler.Define;component/image/mini_error.png" />
                </com:BoolToObjectConverter.FalseValue>
            </com:BoolToObjectConverter>
            <dx:BoolToObjectConverter x:Key="ActionStateIconSelector">
                <dx:BoolToObjectConverter.TrueValue>
                    <Visibility>Visible</Visibility>
                </dx:BoolToObjectConverter.TrueValue>
                <dx:BoolToObjectConverter.FalseValue>
                    <Visibility>Hidden</Visibility>
                </dx:BoolToObjectConverter.FalseValue>
            </dx:BoolToObjectConverter>
        </UserControl.Resources>
    View Code

    这两者的使用区别则是绑定的值有没有null的情况,有null的情况绑定devexpress类型的BoolToObjectConverter则会显示无效bool值转换。但没有null的情况下,两者是都可以绑定的。

    例如某个控件的IsEnabled属性只有true和false则可以绑定devexpress类型的BoolToObjectConverter

     
     
    但愿人长久 千里共婵娟
  • 相关阅读:
    Git提交错了不用慌,这三招帮你修改记录
    codeforces 1443D,解法简单,思维缜密的动态规划问题
    为什么优秀的人总是少数?我从天文学当中获得了一些启示
    本科入行可能吗?做到这3点,斩获BAT offer不是梦
    裸考了一次雅思,我居然学会了数据分析!
    有了Git这个功能,再也不需要依赖IDE了!
    职场中究竟什么是ownership,你是一个有ownership的人吗?
    为何跳槽不考虑腾讯?聊聊我和鹅厂的一点往事
    【Azure DevOps系列】Azure DevOps EFCore命令式脚本部署到SQL数据库
    Linux查看、开启、关闭防火墙操作
  • 原文地址:https://www.cnblogs.com/hellcats/p/8662215.html
Copyright © 2011-2022 走看看