4

我在 Visual Studio 2010 中遇到了 WPF 设计时的奇怪行为:创建 Popup 类的实例后,我将 Visual Studio 中的代码选项卡切换到不同的文件,Popup 仍然保留在屏幕上!

在此处输入图像描述

我有一段代码,可以重现它,但我不确定是否应该将它粘贴在这里(它不是那么短),所以也许我会给出它的链接:here

4

2 回答 2

2

出于普通人无法理解的未知原因,Microsoft 已决定这是PopupWPF 中类的默认行为。您必须自己实现“隐藏”逻辑。我建议处理包含 Popup 的 Window 的Window.LocationChanged,Window.ActivatedWindow.Deactivatedevents 并自己关闭它。

编辑:为了澄清自己,您需要处理的 Window 事件是包含 PopupPlacementTarget元素的窗口的事件。通常,当您创建一个弹出窗口时,您将其设置为相对于应用程序窗口中包含的某些元素(类似于工具提示的工作方式)。如果这是您的情况,那么我的解决方案是正确的,但我忘了提及有关 PlacementTarget 的这一点。

于 2012-11-12T18:24:44.247 回答
1

在你的代码后面;你可以简单地检查这个布尔值:

DesignerProperties.GetIsInDesignMode(this);

“this”表示包含弹出窗口的对象。例如窗口。

如果是真的,你可以说:

myPopUp.IsOpen = false;

对于商店应用程序/WinRT:

Windows.ApplicationModel.DesignMode.DesignModeEnabled
于 2016-10-13T12:49:58.740 回答