Как мне обработать событие изменения Canvas.Top в WPF? - PullRequest
10 голосов
/ 03 февраля 2010

У меня есть элемент, расположенный на Canvas с использованием прикрепленных свойств Canvas.Top и Canvas.Left.Затем с помощью анимации элемент перемещается в другой набор координат, например:

DoubleAnimation left = new DoubleAnimation( oldLeft, newLeft );
DoubleAnimation top = new DoubleAnimation( oldTop, newTop );

element.BeginAnimation( Canvas.LeftProperty, left );
element.BeginAnimation( Canvas.TopProperty, top );

Есть ли способ получать события при изменении Canvas.Top или Canvas.Left?Желательно без связи с анимацией.

1 Ответ

20 голосов
/ 05 февраля 2010

Можно поймать присоединенное свойство, измененное событие , используя DependencyPropertyDescriptor 'AddValueChanged метод:

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