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

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

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

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

person Sudh    schedule 14.08.2011    source источник


Ответы (2)


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

XAM

<DataGrid ...
          SelectedIndex="0"
          Loaded="DataGrid_Loaded">

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

private void DataGrid_Loaded(object sender, RoutedEventArgs e)
{
    DataGrid dataGrid = sender as DataGrid;
    dataGrid.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
}
person Fredrik Hedblad    schedule 14.08.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 и отлично работает

person Haris Hasan    schedule 14.08.2011
comment
Спасибо, приятель, я использовал это раньше, но проблема в том, что он переводит эту ячейку в режим редактирования, чего я не хочу, поскольку приложение должно вести себя по-другому, если они нажмут Enter в этой строке, вообще ничего не вводя. - person Sudh; 15.08.2011
comment
чего ты хочешь тогда? Ячейка должна быть выбрана без режима редактирования? - person Haris Hasan; 15.08.2011
comment
Я имел в виду именно то, что пользователи должны иметь возможность перемещаться по сетке данных с помощью клавиш вверх/вниз и выдавать определенную команду, нажимая Enter, теперь использование команды зависит от текущего выбранного элемента, следовательно, причина выбора первой строки /ячейка во время загрузки.. - person Sudh; 15.08.2011