У меня проблема с клавиатурной навигацией и ScrollViewer
. Это моя установка:
<DockPanel>
<Button DockPanel.Dock="Top" Content="Add" />
<Button DockPanel.Dock="Top" Content="Clear" />
<ItemsControl DockPanel.Dock="Top" Focusable="False"
ScrollViewer.CanContentScroll="True"
ItemsSource="{Binding ItemsList}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<CheckBox Content="{Binding Item.Name}"
IsChecked="{Binding Selected}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.Template>
<ControlTemplate>
<ScrollViewer Focusable="False">
<ItemsPresenter />
</ScrollViewer>
</ControlTemplate>
</ItemsControl.Template>
</ItemsControl>
</DockPanel>
Перемещение фокуса с помощью клавиш со стрелками вверх и вниз работает нормально, пока фокус не войдет в мое ItemsControls
. Тогда я могу только перемещать фокус внутри него. Например, если я доберусь до верхнего элемента ItemsControls, я бы ожидал, что фокус переместится обратно к моей кнопке «Очистить», но это не так, он застрял внутри ItemsControl. Я пробовал различные варианты KeyboardNavigation.DirectionalNavigation
, но ничего не работает.
Удаление ScrollViewer исправляет навигацию, но это, очевидно, нежизнеспособно, поскольку мне нужно отобразить больше элементов, которые соответствуют экрану.
Есть идеи?