System.Windows.Controls.StackPanel.MeasureOverride C# (CSharp) Метод

MeasureOverride() защищенный закрытый Метод

protected final MeasureOverride ( Size availableSize ) : Size
availableSize System.Windows.Size
Результат System.Windows.Size
		protected override sealed Size MeasureOverride (Size availableSize)
		{
			Size childAvailable = new Size (double.PositiveInfinity, double.PositiveInfinity);
			Size measured = new Size (0, 0);
			
			if (Orientation == Orientation.Vertical) {
				// Vertical layout
				childAvailable.Width = availableSize.Width;
				if (!Double.IsNaN (this.Width))
					childAvailable.Width = this.Width;
				
				childAvailable.Width = Math.Min (childAvailable.Width, this.MaxWidth);
				childAvailable.Width = Math.Max (childAvailable.Width, this.MinWidth);
			} else {
				// Horizontal layout
				childAvailable.Height = availableSize.Height;
				if (!Double.IsNaN (this.Height))
					childAvailable.Height = this.Height;
				
				childAvailable.Height = Math.Min (childAvailable.Height, this.MaxHeight);
				childAvailable.Height = Math.Max (childAvailable.Height, this.MinHeight);
			}
			
			// Measure our children to get our extents
			foreach (UIElement child in Children) {
				child.Measure (childAvailable);
				Size size = child.DesiredSize;
				
				if (Orientation == Orientation.Vertical) {
					measured.Height += size.Height;
					measured.Width = Math.Max (measured.Width, size.Width);
				} else {
					measured.Width += size.Width;
					measured.Height = Math.Max (measured.Height, size.Height);
				}
			}
			
			return measured;
		}