WPF datagrid设置Checkbox Column by null值

时间:2014-12-03 13:40:03

标签: wpf data-binding datatrigger

这是一项简单的任务,但我还没有找到解决方案。

我有一个Objets列表,每个Objets包含2个属性,一个String和一个byte []。我将列表设置为我的Datatgid的itemscource。我创建了一个带有绑定到string属性的textcolumn。现在我想添加一个Checkboxcolumn,如果byte []属性为NULL则不应该检查,否则应该检查。

到目前为止,我没有找到这方面的例子,我猜这可能与数据触发器有关,但我甚至无法在没有编译器抱怨的情况下写下来。

1 个答案:

答案 0 :(得分:1)

您可以使用数据绑定引擎并将属性直接绑定到复选框。当然,该复选框需要Nullable<bool>,因此您必须使用IValueConverterbyte[]数组转换为bool?

[ValueConversion(typeof(object), typeof(bool?)]
public class IsNullConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return value == null;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotSupportedException();
    }
}


<CheckBox IsChecked="{Binding Path=MyByteArray,
                              Converter={StaticResource MyConverter},
                              Mode=OneWay}"
          IsEnabled="False" />

注意,我将绑定模式标记为OneWay,并将复选框标记为已禁用(即只读),因为在场景中,允许用户更改复选框的状态是没有意义的。