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

时间:2018-08-02 09:29:53

标签: wpf

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

fileDataGrid.Focus();
fileDataGrid.SelectedIndex = 0;

var item = fileDataGrid.Items[0];

fileDataGrid.SelectedItem = item;
fileDataGrid.SelectedItems.Clear();
fileDataGrid.SelectedItems.Add(item);

如果要在该数据网格中导航到第二行,我必须按两次DOWN键:因为首先,网格标题/列会以某种方式聚焦,然后选择第一行的第一单元格。

我想在按下DOWN键时自动导航到第二行。

如何实现?

1 个答案:

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

希望这会有所帮助