有没有办法在附加属性发生变化时获得变化通知?
一个简单的例子是一个Canvas
,里面有一个Rectangle
。 Rectange
的位置是使用 DepenendyProperties Canvas.Top
和 Canvas.Left
设置的。我使用装饰器通过更改 Canvas.Top
和 Canvas.Left
来移动矩形。
<Canvas Width="500" Height="500" >
<Rectangle Width="40" Height="40" Canvas.Left="10" Canvas.Top="20" />
</Canvas>
下一步是在两个 Rectangles
之间创建一个箭头。为了跟踪移动的Rectangles
,Arrow 必须在Rectangle
的位置发生变化时收到更改通知。如果我可以在附加属性 Canvas.Top
更改时收到更改通知,这将很容易。
感谢您的帮助,
迈克尔
为什么不使用绑定(bind)?这正是它们的设计目的...
如果由于某种原因,您不能使用绑定(bind),您可以添加一个处理程序,以便在属性值更改时得到通知:
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)
{
...
}