将数据网格中选定行的所有单元格置于WPF中的编辑模式
本文关键字:单元格 WPF 模式 编辑 数据 网格 数据网 | 更新日期: 2023-09-27 18:24:50
如标题中所述,我希望在编辑模式下获取selectedRow的所有单元格。
到目前为止,我已经尝试获得dataGrid的当前单元格和当前行,如下面代码中所述。
private void DataGrid_Edit_Click(object sender, RoutedEventArgs e)
{
int colIndex = 0;
int rowIndex = 0;
DependencyObject dep = (DependencyObject)e.OriginalSource;
while (dep != null && !(dep is DataGridCell))
{
dep = VisualTreeHelper.GetParent(dep);
}
if (dep == null)
return;
if (dep is DataGridCell)
{
colIndex = ((DataGridCell)dep).Column.DisplayIndex;
while (dep != null && !(dep is DataGridRow))
{
dep = VisualTreeHelper.GetParent(dep);
}
DataGridRow row = (DataGridRow)dep;
rowIndex = FindRowIndex(row);
}
while (dep != null && !(dep is DataGrid))
{
dep = VisualTreeHelper.GetParent(dep);
}
if (dep == null)
return;
DataGrid dg = (DataGrid)dep;
for (int column = 0; column < colIndex; column++)
{
dg.CurrentCell = new DataGridCellInfo(dg.Items[rowIndex], dg.Columns[column]);
dg.BeginEdit();
}
}
上面的代码就像迭代指定行的所有单元格一样工作。但在最后,最后一个单元格被置于编辑模式,因此我无法在编辑模式下获取以前的单元格。
你能建议对selectedRow的所有单元格都这样做吗,而不是我得到的最后一个单元格?
BeginEdit()
将当前单元格置于编辑模式,并结束任何已处于编辑模式的单元格的编辑模式。这就是为什么最后一个单元格总是处于编辑模式。
因此,作为一种变通方法,您可以在选定行的所有单元格上循环,并将单元格的IsEditing属性设置为true