private void ResetSizes(TabControlVertical control)
        {
            UIElement parent = control.FindParentControlBase(typeof(TabControlVertical));

            if (parent == null)
            {
                if (control.Content.MaxHeight == double.PositiveInfinity)
                {
                    return;
                }

                control.Content.MaxHeight = double.PositiveInfinity;

                control.Content.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));

                control.InvalidateVisual();

                return;
            }

            this.ResetSizes(parent.To <TabControlVertical>());

            if (control.Content.MaxHeight == double.PositiveInfinity)
            {
                return;
            }

            control.Content.MaxHeight = double.PositiveInfinity;

            control.Content.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));

            control.InvalidateVisual();

            return;
        }
        private void ForceChildTablsResize(TabControlVertical control, int depth, out double controlHeight, out double downSize)
        {
            controlHeight = double.PositiveInfinity;

            if (!control.IsLoaded)
            {
                downSize = double.PositiveInfinity;

                return;
            }

            if (control.Content == null || !control.Content.IsLoaded)
            {
                downSize = double.PositiveInfinity;

                return;
            }

            UIElement parent = control.FindParentControlBase(typeof(TabControlVertical));

            if (parent == null)
            {
                control.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));

                controlHeight = control.ActualHeight;

                downSize = controlHeight - control.uxTabs.DesiredSize.Height;

                control.InvalidateVisual();

                return;
            }

            TabControlVertical parentBase = parent.To <TabControlVertical>();

            int nextDepth = depth + 1;

            this.ForceChildTablsResize(parent.To <TabControlVertical>(), nextDepth, out controlHeight, out downSize);

            downSize = downSize - control.uxTabs.DesiredSize.Height - 60;

            if (downSize < 100)
            {
                return;
            }

            control.Content.MaxHeight = downSize;

            control.InvalidateVisual();
        }