我想将行选择从一行更改为下一行,并将焦点从一个单元格更改为同一列上的另一个单元格。
即在我的数据网格中选择第2行,焦点当前在第2行第3列。
当我点击屏幕上的按钮时,必须选择第3个,焦点必须位于第3行第3列。
现在,如果我输入内容,那么它必须自动反映在第3行第3列。
提前致谢!
答案 0 :(得分:1)
尝试使用这个小辅助方法,根据列和行项选择单元格
private static void SelectCell(DataGrid dataGrid, DataGridColumn column, Object rowItem) {
if (rowItem != null) {
//scroll the item into view
dataGrid.ScrollIntoView(rowItem);
dataGrid.ScrollIntoView(rowItem, column);
//get the cell info
DataGridCellInfo cellInfo = new DataGridCellInfo(rowItem, column);
if (dataGrid.CurrentCell.Item == cellInfo.Item && dataGrid.CurrentCell.Column == cellInfo.Column) { }
else {
dataGrid.Focus();
dataGrid.CurrentCell = cellInfo;
//set the cell to be selected
dataGrid.SelectedCells.Clear();
dataGrid.SelectedCells.Add(cellInfo);
}
}
}
答案 1 :(得分:0)
以下代码将解决此问题。
_dgTemp.CommitEdit();
object SelectedItem = _dgTemp.SelectedItem;
DataGridRow _dgRow = DataGridHelper.GetRow(_dgTemp, _dgTemp.Items.IndexOf(SelectedItem));
DataGridCell _dgCell = DataGridHelper.GetCell(_dgTemp, _dgRow, _dgTemp.Columns.IndexOf(_dgTemp.CurrentColumn));
_dgCell.MoveFocus(new TraversalRequest(FocusNavigationDirection.Down));
_dgTemp.ScrollIntoView(_dgTemp.Items.IndexOf(_dgTemp.CurrentItem));
_dgTemp.UpdateLayout();
_dgTemp.SelectedIndex = _dgTemp.Items.IndexOf(_dgTemp.CurrentItem);