gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 23:19:55 24 4
gpt4 key购买 nike

我在我的项目中有一个 xaml 网格,我在其中使用复选框我们的要求已更改现在我们正在以编程方式构建数据网格我如何在 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>

这里我以编程方式创建了一个网格

foreach (var field in dc.AllColumns)
{
var binding = new Binding(".") { Converter = new
IndexingDataFieldsConverter(field) };
AudioPlayBackGrid.Columns.Add(new DataGridTextColumn { Header =
field.Field.Description, Binding = binding});
}

在这里我以编程方式注入(inject)复选框,到目前为止我已经在 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; }
}

关于c# - 以编程方式将 DataGridCheckBoxColumn 列添加到 DataGrid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35783885/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com