如何在WPF中处理Canvas.Top更改事件?

我在Canvas使用附加属性Canvas.TopCanvas.Left定位了一个元素。 然后使用动画将元素移动到不同的坐标集,如下所示:

 DoubleAnimation left = new DoubleAnimation( oldLeft, newLeft ); DoubleAnimation top = new DoubleAnimation( oldTop, newTop ); element.BeginAnimation( Canvas.LeftProperty, left ); element.BeginAnimation( Canvas.TopProperty, top ); 

有没有办法在Canvas.TopCanvas.Left被更改时接收事件? 优选地与动画无关。

可以使用DependencyPropertyDescriptorAddValueChanged方法捕获附加属性更改事件 :

 var descriptor = DependencyPropertyDescriptor.FromProperty( Canvas.LeftProperty, typeof( YourControlType ) ); descriptor.AddValueChanged( this, OnCanvasLeftChanged );