В WPF (MVVM, нет кода позади), скажем, у меня есть следующий код XAML:Как предотвратить закладка навигации к элементу управления, позволяя при этом курсовую навигацию к этому элементу управления
<StackPanel>
<Button>Normal 1</Button>
<Button>Special</Button> <!--This button should not tab focus, but still focus via arrow keys-->
<Button>Normal 2</Button>
</StackPanel>
По умолчанию, (1) между кнопками или (2) стрелкой вверх/вниз между кнопками. Я хочу сделать одну из кнопок - Специальная кнопка - не сфокусирована через вкладку, но все же фокусируется с помощью кнопок вверх/вниз. Я попробовал IsTabStop="False"
, но это также предотвращает фокусировку этой кнопки с помощью направленной навигации (стрелки вверх/вниз).
Как я могу удалить одну кнопку из вкладок навигации, в то время как продолжает позволять Направленные навигации? Вкладка и стрелка должны быть без изменений для всех остальных элементов управления.
Я пробовал комбинации IsTabStop
, KeyboardNavigation.TabNavigation
и KeyboardNavigation.DirectionalNavigation
безрезультатно. Возможно, я не нашел правильный микс. Или, может быть, есть другой подход. Идеи?
EDIT: Хорошо, я добавляю щедрот. Чтобы быть ясным, я ищу MVVM, без кода для украшения элемента управления (например, через стиль, прикрепленное свойство, прикрепленное поведение и т. Д.), Так что он удаляется из порядка табуляции, оставаясь действительной навигационной навигацией цель. Знание жесткого кодирования элементов управления в окне (или аналогичном) неприемлемо. Это должно быть общим, многоразовым решением. Что-то вроде: <Button AllowDirectionalNavigationButPreventTabNavigation="True"/>
.
Это должно помочь: [WPF: Как отключить вкладки навигации без одновременного отключения клавиши со стрелкой навигации?] [1] [1]: http://stackoverflow.com/questions/4210659/wpf-how-to-disable-tab-navigation-without-also-disabling-arrow-key-navigation – Usama
@Joseph Я нашел этот вопрос, но у этого человека был другой сценарий (они использовали listview), и ни один из предлагаемых решений не решает мою точную проблему. Кроме того, принятое решение использует код-позади и требует, чтобы окно узнало о поведении вкладок всех элементов управления внутри него - я хочу, чтобы элемент управления определял его собственное поведение. –