wpf - 列表元素 WPF 之间的制表符

标签 wpf xaml

我有一个列表框,其中每个项目都使用文本框表示。问题是我希望能够在移动到 xaml 窗口中的下一个元素之前在列表框中的所有项目之间切换。

当前(和正常的 WPF 行为)是,当我使用 Tab 键进入列表框时,第一个元素会突出显示,如果我再次使用 Tab 键,则焦点移动到该项目内的文本框中。如果我再次使用 Tab,焦点将移至窗口中的下一个元素(不经过 ListBox 中的任何其他项目)。

我想要的行为如下:当我进入列表框时,第一个文本框自动获得焦点(不突出显示整个项目)*。如果我再次使用 Tab,则列表框中的下一个文本框将获得焦点。当我在列表框中的最后一个文本框上使用 Tab 键时,焦点将移动到下一个控件。

*我已经这样做了,我只是在这里发布它以解释完整的过程。

我一直在寻找解决方案,但一直找不到。

最佳答案

这可以在 xaml 中通过设置以下两个属性来完成。

    <Style TargetType="ListBox" >
        <Setter Property="KeyboardNavigation.TabNavigation" Value="Continue" />
    </Style>

    <Style TargetType="ListBoxItem">
        <Setter Property="IsTabStop" Value="False" />
    </Style>

完整解释见 Derek Wilson's Blog post .

关于wpf - 列表元素 WPF 之间的制表符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1126838/

相关文章:

wpf - 如何重用 DataTemplate 中的控件实例?

c# - 构建 Windows 10 应用程序时出现 Visual Studio 2015 错误,应用程序包包含多个包

c# - WPF DataGrid 行标题可见性错误

wpf - 使用 WPF 样式为所有控件和文本 block 设置边距

wpf - DockPanel 上的淡出动画

c# - 将 DisplayMemberPath 绑定(bind)到 WPF 中的函数

wpf - 如何通过绑定(bind)清除列表框的所选项目

c# - 在用户控件中公开控件的 itemsource 属性

wpf - 将一个大 XAML 拆分为多个 Sub-XAML 文件

c# - DataGrid -- AlternatingRowBackground 颜色干扰 "IsMouseOver"颜色