Telerik UI For UWP DataGrid Введите ключ - PullRequest
0 голосов
/ 07 ноября 2018

Я использую Telerik Datagrid для UWP. Я использую PreviewKeyDown для захвата клавиши Enter . Я хочу установить фокус на другой элемент управления при нажатии клавиши Ввод .

private async void bookingGrid_PreviewKeyDown(object sender, KeyRoutedEventArgs e)
{
     if (e.Key==Windows.System.VirtualKey.Enter)
     {
        //the methodfires but focus does not shift to the required control
        await FocusManager.TryFocusAsync(anotherControl, FocusState.Keyboard);
        // this does not focus the other control??
     }
}

Другие клавиши работают нормально, а клавиша Enter - нет. Я пробовал

    e.Handled = true;

И

    e.Handled = false;

1 Ответ

0 голосов
/ 07 ноября 2018

Возможно, проблема в том, что вы устанавливаете e.Handled = true слишком поздно.

Когда достигается await, выполнение обработчика событий в основном останавливается для системы, поэтому, если вы установите Handled после await, он не будет принят системой и продолжит выполнение KeyDown, что, скорее всего, не позволит установить фокус на другой элемент управления и сохранит его в DataGrid.

Вам потребуется установить Handled до изменения фокуса:

private async void bookingGrid_PreviewKeyDown(object sender, KeyRoutedEventArgs e)
{
     if (e.Key==Windows.System.VirtualKey.Enter)
     {
        e.Handled = true;
        await FocusManager.TryFocusAsync(anotherControl, FocusState.Keyboard);
     }
}

Альтернативным решением было бы в процессе управления, например, нажать клавишу Enter и установить фокус в обработчике события KeyUp.

...