ComboBox不会按预期引发键盘和鼠标事件

时间:2011-06-13 19:40:12

标签: silverlight combobox mouseleave lostfocus

我使用Silverlight 4.0并且遇到了ComboBox控件的问题。我想实现一个弹出菜单,它将显示和隐藏自己而不点击鼠标。它应该显示我将光标放在其区域时 - 这个prt运行良好。然后,只要鼠标指针放置在其区域之外一段时间,它就应该隐藏。我用MouseEnter和MouseLeave事件实现了它。 我的问题是ComboBox - 在我看来,这种控制行为奇怪。通常我希望它在我把光标放在它上时引发MouseEnter事件而当我将鼠标光标放在其他地方时鼠标离开。实际情况不同:每当我点击组合框时,它会打开并显示选项列表,并立即发送LostFocus和MouseLeave事件。因此看起来控制失去了键盘焦点并且鼠标指针已经移出其区域,而实际上组合框的optins是打开并处于活动状态并且具有键盘焦点。

所以问题是如何在我的程序中知道组合框中发生了什么?为了正确隐藏弹出菜单,我需要知道组合框中的选项列表何时打开或关闭。我看不到任何针对此文档或任何其他文档的事件。 (通缉行为是:如果组合框关闭,我会根据鼠标光标的位置隐藏弹出菜单。如果组合框打开,我从不隐藏弹出菜单,直到用户选择组合框中的某些内容或关闭组合框。 )

此外,如果您有第三方组合框更换的良好体验,其外观和工作方式相似并且提出我需要的事件,请告诉我。

1 个答案:

答案 0 :(得分:1)

MSDN为ComboBox列出了两个您可能想要查看的事件。

http://msdn.microsoft.com/en-us/library/system.windows.controls.combobox_events(v=VS.95).aspx

DropDownClosed在组合框的下拉部分关闭时发生    DropDownOpened在组合框的下拉部分打开时发生。