WPF 嵌套弹出窗口



我正在开发一个自定义控件,该控件具有打开弹出窗口的按钮。 当该弹出窗口包含我的自定义控件的另一个实例(该实例也有一个打开另一个弹出窗口的按钮,例如日历)时,会出现一些问题。 第二个(嵌套)弹出窗口不会像可疑的那样运行。当父弹出窗口关闭时,点击不起作用,不会关闭。 使用嵌套弹出窗口时是否有任何特定的最佳实践?

我遇到了同样的问题。我们的 wpf 控件库中有一个自定义DropDownSubsetSelector控件。此控件在其控件模板中具有Popup,其中包含StaysOpen="False"。今天,我不得不将此控件放在位于 wpf 带有StaysOpen="False"Popup控件内的自定义视图上,并且对这种意外的嵌套Popup行为感到好奇。我对此问题的解决方法是检查经典ComboBox控件的源代码Microsoft。你可以在这里找到它 组合框源.如您所见,它在Popup控件上的行为与您期望Popup位于另一个Popup上的行为完全相同,并且它的模板内部有弹出窗口(可选项目的下拉列表)。

您必须订阅事件MouseDownEventLostMouseCaptureEvent并处理鼠标捕获,以便正确处理控件区域之外PopupMouseDownEvent。检查并复制嵌套ExtendedPopup的一些源代码。您可以从古典Popup继承它。

最新更新