如何在 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
,然后从EventArgs
的Row
属性中提取行。或者,您可以在您的班级上实现INotifyPropertyChanged
,然后查看何时直接从那里检查CheckBox
。以上是关于如何在 Datagrid WPF c# 中添加复选框的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 IEditableObject 对象在 WPF DataGrid 中执行单击复选框选择