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

zza*_*ndy 10 c# wpf canvas attached-properties

我有一个元素定位在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 );
Run Code Online (Sandbox Code Playgroud)

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

zza*_*ndy 20

人们可以赶上附加属性更改事件使用DependencyPropertyDescriptorAddValueChanged方法:

var descriptor 
    = DependencyPropertyDescriptor.FromProperty( 
        Canvas.LeftProperty, typeof( YourControlType ) 
      );
descriptor.AddValueChanged( this, OnCanvasLeftChanged );
Run Code Online (Sandbox Code Playgroud)