我知道关于如何选择第一行还有其他问题,但我尝试了以下代码:
fileDataGrid.Focus();
fileDataGrid.SelectedIndex = 0;
var item = fileDataGrid.Items[0];
fileDataGrid.SelectedItem = item;
fileDataGrid.SelectedItems.Clear();
fileDataGrid.SelectedItems.Add(item);
如果我想在数据网格中导航到第二行,我必须按两次DOWN键:因为首先,网格标题/列以某种方式聚焦,然后选择第一行的第一个单元格。
当按下向下键时,我想自动导航到第二行。
如何做到这一点?
我的方法是创建一个公共函数来选择所需的单元格
/// <summary>
/// This method selects a cell in the Lines datagrid and begins editing it.
/// </summary>
/// <param name="dataGrid"></param>
/// <param name="column"></param>
/// <param name="rowItem"></param>
private void SelectCell(DataGrid dataGrid, DataGridColumn column, Object rowItem)
{
if (rowItem != null)
{
DataGridCellInfo cellInfo = new DataGridCellInfo(rowItem, column);
if (dataGrid.CurrentCell.Item != cellInfo.Item || dataGrid.CurrentCell.Column != cellInfo.Column)
{
dataGrid.Focus();
dataGrid.CurrentCell = cellInfo;
dataGrid.SelectedIndex = dataGrid.Items.IndexOf(rowItem);
}
else
{
dataGrid.Focus();
dataGrid.CurrentCell = cellInfo;
dataGrid.SelectedIndex = dataGrid.Items.IndexOf(rowItem);
}
}
}
Xaml如下
<DataGrid x:Name="Lines" PreviewKeyDown="Lines_PreviewKeyDown"/>
在Xaml.cs 中
private void Lines_PreviewKeyDown(object sender, KeyEventArgs e)
{
switch (e.Key)
{
case Key.Up:
isBeginingEdit = false;
e.Handled = true;
return;
case Key.Down:
SelectCell(Lines, Lines.Columns[0], Lines.SelectedItem);
e.Handled = true;
return;
}
}
希望它能帮助