childをCanvas
含む があるとしRectangle
ます。次に、ユーザーは、左上隅を上方向および左方向に引っ張って Rectangle のサイズを変更します (右下隅は固定したままにします)。
Rectangle の新しい位置とサイズは次のように設定されます (準コード):
Canvas.SetLeft(rectangle, newLeft);
Canvas.SetTop(rectangle, newTop);
rectangle.Width += oldLeft - newLeft;
rectangle.Height += oldTop - newTop;
WPF は、これらの配置/サイズの変更ごとに再描画を実行しますか (つまり、各プロパティの変更により、関連する要素が無効になり、それ自体で再描画がトリガーされます)、またはそれらは「キューに入れられ」(「ダーティとしてマーク」され)、一度に実行されます。 「次の再描画」で(いつでも)?
編集InvalidateArrange
:Canvas.LeftとCanvas.Topの設定が、そのようなシナリオで複数の呼び出しが行われるCanvas
ため(たとえば、統合されたCanvas.SetTopLeftと比較して) 、冗長/非効率的なコードを個別に表す程度(ある場合)に興味がありますまたはCanvas.SetRectメソッド)。これは、 「InvalidateArrange または特に UpdateLayout を頻繁に呼び出すと、パフォーマンスに重大な影響を与える」という MSDN ドキュメントの警告が原因の1 つです。