2010-02-03 34 views
9

我有一個元素位於Canvas使用附加的屬性Canvas.TopCanvas.Left。然後用動畫的元素被移動到不同的座標集,這樣的:如何處理WPF中的Canvas.Top更改事件?

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方法

回答

19

人們可以catch attached property changed event

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