wpf嵌套弹出窗口

时间:2012-10-26 11:35:45

标签: wpf popup nested

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

1 个答案:

答案 0 :(得分:1)

我有同样的问题。我们的wpf控件库中有一个自定义DropDownSubsetSelector控件。此控件在其控件模板中有Popup StaysOpen="False"。今天,我必须将此控件放在位于wpf的Popup控件内的自定义视图中StaysOpen="False",并且想知道这种意外的嵌套Popup行为。我对此问题的解决方法是检查Microsoft的经典ComboBox控件的源代码。你可以在Combobox Source找到它。您可以看到Popup控件上的行为与Popup位于另一个Popup上的行为完全相同,而且它的模板内部有Popup(可选择下拉列表)项目)。

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