Evl*_*tnt 3 navigation wpf treeview tabs
我的TreeViewItem.Items数据模板包含2个文本框.当我在第一个文本框中按Tab键时,焦点将转到第二个文本框.我希望当我在第二个文本框上按Tab键时 - 关注下一个TreeViewItem子项目上的第一个文本框,如果TreeViewItem没有下一个子项目,则焦点将在下一个TreeViewItem上的第一个子项目上进行.怎么做?
<TreeView Name="resultsTv"
ItemTemplate="{StaticResource excerciseResultDataTemplate}"
KeyboardNavigation.TabNavigation="Contained">
<TreeView.ItemContainerStyle>
<Style>
<Setter Property="TreeViewItem.IsExpanded" Value="True"/>
<Setter Property="KeyboardNavigation.TabNavigation" Value="Contained"></Setter>
</Style>
</TreeView.ItemContainerStyle>
</TreeView>
<HierarchicalDataTemplate x:Key="excerciseResultDataTemplate" ItemTemplate="{StaticResource setDataTemplate}" ItemsSource="{Binding Sets}">
<StackPanel Orientation="Horizontal" KeyboardNavigation.TabNavigation="Continue">
<Label Content="{Binding Name}"></Label>
</StackPanel>
</HierarchicalDataTemplate>
<DataTemplate x:Key="setDataTemplate">
<StackPanel Orientation="Horizontal" KeyboardNavigation.TabNavigation="Continue">
<TextBox Width="50" Text="{Binding Weight}"/>
<TextBox Width="50" Text="{Binding Repeats"/>
</StackPanel>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
我自己遇到这个问题,我在互联网上查看了这个问题,只看到了关于WPF商业自定义控件的论坛帖子.但是,由于它们依赖于WPF的通用容器设计,它们仍然可以工作:
将标记的KeyboardNavigation.TabNavigation属性设置TreeView为Contained并在树中包含以下内容:
<TreeView.ItemContainerStyle>
<Style TargetType="TreeViewItem">
<Setter Property="KeyboardNavigation.TabNavigation" Value="Continue"/>
</Style>
</TreeView.ItemContainerStyle>
Run Code Online (Sandbox Code Playgroud)
这有三个问题.Shift-tab根本不起作用.(请参阅此问题.)此外,向上和向下箭头键不起作用.我刚刚发现这样做会处理MouseLeftButtonUp事件,这样就不会触发你自己的事件.
| 归档时间: |
|
| 查看次数: |
5869 次 |
| 最近记录: |