聚焦datagrid中的问题

时间:2011-08-14 12:27:07

标签: c# .net wpf focus wpfdatagrid

我正在开发一个会计应用程序,我的用户根本不想触摸鼠标,因为它会降低速度......所以聚焦在应用程序中非常重要。 我正在使用数据网格来显示一些数据,他们想要的是,只要加载窗口并在数据网格中填充数据,他们应该能够使用箭头键在数据网格中移动,并按Enter键来调用命令...即,键盘焦点应位于第一行或第一个单元格。  我已经尝试了几乎所有东西,但似乎没有什么工作在这里,现在他们必须按TAB一次进入数据网格,即使最后一行在窗口中显示为选中我的意思是最后一行被选中但是为了在数据网格中上下都要按TAB一次....我不明白这里的问题是什么...这里是我在Windows的加载事件中使用的代码来设置UI:

dataGrid1.SelectedIndex = dataGrid1.Items.Count -1;
dataGrid1.CurrentItem = dataGrid1.SelectedItem;

dataGrid1.Focus();
dataGrid1.ScrollIntoView(dataGrid1.CurrentItem);

2 个答案:

答案 0 :(得分:4)

SelectedIndex="0"设置DataGrid,为Loaded事件设置为MoveFocus。在事件处理程序中,您可以通过调用<DataGrid ... SelectedIndex="0" Loaded="DataGrid_Loaded">

将焦点移动到第一行/单元格

<强>的Xaml

private void DataGrid_Loaded(object sender, RoutedEventArgs e)
{
    DataGrid dataGrid = sender as DataGrid;
    dataGrid.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
}

事件处理程序背后的代码

{{1}}

答案 1 :(得分:1)

试试这个

//set current cell which you want to edit
dataGrid1.CurrentCell = new DataGridCellInfo(dataGrid1.Items[0], dataGrid1.Columns[0]);
//start editing it
dataGrid1.BeginEdit();

我在DataGrid的加载事件中执行此代码并且工作正常