我正在开发一个自定义控件,它有一个打开弹出窗口的按钮。当该弹出窗口包含我的自定义控件的另一个实例(它也有一个打开另一个弹出窗口的按钮,例如日历)时,会出现一些问题。第二个(嵌套)弹出窗口不会被怀疑。当父弹出窗口关闭时,点击不起作用,不会关闭。使用嵌套弹出窗口时是否有任何特定的最佳实践?
问问题
941 次
1 回答
1
我遇到过同样的问题。DropDownSubsetSelector
我们的 wpf 控件库中有一个自定义控件。此控件Popup
在其控件模板中有一个带有StaysOpen="False"
. 今天,我不得不将此控件放在位于 wpfPopup
控件内部的自定义视图上,StaysOpen="False"
并且对这种意外Popup
的嵌套行为感到好奇。我对这个问题的解决方法是检查微软的经典ComboBox
控件的源代码。你可以在这里找到它Combobox Source。正如您所看到的,它在控件上的行为与您期望在另一个Popup
控件上的行为完全相同,并且它的模板内部有 Popup(可选项目的下拉菜单)。Popup
Popup
您必须订阅事件MouseDownEvent
并LostMouseCaptureEvent
处理鼠标捕获,以便正确处理控制区域MouseDownEvent
之外的情况。Popup
检查并复制一些源代码为您的嵌套ExtendedPopup
. 您可以从 classic 继承它Popup
。
于 2014-04-03T17:23:56.813 回答