Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.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
C# 带有复选框的DataGridTemplateColumn_C#_Wpf_Checkbox_Datagridtemplatecolumn_Frameworkelement - Fatal编程技术网

C# 带有复选框的DataGridTemplateColumn

C# 带有复选框的DataGridTemplateColumn,c#,wpf,checkbox,datagridtemplatecolumn,frameworkelement,C#,Wpf,Checkbox,Datagridtemplatecolumn,Frameworkelement,我有一个动态数据网格,其中一列是复选框。我创建了一个“Transactions”类,将datagrid的列绑定到该类中的不同属性。我希望我的复选框绑定到一个整数属性。它是一个整数,因为我正在将查询中的属性填充到数据库中。可能的整数为1(真)或0(假)。以下是我迄今为止创建数据库的方法: private DataGridTemplateColumn GetVoidColumn() { DataGridTemplateColumn voidColumn = new D

我有一个动态数据网格,其中一列是复选框。我创建了一个“Transactions”类,将datagrid的列绑定到该类中的不同属性。我希望我的复选框绑定到一个整数属性。它是一个整数,因为我正在将查询中的属性填充到数据库中。可能的整数为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上,复选框会出现,但它们始终处于未选中状态,即使属性显示为1。即使在执行行验证时,为列显示的值也是正确的,在行的ItemArray中包含1或0。只是由于某种原因,没有在UI中选中复选框。有人能帮我解决这个问题吗?

您可以使用
转换器
将属性值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属性绑定,而是使用上面的属性绑定

是否尝试使用转换器。。。。。将int值转换为bool<代码>http://msdn.microsoft.com/en-us/library/system.windows.data.binding_properties.aspx此lisnk可能会帮助您使用属性
转换器