При создании приложения WPF, как предотвратить фокусировку строки меню с помощью вкладки - PullRequest
0 голосов
/ 14 июля 2020

Я пытаюсь определить строку меню в XAML. Моя строка меню выглядит следующим образом:

<DockPanel Margin="1,1,-1,-1">
   <Menu DockPanel.Dock="Top" >
      <MenuItem Header="_File">
      <MenuItem Header="_Settings" />
      <MenuItem Header="_Exit" />
      </MenuItem>
      <MenuItem Header="_Aircraft">
         <MenuItem Header="_A2A Fuel and Payload Manager..." />
      </MenuItem>
   </Menu>
</DockPanel>

Когда я запускаю свое приложение, нажатие клавиши Tab устанавливает фокус на строке меню в дополнение к другим элементам управления в приложении. Стандартное поведение Windows - это не вкладка в строку меню, а просто нажатие клавиши Alt для доступа к ней с клавиатуры. Может ли кто-нибудь объяснить, почему по умолчанию в WPF строка меню помещается в порядок табуляции и как я могу ее удалить?

Ответы [ 2 ]

0 голосов
/ 14 июля 2020

Если вы хотите исключить всю строку меню из навигации с клавиатуры, используйте вложенное свойство KeyboardNavigation.TabNavigation. Настройка None отключит навигацию по вкладкам для всех дочерних элементов из Menu.

<DockPanel Margin="1,1,-1,-1">
   <Menu DockPanel.Dock="Top" KeyboardNavigation.TabNavigation="None">
      <!-- Your menu items -->
   </Menu>
</DockPanel>

Причина, по которой MenuItem имеет фокус клавиатуры в Во-первых, значение по умолчанию для присоединенного свойства - Continue, что по сути означает: если дочерние элементы являются табуляцией, они получат фокус.

Если вы хотите только исключить конкретные c элементы управления с клавиатуры, установить IsTabStop="False". Это повлияет только на сам элемент управления, но не на его дочерние элементы.

<MenuItem Header="_File" IsTabStop="False">
0 голосов
/ 14 июля 2020

Каждый элемент управления в wpf имеет TabIndex, поэтому для пропуска некоторых элементов управления достаточно установить KeyboardNavigation.TabNavigation="None"

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