附属物业变更事件?

如果附加属性发生变化,有没有办法获得变更通知?

一个简单的例子是一个带有RectangleCanvas 。 使用DepenendyProperties Canvas.TopCanvas.Left设置Rectange的位置。 我正在使用Adorner通过更改Canvas.TopCanvas.Left来移动Rectangle。

    

下一步是在两个Rectangles之间创建一个箭头。 为了跟踪移动的Rectangles ,只要Rectangle的位置发生变化,箭头就必须获得更改通知。 如果我可以在附加属性Canvas.Top更改时获得更改通知,这将很容易。

谢谢你的帮助,迈克尔

你为什么不使用绑定? 这正是他们为……设计的……

如果由于某种原因,您无法使用绑定,则可以添加一个处理程序,以便在属性值更改时收到通知:

 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) { ... }