我知道关于如何选择第一行还有其他问题,但是我尝试了以下代码:
fileDataGrid.Focus();
fileDataGrid.SelectedIndex = 0;
var item = fileDataGrid.Items[0];
fileDataGrid.SelectedItem = item;
fileDataGrid.SelectedItems.Clear();
fileDataGrid.SelectedItems.Add(item);
如果要在该数据网格中导航到第二行,我必须按两次DOWN键:因为首先,网格标题/列会以某种方式聚焦,然后选择第一行的第一单元格。
我想在按下DOWN键时自动导航到第二行。
如何实现?
答案 0 :(得分:1)
我的方法是我创建了一个通用功能,可以选择所需的单元格
/// <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;
}
}
希望这会有所帮助