установить фокус на управление сеткой в ​​uwp программно - PullRequest
0 голосов
/ 12 января 2020

У меня есть элемент управления Grid с обработчиком KeyUp, прикрепленным к нему в приложении UWP. На этой сетке у меня есть кнопка. При нажатии на кнопку, кнопка сохраняет фокус. В результате события нажатия клавиш не обрабатываются обработчиком, прикрепленным к сетке. Это нежелательное поведение в моем приложении.

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

Придумал этот документ https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.controls.control.focus

Так что я ожидал, что смогу написать Grid.Focus(FocusState.Programmatic); Однако метод Focus не существует в элементе управления Grid .

Кто-нибудь знает, что я делаю неправильно или как это можно решить иначе?

Упрощенный пример XAML

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" x:Name="Grid" KeyUp="Grid_KeyUp">
    <Button Content="MP3" Margin="5" Click="btnOpenMP3_Click" />
</Grid>

1 Ответ

0 голосов
/ 13 января 2020

установить фокус на управление сеткой в ​​uwp программно

Получать из этого case :

Событие нажатия клавиши запускается только из клавиатурно-ориентированное управление. И Сетка - это не элемент управления, а Сетка - это Панель. В UWP только элемент управления может установить фокус.

Пожалуйста, попробуйте написать пустой элемент управления и добавить его в сетку, а затем программно установить фокус элемента управления.

Подробные инструкции см. см. ссылку выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...