Присоединенное свойство изменило событие?
Есть ли способ получить уведомление об изменении, если изменилось вложенное свойство?
Простой пример Canvas
с Rectangle
в этом. Положение Rectange
устанавливается с помощью DepenendyProperties Canvas.Top
а также Canvas.Left
, Я использую Adorner для перемещения прямоугольника, изменяя Canvas.Top
а также Canvas.Left
,
<Canvas Width="500" Height="500" >
<Rectangle Width="40" Height="40" Canvas.Left="10" Canvas.Top="20" />
</Canvas>
Следующим шагом является создание стрелки между двумя Rectangles
, Чтобы следить за движением Rectangles
Стрелка должна получать уведомление об изменении всякий раз, когда положение Rectangle
изменения. Это было бы легко, если бы я мог просто получить уведомление об изменении, когда свойство Attached Canvas.Top
изменения.
Спасибо за любую помощь, Майкл
1 ответ
Почему вы не используете привязку? Это именно то, для чего они предназначены...
Если по какой-либо причине вы не можете использовать привязку, вы можете добавить обработчик, который будет уведомлен об изменении значения свойства:
var topDescriptor = DependencyPropertyDescriptor.FromProperty(Canvas.TopProperty, typeof(Rectangle));
var leftDescriptor = DependencyPropertyDescriptor.FromProperty(Canvas.LeftProperty, typeof(Rectangle));
topDescriptor.AddValueChanged(rectangle, rectangle_PositionChanged);
leftDescriptor.AddValueChanged(rectangle, rectangle_PositionChanged);
...
private void rectangle_PositionChanged(object sender, EventArgs e)
{
...
}