在 DockPanel 子类的 ArrangeOverride 方法中,我们要做的第一件事是调用基本实现,因为它是处理实际排列的人。但是,这里不讨论“为什么”(因为它与问题无关),然后我们需要获取 ArrangeOverride 的基本实现传递给最后一个孩子的 Arrange 方法的 Rect。
有什么方法可以查询 UIElement 以查看传递给其 Arrange 方法的矩形?
例如...
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。但是,我们正在尝试编写可以与任何面板子类一起使用的代码。