如何通知UIElement何时被移动(例如:当Panel重新排列其子元素,或者动画正在移动它们时)?Silverlight:如何移动元素时通知我?
到目前为止,我已经调查了以下死角: a)LayoutUpdated事件:当Panel移动东西时起作用 - 但在动画应用到子事件的位置时不会触发。
b)绑定:我用回调创建了一个DP(称为ProxyLeft),并将它绑定到子元素的Canvas.Left DP的值。
这确实有效(因为对最终用户或应用动画的子元素的Canvas.Left所做的所有更改都会被拾取)。 但是Canvas.Left的绑定不是'hollistic enough':它只会在面板是Canvas的情况下才起作用,但如果面板是StackPanel则没有用(StackPanel的不使用Canvas.Left来确定元素的位置(当面板尺寸变化和/或之前的兄弟姐妹在尺寸上添加或更新等时,布局被更新) 我想我正在寻找的是对子元素的Rect的绑定......但是, 't exists。
目前,我没有看到这样做的方式,除非我是Panel(CustomPanel)的创建者并且可以参与布局机制,并且在那一刻更新一个AttachedProperty子元素(例如:CustomPanel.Rect)......并且即使这样也不起作用 - 因为它不会被应用于子元素的动画更新。
元素移动时可以通知吗?如果是这样,怎么样?
非常感谢。
在a)你正在听哪个元素的LayoutUpdated?面板还是您想要遵循的元素? – AnthonyWJones 2009-12-28 17:24:30