WPF网格中的键盘导航



假设您有一个stackpanel,其中包含一个scrollviewer,其中包含另一个带有bount obind ockitssource的itemscontrol的stackpanel。此项目源与在运行时创建的网格集合绑定。每个网格都包含一个标签和一个文本框/combobox/几个复选框,这些复选框都在Stackpanel中具有唯一的Tabindex值。这是XAML:

<ScrollViewer Name="scrollViewer" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
  <StackPanel Name="stackPanel" MinWidth="500" Width="Auto">
    <ItemsControl Name="itemsControl"                          ItemsSource="{Binding ElementName=SomeWindow, Path=GridsCollection,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
  </StackPanel>
</ScrollViewer>

我只想从一个控件到另一个控件,而仅在网格集合中的网格中的控件中。到目前为止,我已经尝试了不同的键盘Navigation.tabnavigation设置,但没有任何运气。什么是最好的方法?

TabNavigation设置为KeyboardNavigationMode.Cycle的每个容器,您想要这样的操作,因此,只要您使用 tab> tab ,焦点就不会逃脱它shift tab

KeyboardNavigation.SetTabNavigation(grid1, KeyboardNavigationMode.Cycle);

如果要更改 ctrl tab 行为,请使用KeyboardNavigation.SetControlTabNavigation

您可以应用一个隐式样式,该样式可禁用每个控件,然后将其重新启用,以便您想要的标签:

<ScrollViewer Name="scrollViewer" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
  <ScrollViewer.Resources>
      <Style TargetType="Control">
          <Setter Property="IsTabStop" Value="False" />
      </Style>
  </ScrollViewer.Resources>
  <StackPanel Name="stackPanel" MinWidth="500" Width="Auto">
    <ItemsControl Name="itemsControl"                          
                  ItemsSource="{Binding ElementName=SomeWindow, Path=GridsCollection,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
  </StackPanel>
</ScrollViewer>

不要忘记将动态生成的网格设置为true

相关内容

  • 没有找到相关文章

最新更新