8

添付プロパティが変更された場合に変更通知を受け取る方法はありますか?

簡単な例は、Canvasが含まRectangleれているです。の位置はRectange、DepenendyPropertiesCanvas.Topとを使用して設定されCanvas.Leftます。Canvas.Topとを変更して、Adornerを使用して長方形を移動していCanvas.Leftます。

<Canvas Width="500" Height="500" >
   <Rectangle Width="40" Height="40" Canvas.Left="10" Canvas.Top="20" />
</Canvas>

次のステップは、2つの間に矢印を作成することRectanglesです。移動を追跡するためにRectangles、矢印の位置が変更されるたびに変更通知を受け取る必要がありRectangleます。添付プロパティが変更されたときに変更通知を受け取ることができれば、これは簡単ですCanvas.Top

助けてくれてありがとう、マイケル

4

1 に答える 1

18

バインディングを使ってみませんか?それはまさに彼らが設計されているものです...

何らかの理由でバインディングを使用できない場合は、プロパティの値が変更されたときに通知されるハンドラーを追加できます。

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)
{
    ...
}
于 2010-03-17T13:28:54.403 に答える