附属物业变更事件?
如果附加属性发生变化,有没有办法获得变更通知?
一个简单的例子是一个带有Rectangle
的Canvas
。 使用DepenendyProperties Canvas.Top
和Canvas.Left
设置Rectange
的位置。 我正在使用Adorner通过更改Canvas.Top
和Canvas.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) { ... }