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