我有一个动态DataGrid,其中一列是CheckBox。我创建了一个“Transactions”类,其中我将datagrid的列绑定到该类中的不同属性。我希望我的复选框绑定到一个整数属性。它是一个整数,因为我将查询中的属性填充到我的数据库中。可能的整数是1(True)或0(False)。以下是我到目前为止创建数据库的内容:
private DataGridTemplateColumn GetVoidColumn()
{
DataGridTemplateColumn voidColumn = new DataGridTemplateColumn();
voidColumn.Header = "Void";
Binding bind = new Binding("Visible");
bind.Mode = BindingMode.TwoWay;
// Create the CheckBox
FrameworkElementFactory voidFactory = new FrameworkElementFactory(typeof(CheckBox));
voidFactory.SetValue(CheckBox.IsCheckedProperty, bind);
DataTemplate voidTemplate = new DataTemplate();
voidTemplate.VisualTree = voidFactory;
voidColumn.CellTemplate = voidTemplate;
return voidColumn;
}
在我的实际Datagrid上,CheckBox显示但它们总是未选中,即使该属性显示为1.即使我进行行验证,显示该列的值也是正确的,包含1或行的ItemArray中的0。它只是由于某种原因未在UI中检查复选框。有人可以帮我解决这个问题吗?
答案 0 :(得分:0)
您可以使用Converters
将属性值0和1转换为false和true。可能IsChecked属性不理解值0和1.创建一个实现IValueConverter
的类并应用该转换器将int转换为bool。
另一种选择可能是在你的班级中为此创建一个属性
public bool IsChecked
{
get
{
if(IntProperty == 0)
return false;
return true;
}
set
{
if(value)
IntProperty = 1;
else
IntProperty = 0;
}
}
现在而不是使用上面的属性
绑定int属性bind