如何在 Datagrid WPF c# 中添加复选框

Posted

技术标签:

【中文标题】如何在 Datagrid WPF c# 中添加复选框【英文标题】:How to Add Check Box in Datagrid WPF c# 【发布时间】:2011-07-10 14:22:11 【问题描述】:

您好,我想在数据网格视图中添加复选框。我已经编写了测试代码但失败了。 我想做的是在数据网格中添加一个复选框,其中包含我添加到其中的项目 带有全选和全选选项。

我不知道该怎么做,所以我需要一些帮助。我很困惑,如果我们动态添加,我们将如何跟踪选中或未选中的复选框。

我有当前代码

    public partial class MainWindow : Window
    
        List<checkedBoxIte> item = new List<checkedBoxIte>();
        public MainWindow()
        
            InitializeComponent();
            for (int i = 0; i < 5; i++)
            
                checkedBoxIte ite = new checkedBoxIte();
                ite.sr = i.ToString();
                ite.ch = new CheckBox();
                item.Add(ite);
            
            dataGrid1.ItemsSource = item
        
    
    public class checkedBoxIte
    
       public string sr get;set;
       public CheckBox ch  get; set; 
    

但我知道添加这样的复选框是最愚蠢的,但这只是一次尝试 上面的类包含两个属性,以后会更多,但都是字符串

【问题讨论】:

【参考方案1】:

WPF 不知道如何处理您的 checkedBoxIte 项目。我建议你改变你的班级如下:

public class checkedBoxIte

   public string MyString get;set;
   public bool MyBool  get; set; 

然后以这种方式设置DataGrid 的列:

<DataGrid AutoGenerateColumns="False">
    <DataGrid.Columns>
        <DataGridTextColumn Header="MyString" Binding="Binding MyString" />
        <DataGridCheckBoxColumn Header="MyBool" Binding="Binding MyBool" />
    </DataGrid.Columns>
</DataGrid>

现在你可以设置ItemsSource:

for (int i = 0; i < 5; i++)

    checkedBoxIte ite = new checkedBoxIte();
    ite.MyString = i.ToString();
    item.Add(ite);

dataGrid1.ItemsSource = item;

【讨论】:

它工作得很好,但我有一些问题,首先有 4 个列出现意味着重复 2。我们如何触发事件或检查这是哪个复选框? 嗯,我不认为有四列是正常的。您确定已将AutoGenerateColumns 设置为False 这是真的。现在正在工作。我可以为第二部分做些什么来检测已检查的行 将处理程序附加到DataGridCellEditEnding,然后从EventArgsRow 属性中提取行。或者,您可以在您的班级上实现INotifyPropertyChanged,然后查看何时直接从那里检查CheckBox

以上是关于如何在 Datagrid WPF c# 中添加复选框的主要内容,如果未能解决你的问题,请参考以下文章

c# wpf datagrid中选择所有复选框的代码

在 WPF 中使用 Datagrid 的多选复选框

如何使用 IEditableObject 对象在 WPF DataGrid 中执行单击复选框选择

c# wpf datagrid 模板列修改某个单元格,更新所选行另一个单元格的值,如何做到呢?

排序时复选框在 WPF Datagrid 中重置

C# wpf datagrid 动态加载数据后改变单元格颜色bug