我正在尝试设置 WPF 组合框的样式。一切正常,除了 IsEditable="true"时,Shift+Tab 拒绝移回上一个控件。似乎每次按下 Shift+Tab 时都会重新选择包含的 TextBox。选项卡工作正常。
我在这里使用 MS 发布的源代码:https://learn.microsoft.com/en-us/dotnet/desktop/wpf/controls/combobox-styles-and-templates?view=netframeworkdesktop-4.8
github 上报告了一个问题,此处:https://github.com/dotnet/docs/issues/11552
但没有人提供解决方案。
我已经尝试了所有明显的事情,包括将 TabIndex 添加到另一个答案中建议的窗口中的所有控件,以及将 KeyboardNavigation.TabNavigation 设置为“无”和“本地”。我错过了什么?
无样式的组合框工作正常。
最佳答案
您必须从 IsTabStop="False"
中删除制表位 ( ComboBox
) ,如果处于编辑模式 ( IsEnabled="True"
)。最好给 Style
添加相应的触发器:
<Style TargetType="{x:Type ComboBox}">
...
<Style.Triggers>
<Trigger Property="IsEditable" Value="true">
<Setter Property="IsTabStop" Value="false"/>
</Trigger>
</Style.Triggers>
</Style>
最好使用 XAML 设计器提取模板,方法是右键单击选定的控件(在设计 View 中)并选择“编辑模板 | 编辑副本...”或使用Visual Studio Blend 修改控件的原始样式。 Microsoft Docs 提供的样式和模板并不总是准确的。原始样式(使用 Visual Studio 或 Blend 提取时)已经定义了此触发器,而 Microsoft Docs 版本中缺少该触发器。
关于wpf - Shift+Tab 在样式化 WPF 组合框中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64957928/