1

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

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

此外,如果您在第三方组合框替换方面有很好的经验,它的外观和工作方式相似并且引发了我需要的事件,请告诉我。

4

1 回答 1

1

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

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

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

于 2011-06-13T21:23:55.853 回答