1

我在使用 wpf 弹出窗口时遇到问题,即:

我怎么知道弹出窗口改变了它的位置?

例如:

我有一个弹出窗口,它的位置设置为底部,当我将窗口移动到一个角落时,位置更改为顶部,实际上它没有。我根据弹出窗口打开事件对其进行调试。所有我想知道它我怎么知道它会改变,所以我可以改变提示背景!谢谢。

你可以在这里看到演示图片:

http://i.stack.imgur.com/lxOVl.jpg

http://i.stack.imgur.com/wWEAQ.jpg

4

1 回答 1

1

我有同样的问题。在我的情况下,弹出窗口总是在一个窗口(不是页面)上。我通过注册到 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 会触发弹出窗口的重新对齐,并且较小的值会将其保持在像素边界内。

于 2012-12-13T08:14:31.623 回答