wpf - 如何在WPF扩展器控件上设置TabIndex?

标签 wpf expander keyboard-navigation

在此示例窗口中,从第一个文本框到最后一个文本框再到扩展器标题都可以进行制表。

<Window x:Class="ExpanderTab.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300"
    FocusManager.FocusedElement="{Binding ElementName=FirstField}">
    <StackPanel>
        <TextBox TabIndex="10" Name="FirstField"></TextBox>
        <Expander TabIndex="20" Header="_abc">
            <TextBox TabIndex="30"></TextBox>
        </Expander>
        <TextBox TabIndex="40"></TextBox>
    </StackPanel>
</Window>

显然,我希望这样做是第一个文本框,扩展器标题,然后是最后一个文本框。是否有一种简单的方法可以将TabIndex分配给扩展器的 header ?

我尝试使用KeyboardNavigation.IsTabStop="True"强制将扩展器设为tabstop,但这会使整个扩展器获得焦点,并且整个扩展器不会对空格键使用react。在另外两个选项卡之后,再次选择了标题,并且可以使用空格键将其打开。

编辑:
如果有任何想出一种更简洁方法来实现此目的的人,我将为您提供赏金-如果没有,那么rmoore,您就可以得到代表。谢谢你的帮助。

最佳答案

即使没有TabIndex属性,下面的代码也可以使用,为了使预期的Tab键顺序更清楚,将其包括在内。

<Window x:Class="ExpanderTab.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Height="300" Width="300" FocusManager.FocusedElement="{Binding ElementName=FirstField}">
    <StackPanel>
        <TextBox TabIndex="10" Name="FirstField"></TextBox>
        <Expander TabIndex="20" Header="Section1" KeyboardNavigation.TabNavigation="Local">
            <StackPanel KeyboardNavigation.TabNavigation="Local">
                <TextBox TabIndex="30"></TextBox>
                <TextBox TabIndex="40"></TextBox>
            </StackPanel>
        </Expander>
        <Expander TabIndex="50" Header="Section2" KeyboardNavigation.TabNavigation="Local">
            <StackPanel KeyboardNavigation.TabNavigation="Local">
                <TextBox TabIndex="60"></TextBox>
                <TextBox TabIndex="70"></TextBox>
            </StackPanel>
        </Expander>
        <TextBox TabIndex="80"></TextBox>
    </StackPanel>
</Window>

关于wpf - 如何在WPF扩展器控件上设置TabIndex?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/989174/

相关文章:

c# - 整个工具提示的背景色

wpf - 如何将 IsSelected 属性绑定(bind)到文本 block

c# - WPF:帮助 Scrollviewer MouseWheel 行为

jquery - 为什么从 Ajax 加载新文本后 jQuery Expander 就会停止工作?

vim - 为 vim 命令行添加导航键绑定(bind)

html - JAWS 表格导航快捷键和自定义实现的导航键(即箭头键)之间的冲突

c# - 我如何检查在 PropertyChanged 事件中更改了哪个属性

.net - 哪些代码控制 WPF 应用程序的启动?

WPF 列表框 + 扩展器事件

javascript - 使用键盘时需要删除 jQuery 菜单