【发布时间】:2016-11-03 22:22:20
【问题描述】:
当用户使用键盘箭头浏览项目时,我正在尝试删除用户在ComboBoxItem 上可能具有的悬停状态。但是,当用户将鼠标移到某个项目上时,悬停状态/选择状态会转到该项目。
现在,使用股票 WPF ComboBox,我发现有三种不同组合的状态:聚焦、悬停、选中。例如,在下面的截图中,item3 是被选中的那个,item5 是鼠标悬停状态,item7 是键盘焦点。
我希望我的 ComboBox 的行为是这样的
<!DOCTYPE html>
<html>
<body>
<select>
<option value="Item1">Item #1</option>
<option value="Item2">Item #2</option>
<option value="Item3">Item #3</option>
<option value="Item4">Item #4</option>
</select>
</body>
</html>
- 当我进入下拉菜单时,“已选择”(在本例中为蓝色)值已被选中。
- 如果我将鼠标悬停在某个项目上,该项目将成为“选中”的项目。
- 从那里开始,如果我使用键盘上的箭头,“选定”项目会发生变化,并且在我再次移动鼠标之前没有任何项目处于悬停状态。
我尝试在 Selected 和 MouseOver 状态上使用 VisualStates 和 Trigger,但它似乎不起作用。我还检查了,它可以用EventSetters 完成,但我不知道在哪个Event 上附加处理程序以检测ComboBoxItem 顶部的鼠标移动。
提前感谢您的帮助!
【问题讨论】:
-
在您的 HTML 示例中,悬停实际上不会选择元素,因为组合框本身的值不会更新。
-
你是对的。该值未选中,但如果我单击它或按 Enter 键,它将显示为将被选中的值。这将是我想要的行为。