WPF 更改 DataGridCheckBoxColumn 的行为 null false

本文关键字:null false 更改 DataGridCheckBoxColumn WPF | 更新日期: 2023-09-27 18:33:38

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

null = unchecked
false = half checked
true = checked

现在它看起来像这样:

null = half checked
false = unchecked
true = checked

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

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

WPF 更改 DataGridCheckBoxColumn 的行为 null false

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

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>