【发布时间】:2011-11-07 11:38:17
【问题描述】:
当您按下 Tab 键时,WPF 组合框不会选择项目。您必须按“Enter”或用鼠标单击该项目以选择它!
这就是我期望它的工作方式:
- 展开组合框
- 使用向上/向下箭头键找到您要选择的项目。
- 在当前项目上按“tab”键将其选中,然后移至下一个字段。
实际上,当您按 Tab 键时,它会循环遍历 ComboBox 中的所有 ComboBoxItem。
【问题讨论】:
标签: wpf
当您按下 Tab 键时,WPF 组合框不会选择项目。您必须按“Enter”或用鼠标单击该项目以选择它!
这就是我期望它的工作方式:
实际上,当您按 Tab 键时,它会循环遍历 ComboBox 中的所有 ComboBoxItem。
【问题讨论】:
标签: wpf
如果有人来这里寻找示例(就像我一样),这里是适用于我的 KeyEvent 事件处理程序的内容:
if (e.Key == Key.Tab || e.Key == Key.Enter)
{
var comboBox = sender as ComboBox;
var newValue = (e.OriginalSource as ComboBoxItem)?.DataContext;
if (newValue != null)
{
comboBox.SelectedItem = newValue;
}
comboBox.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
}
【讨论】:
Tab 被 KeyUp 事件捕获,并且在打开组合框的下拉列表时跟踪当前突出显示的项目的唯一方法是修改控件模板中的文本框,以便您可以访问“已选择”并在您按 Tab 键后将其指定为已选择。
这不是最令人愉快的事情,但这是您强制执行您想要使用的行为的唯一方法,而不是您自己进行完全不同的控制。
【讨论】: