Фокус проблемы в датагрид - PullRequest
       19

Фокус проблемы в датагрид

3 голосов
/ 14 августа 2011

Я работаю над бухгалтерским приложением. Мои пользователи совсем не хотят касаться мыши, так как это снижает их скорость ... Поэтому фокусировка очень важна в приложении.Я использую сетку данных для отображения некоторых данных, они хотят, чтобы, как только окно загружалось и данные, заполненные сеткой данных, могли перемещаться в сетке данных с помощью клавиш со стрелками и вызывать команду, нажимая Enter... т.е. клавиатура должна находиться в первом ряду или в первой ячейке.Я перепробовал почти все, но, похоже, здесь ничего не работает, сейчас им нужно нажать TAB один раз, чтобы зайти в сетку данных, даже если последняя строка показывается как выбранная в окне.Перемещаясь вверх и вниз по сетке данных, они должны нажать TAB один раз ... Я не понимаю, в чем здесь проблема ... Вот код, который я использую в загруженном событии Windows для установки пользовательского интерфейса:

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

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

Ответы [ 2 ]

4 голосов
/ 14 августа 2011

Установите SelectedIndex="0" для DataGrid и подпишитесь на событие Loaded. В обработчике событий вы перемещаете фокус на первую строку / ячейку, вызывая MoveFocus

Xaml

* * 1010

Код обработчика событий

private void DataGrid_Loaded(object sender, RoutedEventArgs e)
{
    DataGrid dataGrid = sender as DataGrid;
    dataGrid.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
}
1 голос
/ 14 августа 2011

Попробуйте это

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

Я выполняю этот код внутри загруженного события DataGrid и работает нормально

...