我在使用 wpf 弹出窗口时遇到问题,即:
我怎么知道弹出窗口改变了它的位置?
例如:
我有一个弹出窗口,它的位置设置为底部,当我将窗口移动到一个角落时,位置更改为顶部,实际上它没有。我根据弹出窗口打开事件对其进行调试。所有我想知道它我怎么知道它会改变,所以我可以改变提示背景!谢谢。
你可以在这里看到演示图片:
我在使用 wpf 弹出窗口时遇到问题,即:
例如:
我有一个弹出窗口,它的位置设置为底部,当我将窗口移动到一个角落时,位置更改为顶部,实际上它没有。我根据弹出窗口打开事件对其进行调试。所有我想知道它我怎么知道它会改变,所以我可以改变提示背景!谢谢。
你可以在这里看到演示图片:
我有同样的问题。在我的情况下,弹出窗口总是在一个窗口(不是页面)上。我通过注册到 Window 事件来解决它:LocationChanged 和 SizeChanged:
Window w = Window.GetWindow(this);
if (w != null)
{
w.LocationChanged += windowLocationChanged;
w.SizeChanged += windowLocationChanged;
}
要将弹出窗口与窗口(或其中的控件)重新对齐,我使用以下技巧:
if (!_popup.IsOpen)
return;
if (_popup.VerticalOffset == 0.1)
_popup.VerticalOffset = 0;
else
_popup.VerticalOffset = 0.1;
设置 VerticalOffset 会触发弹出窗口的重新对齐,并且较小的值会将其保持在像素边界内。