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