Возможно, проблема в том, что вы устанавливаете 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
.