如何知道网格上复选框的已选中/未选中状态? [英] How can I know the checked/unckecked status of the checkboxes on the grid?
本文介绍了如何知道网格上复选框的已选中/未选中状态?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我使用以下代码段通过添加列构造了 DataGrid
:
var check = new FrameworkElementFactory(typeof(CheckBox),chkBxDetail);
dgDetalle.Columns.Add(new DataGridTemplateColumn(){CellTemplate =
new DataTemplate(){VisualTree = check}});
for(int i = 0; i <4; i ++)
{
DataGridTextColumn textColumn = new DataGridTextColumn();
textColumn.Binding = new Binding(string.Format([{0}],i));
dgDetalle.Columns.Add(textColumn);
}
如何知道网格上复选框的已选中/未选中状态?
UPDATE
I 不能使用绑定
我创建了 DataGrid
使用此代码片段:
var check = new FrameworkElementFactory(typeof(CheckBox));
dgDetalle.Columns.Add(new DataGridTemplateColumn()
{
CellTemplate = new DataTemplate(){VisualTree = check}
});
for(int i = 0; i <4; i ++)
{
DataGridTextColumn textColumn = new DataGridTextColumn();
textColumn.Binding = new Binding(string.Format([{0}],i));
dgDetalle.Columns.Add(textColumn);
}
然后,我做了一个代码段, c $ c> MessageBox :
string testValues =;
for(int i = 0; i {
DataGridRow row =(DataGridRow)dgDetalle.ItemContainerGenerator.ContainerFromIndex
FrameworkElement cellContent = dgDetalle.Columns [0] .GetCellContent(row);
CheckBox checkBox = VisualTreeHelper.GetChild(cellContent,0)as CheckBox;
if(checkBox!= null&&(checkBox.IsChecked?false))
{
List< string> item =(List< String>)dgDetalle.Items [i];
foreach(var t in item)
{
testValues + = t;
}
}
}
MessageBox.Show(testValues);
总结:
- 使用
ItemContainerGenerator
获取该行 - 从
DataGrid
并将其作为通用展示对象(FrameworkElement
) - 使用
VisualTreeHelper
。请注意,我已经在第一个代码段创建了CheckBox
- 处理所选项
希望它帮助任何人...!
I've constructed a DataGrid
by adding columns programatically using the following snippet:
var check = new FrameworkElementFactory(typeof(CheckBox), "chkBxDetail");
dgDetalle.Columns.Add(new DataGridTemplateColumn() { CellTemplate =
new DataTemplate() { VisualTree = check } });
for (int i = 0; i < 4; i++)
{
DataGridTextColumn textColumn = new DataGridTextColumn();
textColumn.Binding = new Binding(string.Format("[{0}]", i));
dgDetalle.Columns.Add(textColumn);
}
How can I know the checked/unckecked status of the checkboxes on the grid?
UPDATE I can't use binding
解决方案
Finally I got it...
I created the DataGrid
using this snippet:
var check = new FrameworkElementFactory(typeof(CheckBox));
dgDetalle.Columns.Add(new DataGridTemplateColumn()
{
CellTemplate = new DataTemplate() { VisualTree = check }
});
for (int i = 0; i < 4; i++)
{
DataGridTextColumn textColumn = new DataGridTextColumn();
textColumn.Binding = new Binding(string.Format("[{0}]", i));
dgDetalle.Columns.Add(textColumn);
}
Then, I made a snippet to show data from selected items in a MessageBox
:
string testValues = "";
for (int i = 0; i < dgDetalle.Items.Count; i++)
{
DataGridRow row = (DataGridRow)dgDetalle.ItemContainerGenerator.ContainerFromIndex(i);
FrameworkElement cellContent = dgDetalle.Columns[0].GetCellContent(row);
CheckBox checkBox = VisualTreeHelper.GetChild(cellContent, 0) as CheckBox;
if (checkBox != null && (checkBox.IsChecked ?? false))
{
List<string> item = (List<string>)dgDetalle.Items[i];
foreach (var t in item)
{
testValues += t;
}
}
}
MessageBox.Show(testValues);
To summarize:
- Get the row using
ItemContainerGenerator
- Get the specific column from the
DataGrid
and take it as a generic presentation object (FrameworkElement
) - Get the content using
VisualTreeHelper
. Notice that I got theCheckBox
I've created on the first snippet - Process the selected item
Hope it helps anyone...!
这篇关于如何知道网格上复选框的已选中/未选中状态?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文