单击并关注WPF ComboBox时,之后发生的唯一交互可以是ComboBox。如果与其他任何内容进行了互动,包括窗口函数(minimize
,restore
,close
,resize
)以及窗口中的任何控件,则会忽略该操作并且ComboBox失去焦点。
此外,窗口按钮上的MouseEnter
和MouseLeave
仍处于活动状态,但当窗口边框(?)上出现MouseEnter
时,鼠标指针不会更改为调整大小指针。由于ComboBox
使用了弹出控件,因此这种行为很有意义。弹出控件独立于主视觉树而存在,如果窗口移动或调整大小,弹出窗口将保持固定浮动在主窗口上方。
我尝试使用Reflector,看看ComboBox
正在做什么,但我找不到我要找的东西。基本上,我不知道这种行为是来自窗口,ComboBox,还是它与弹出窗口有关。我怎么解决这个问题?
答案 0 :(得分:1)
在你的描述中你是正确的,弹出窗口保持所有动作的焦点,直到它本身失去焦点。如果您正在尝试更改ComboBox的功能,您可能希望查看行为不同的creating your own ControlTemplate,并且不保留弹出控件的默认操作。
希望这会有所帮助,而不是完全确定你想要做什么。
答案 1 :(得分:0)
我知道这个问题很老,但对于来这里寻找答案的人来说,它是使用 Mouse.Capture。
ComboBox 在 Mouse.Capture(comboBox, CaptureMode.SubTree)
中设置 OnIsDropDownOpenChanged
。这可确保 ComboBox 捕获所有鼠标事件。当 Popup 关闭时 Mouse.Capture(null)
释放鼠标捕获。