如何通知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