问题描述
|
我使用Silverlight 4.0,并且ComboBox控件出现问题。我想实现一个弹出菜单,无需单击鼠标即可显示和隐藏自身。当我将光标放在其区域时,它应该显示-该prt效果很好。然后,只要将鼠标指针放置在其区域之外一段时间,它就应该隐藏。我用MouseEnter和MouseLeave事件实现了它。我的问题是ComboBox-我认为此控件的行为很奇怪。通常,当我将光标放在它上面时,我希望它引发MouseEnter事件;当将鼠标光标放在其他地方时,它会引起MouseLeave事件。实际情况有所不同:每当我单击组合框时,它就会打开并显示选项列表,并立即发送LostFocus和MouseLeave事件。因此,似乎控件失去了键盘焦点,并且鼠标指针已移出其区域,而实际上,optins的组合框列表处于打开状态且处于活动状态,并且具有键盘焦点。
所以问题是我怎么能在程序中知道组合框中发生了什么?为了正确隐藏我的弹出菜单,我需要知道组合框中的选项列表何时打开或关闭。我看不到任何有关此文档或其他任何文档的事件。 (想要的行为是:如果关闭了组合框,则根据鼠标光标的位置隐藏弹出菜单。如果打开了组合框,则在用户在组合框中选择某些内容或关闭组合框之前,我不会隐藏弹出菜单。 )
另外,如果您在更换第三方组合框方面有良好的经验,它看起来和工作方式相似,并且引发了我需要的事件,请告诉我。
解决方法
MSDN为您可能要查看的ComboBox列出了两个事件。
http://msdn.microsoft.com/zh-CN/library/system.windows.controls.combobox_events(v=VS.95).aspx
DropDownClosed在组合框的下拉部分关闭时发生。
DropDownOpened在组合框的下拉部分打开时发生。