/// <summary>
        /// Override for the Arrange Layout Phase
        /// </summary>
        /// <param name="finalSize">Available size provided by the FluidWrapPanel</param>
        /// <returns>Size taken up by the Panel</returns>
        protected override Size ArrangeOverride(Size finalSize)
        {
            if (layoutManager == null)
            {
                layoutManager = new FluidLayoutManager();
            }

            // Initialize the LayoutManager
            layoutManager.Initialize(finalSize.Width, finalSize.Height, ItemWidth, ItemHeight, Orientation);

            bool isEasingRequired = !isInitializeArrangeRequired;

            // If the children are newly added, then set their initial location before the panel loads
            if ((isInitializeArrangeRequired) && (this.Children.Count > 0))
            {
                InitializeArrange();
                isInitializeArrangeRequired = false;
            }

            // Update the Layout
            UpdateFluidLayout(isEasingRequired);

            // Return the size taken up by the Panel's Children
            return(layoutManager.GetArrangedSize(fluidElements.Count, finalSize));
        }
 /// <summary>
 /// Ctor
 /// </summary>
 public FluidWrapPanel()
 {
     fluidElements = new List <UIElement>();
     layoutManager = new FluidLayoutManager();
     isInitializeArrangeRequired = true;
 }