我正在寫MeasureOverride實現,有一點我堅持。 函數的返回值。 這是代碼。WPF MeasureOverride返回值
protected override Size MeasureOverride(Size availableSize)
{
Double cHeight = 0.0;
Double cWidth = 0.0;
Size size = new Size(0, 0);
foreach (UIElement child in InternalChildren)
{
child.Measure(new Size(availableSize.Width, availableSize.Height));
if (child.DesiredSize.Width > cWidth)
{
cWidth = child.DesiredSize.Width;
}
cHeight += child.DesiredSize.Height;
}
size.Width = double.IsPositiveInfinity(availableSize.Width) ? size.Width : cWidth;
size.Height = double.IsPositiveInfinity(availableSize.Height) ? size.Height : cHeight;
return size;
}
我的理解是返回一個空的Size對象表明元素將使用所有可用的空間。然而,在這種情況下,當可用空間是無限正數時,它將返回零。 它應該不是其他方式。當無限空間可用時,只使用子元素所需的空間?否則,限制自己使用任何可用的空間?
size.Width = double.IsPositiveInfinity(availableSize.Width) ? cWidth : availableSize.Width;
size.Height = double.IsPositiveInfinity(availableSize.Height) ? cHeight : availableSize.Height;