【问题标题】:WPF Change behavior of DataGridCheckBoxColumn null falseWPF 更改 DataGridCheckBoxColumn 的行为 null false
【发布时间】:2014-12-09 13:24:15
【问题描述】:

我有 DataGrid 和对象列表。 DataGrid 仅用于可视化。现在我想更改绑定到 DataGridCheckBoxColumn 的行为。我想要三个这样的状态:

null = unchecked
false = half checked
true = checked

现在看起来是这样的:

null = half checked
false = unchecked
true = checked

我可以更改代码内部的逻辑并将 null 视为 false 并将 false 视为 null 但对我来说更好的解决方案将是不同的显示。 绑定看起来像这样

<DataGridCheckBoxColumn Header="SomeColumn" Binding="{Binding SomeProperty}" x:Name="SomeName" Visibility="Visible"/>

【问题讨论】:

    标签: c# wpf datagrid


    【解决方案1】:

    您可以像这样简单地使用转换器:

    public class CheckBoxConverter:IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (value == null)
                return false;
            if ((bool) value)
                return true;
            return null;   //value is false
        }
    
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            //Add the convert back if needed
            throw new NotImplementedException();
        }
    }
    

    Xaml 将是:

     <DataGridCheckBoxColumn Header="SomeColumn" Binding="{Binding SomeProperty,Converter={StaticResource CheckBoxConverter}}" x:Name="SomeName" Visibility="Visible"/>
    

    别忘了将转换器添加到您的窗口(或页面)资源中:

     <Window.Resources>
        <converters:CheckBoxConverter x:Key="CheckBoxConverter"/>
    </Window.Resources>
    

    【讨论】:

      猜你喜欢
      • 2017-06-07
      • 2018-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-27
      • 2010-11-23
      • 2010-11-21
      • 2012-04-09
      相关资源
      最近更新 更多