需要知道用户何时调整窗口大小

3
我在Silverlight中创建了一个用户控件,因此现在我可以在任何地方多次重复使用它。该控件还使用弹出窗口。当弹出窗口打开时,我会以编程方式设置其位置,使其看起来像是锚定在控件上。但是,当这个弹出窗口已经可见时,用户改变Internet Explorer窗口的大小,页面的内容被移动,而弹出窗口没有移动。[显然]。所以它看起来不再像是锚定在控件上了。如何解决?哪个事件需要处理?
我期望有一些事件在用户更改窗口大小时触发。或者更好的是,有一个事件可以通知我拥有控件重新定位的位置,这样我就知道控件的新位置(我需要知道这个位置以计算弹出窗口的坐标)。由于我希望它作为一个用户控件工作,所以我更喜欢控件本身的本地事件(即不涉及任何全局页面/窗口内容)。请帮助我找到正确的事件。
更新:现在我似乎确实需要知道拥有控件何时移动。因为除了上述窗口大小的更改之外,还可能有其他原因导致其移动。
1个回答

1

我认为你正在寻找SizeChanged事件。您可以订阅该事件以了解何时调整弹出窗口的大小。

如果您的控件是由于其他控件而移动的,则可能无法帮助。因为它可能不会调整大小,只是在新位置排列。

如果这是个问题,您可以使用LayoutUpdated来确定元素内部是否有任何更改。为此,您需要将处理程序附加到RootVisual或其上方的某些内容。


我真的需要知道我的控件何时被移动。整个窗口的调整大小只是控件移动的一个原因,但不是唯一的原因。 - Al Kepp
@Al - 明白了,那你可能需要选择LayoutUpdated。 - CodeNaked
好的,已经是LayoutUpdated了。谢谢。 - Al Kepp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接