Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF datagrid按空值设置复选框列_Wpf_Data Binding_Datatrigger - Fatal编程技术网

WPF datagrid按空值设置复选框列

WPF datagrid按空值设置复选框列,wpf,data-binding,datatrigger,Wpf,Data Binding,Datatrigger,这是一项简单的任务,但我还没有找到解决办法 我有一个对象列表,每个对象包含2个属性、一个字符串和一个字节[]。我正在将列表设置为我的Datatgid的ItemsForce。我创建了一个绑定到string属性的textcolumn。现在我想添加一个Checkboxcolumn,如果byte[]属性为NULL,则不应检查它,否则应为checkt 到目前为止,我还没有找到这样的例子,我猜这可能与datatrigger有关,但我甚至不能写下一些东西而不让程序员抱怨 您可以使用数据绑定引擎并将属性直接绑定

这是一项简单的任务,但我还没有找到解决办法

我有一个对象列表,每个对象包含2个属性、一个字符串和一个字节[]。我正在将列表设置为我的Datatgid的ItemsForce。我创建了一个绑定到string属性的textcolumn。现在我想添加一个Checkboxcolumn,如果byte[]属性为NULL,则不应检查它,否则应为checkt


到目前为止,我还没有找到这样的例子,我猜这可能与datatrigger有关,但我甚至不能写下一些东西而不让程序员抱怨

您可以使用数据绑定引擎并将属性直接绑定到复选框。当然,该复选框需要一个
null
,因此您必须使用
IValueConverter
字节[]
数组转换为
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" />
[ValueConversion(typeof(object)、typeof(bool?)]
公共类IsNullConverter:IValueConverter
{
公共对象转换(对象值、类型targetType、对象参数、CultureInfo区域性)
{
返回值==null;
}
公共对象转换回(对象值、类型targetType、对象参数、CultureInfo区域性)
{
抛出新的NotSupportedException();
}
}


注意,我将绑定模式标记为单向,将复选框标记为禁用(即只读),因为在这种情况下,允许用户更改复选框的状态是没有意义的。

您是否尝试过使用值转换器?您将能够在字节[]之间进行转换bool,这里有一个链接:我无法在我的XAML中设置StaticResource。我创建了一个名为myconverter的IsNullConverter实例,并尝试了以下操作:VisualStudio抱怨它找不到它。@Lorgarn:查看这个msdn链接,了解如何创建静态资源:它不是那样工作的。我几乎花了一整晚才弄明白。首先,我必须创建一个创建一个lokal命名空间,之后我可以使用它从转换器类创建一个资源,而无需在代码隐藏中创建它的实例。然后我可以使用资源中的键值作为静态资源,如上面的代码所示。我非常感谢您的帮助,我会将此标记为已回答,但我无法在此注释中发布代码,您可以使用如果XAML是完整的,那么样例对其他人的帮助会大得多。