DockPanel サブクラスの ArrangeOverride メソッドで最初に行うことは、実際の配置を処理する基本実装を呼び出すことです。ただし、ここで「理由」に立ち入ることなく (質問とは関係がないため)、 ArrangeOverrideの基本実装が最後の子の Arrange メソッドに渡した Rect を取得する必要があります。
UIElement をクエリして、Arrange メソッドに渡された rect を確認する方法はありますか?
例えば...
protected override Size ArrangeOverride(Size arrangeSize)
{
// Perform default arrangement
var retVal = base.ArrangeOverride(arrangeSize);
// Get the last element (if any)
var lastElement = Children.OfType<UIElement>().LastOrDefault();
// Get the Rect passed to the lastElement in the base.ArrangeOverride call
var lastElementArrangeRect = (lastElement != null)
? lastElement.ArrangeRect // <-- This is what we're looking for
: new Rect();
return retVal;
}
私たちが見つけた唯一の方法は、ArrangeOverride を自分自身で再実装することです。そうすれば、使用されている Rect が明らかにわかるからです。ただし、どのパネル サブクラスでも機能するコードを作成しようとしています。