Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.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# 以编程方式将DataGridCheckBoxColumn列添加到DataGrid_C#_Wpf_Checkbox_Datagrid - Fatal编程技术网

C# 以编程方式将DataGridCheckBoxColumn列添加到DataGrid

C# 以编程方式将DataGridCheckBoxColumn列添加到DataGrid,c#,wpf,checkbox,datagrid,C#,Wpf,Checkbox,Datagrid,我在我的项目中有一个xaml网格,我在其中使用了复选框。我们的需求发生了变化,现在我们正在以编程方式构建datagrid。如何在csharp中使用xaml。下面是我在xaml中有复选框列的示例 <DataGridTemplateColumn> <DataGridTemplateColumn.Header> <CheckBox x:Name="chkHeader" /> </DataGridTemplateCo

我在我的项目中有一个xaml网格,我在其中使用了复选框。我们的需求发生了变化,现在我们正在以编程方式构建datagrid。如何在csharp中使用xaml。下面是我在xaml中有复选框列的示例

<DataGridTemplateColumn>
    <DataGridTemplateColumn.Header>
       <CheckBox x:Name="chkHeader" />
            </DataGridTemplateColumn.Header>
                <DataGridTemplateColumn.CellTemplate>
                   <DataTemplate>
                            <CheckBox IsChecked="{Binding IsChecked,   
                           ElementName=chkHeader, Mode=OneWay,
                           UpdateSourceTrigger=PropertyChanged}"  />
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
    </DataGridTemplateColumn>
在这里,我以编程的方式注入复选框,这是我在xaml中迄今为止所做的

    Binding columnbinding = new Binding("IsChecked");
    columnbinding.Mode = BindingMode.OneWay;
    columnbinding.RelativeSource = new RelativeSource
    (RelativeSourceMode.FindAncestor);
    columnbinding.RelativeSource.AncestorType = datagrid.GetType();

    CheckBox chkHeader = new CheckBox();
    chkHeader.Content = "ALL";
    chkHeader.SetBinding(CheckBox.IsCheckedProperty, columnbinding);
    DataGridCheckBoxColumn checkBoxColumn = new   
    DataGridCheckBoxColumn();
    checkBoxColumn.Header = chkHeader;
    checkBoxColumn.Binding = columnbinding;
    AudioPlayBackGrid.Columns.Add(checkBoxColumn);

不知何故,我无法在csharp中实现我在xaml网格中所做的任何帮助,我们将不胜感激

您可以尝试这种方法以编程方式添加列:

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    DataGridTextColumn dgTextColumn = new DataGridTextColumn();
    dgTextColumn.Header = "ID";
    dgTextColumn.Binding = new Binding("ID");
    dataGrid1.Columns.Add(dgTextColumn);

    DataGridCheckBoxColumn dgCheckBoxColumn = new DataGridCheckBoxColumn();
    dgCheckBoxColumn.Header = "IsChecked";
    dgCheckBoxColumn.Binding = new Binding("IsChecked");
    dataGrid1.Columns.Add(dgCheckBoxColumn);

    DataGridTextColumn dgTextColumn2 = new DataGridTextColumn();
    dgTextColumn2.Header = "Name";
    dgTextColumn2.Binding = new Binding("Name");
    dataGrid1.Columns.Add(dgTextColumn2);

    dataGrid1.Items.Add(new Item() { ID = 1, Name = "Someone1", IsChecked = true });
    dataGrid1.Items.Add(new Item() { ID = 2, Name = "Someone2", IsChecked = false });
    dataGrid1.Items.Add(new Item() { ID = 3, Name = "Someone3", IsChecked = true });
    dataGrid1.Items.Add(new Item() { ID = 4, Name = "Someone4", IsChecked = false });
}
和型号:

public class Item
{
    public int ID { get; set; }
    public string Name { get; set; }
    public bool IsChecked { get; set; }
}    

@jayraja如果您觉得我的回复对您有帮助,那么您可以接受我的回复作为答案,以简化未来的搜索。请看@jayraja,请随时提问
public class Item
{
    public int ID { get; set; }
    public string Name { get; set; }
    public bool IsChecked { get; set; }
}