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(); }