1

我有一个动态 DataGrid,其中一列是 CheckBox。我创建了一个“事务”类,在其中我将数据网格的列绑定到该类中的不同属性。我希望我的复选框绑定到一个整数属性。它是一个整数,因为我正在将查询中的属性填充到我的数据库中。可能的整数是 1(真)或 0(假)。到目前为止,这是我创建数据库的内容:

    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 或 0行的 ItemArray。只是由于某种原因未在 UI 中选中该复选框。有人可以帮我解决这个问题吗?

4

1 回答 1

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 属性绑定,而是与上面的属性绑定

于 2012-01-14T18:46:24.680 回答