我在 Silverlight 中创建了一个用户控件,所以现在我可以在任何我想要的地方多次重复使用它。此控件还使用弹出窗口。当弹出窗口打开时,我以编程方式设置它的位置,使其看起来像锚定在控件上。但是当这个弹出窗口已经可见并且用户改变了 Internet Explorer 窗口的大小时,页面的内容会被移动并且弹出窗口不会被移动。 [显然。]所以它看起来不再像锚定到控件了。如何解决?处理哪个事件?
我希望当用户更改窗口大小时会触发一些事件。或者甚至更好的事件可以在拥有控件重新定位时通知我,因此我知道控件的新位置(我需要知道该位置以计算弹出窗口的坐标)。因为我希望它作为用户控件工作,所以我更喜欢控件本身的本地事件(即,不要弄乱任何全局页面/窗口的东西)。请帮我找到合适的事件。
更新:在我看来,从字面上看,我需要知道何时移动拥有控件。因为它被移动也可能有其他原因(除了上面提到的窗口大小的变化)。
最佳答案
我想你正在寻找 SizeChanged事件。您可以订阅它以了解何时调整弹出窗口的大小。
如果您的控件因另一个控件而移动,这可能无济于事。由于它可能无法调整大小,只需安排在新位置即可。
如果这是一个问题,您可以使用 LayoutUpdated确定元素内部是否有任何变化。为此,您需要将处理程序附加到 RootVisual 或元素上方的东西。
关于silverlight - 需要知道用户何时调整窗口大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7098929/