ComboBox聚焦时的WPF鼠标行为

时间:2009-05-26 16:53:53

标签: wpf combobox behavior

单击并关注WPF ComboBox时,之后发生的唯一交互可以是ComboBox。如果与其他任何内容进行了互动,包括窗口函数(minimizerestorecloseresize)以及窗口中的任何控件,则会忽略该操作并且ComboBox失去焦点。

此外,窗口按钮上的MouseEnterMouseLeave仍处于活动状态,但当窗口边框(?)上出现MouseEnter时,鼠标指针不会更改为调整大小指针。由于ComboBox使用了弹出控件,因此这种行为很有意义。弹出控件独立于主视觉树而存在,如果窗口移动或调整大小,弹出窗口将保持固定浮动在主窗口上方。

我尝试使用Reflector,看看ComboBox正在做什么,但我找不到我要找的东西。基本上,我不知道这种行为是来自窗口,ComboBox,还是它与弹出窗口有关。我怎么解决这个问题?

2 个答案:

答案 0 :(得分:1)

在你的描述中你是正确的,弹出窗口保持所有动作的焦点,直到它本身失去焦点。如果您正在尝试更改ComboBox的功能,您可能希望查看行为不同的creating your own ControlTemplate,并且不保留弹出控件的默认操作。

希望这会有所帮助,而不是完全确定你想要做什么。

答案 1 :(得分:0)

我知道这个问题很老,但对于来这里寻找答案的人来说,它是使用 Mouse.Capture

ComboBox 在 Mouse.Capture(comboBox, CaptureMode.SubTree) 中设置 OnIsDropDownOpenChanged。这可确保 ComboBox 捕获所有鼠标事件。当 Popup 关闭时 Mouse.Capture(null) 释放鼠标捕获。