Attached Property Changed Event?

attached-properties, c#, wpf

Solution

Why don't you use a binding ? That's precisely what they're designed for...

If, for some reason, you can't use a binding, you can add a handler to be notified when the value of the property changes :

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

Problem

ist there a way to get a change notification if an attached property changed? A simple example is a `Canvas` with a `Rectangle` in it. The position of the `Rectange` is set by using the DepenendyProperties `Canvas.Top` and `Canvas.Left`. I'm using an Adorner to move the Rectangle around by changing the `Canvas.Top` and `Canvas.Left`. ``` <Canvas Width="500" Height="500" > <Rectangle Width="40" Height="40" Canvas.Left="10" Canvas.Top="20" /> </Canvas> ``` The next step is to create an Arrow between two `Rectangles`. In order to keep track of the moving `Rectangles` the Arrow must get a change notification whenever the position of a `Rectangle`changes. This would be easy if I could just get a changed notification when the Attached Property `Canvas.Top`changes. Thanks for any help, Michael

Original source

Related problems