在WPF中使用DataGrid时选择第一行

  • 本文关键字:一行 选择 WPF DataGrid wpf
  • 更新时间 :
  • 英文 :


我知道关于如何选择第一行还有其他问题,但我尝试了以下代码:

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;
}
}

希望它能帮助

最新更新