protected override Size ArrangeOverride(Size arrangeSize) { Performance.StartTiming(PerformanceMarks.AdornerArrange); if (VisualTreeHelper.GetParent((DependencyObject)this) != null) { if (this._needEvaluateLayout) { this._needEvaluateLayout = false; this._evaluateLayoutList = (List <UIElement>)null; this.EvaluateLayout(); } else if (this._evaluateLayoutList != null) { List <UIElement> list = this._evaluateLayoutList; this._evaluateLayoutList = (List <UIElement>)null; DesignerView currentDesignerView = this.CurrentDesignerView; foreach (UIElement adorner in list) { AdornerProperties.GetLayout((DependencyObject)adorner).EvaluateLayout(currentDesignerView, adorner); } } foreach (UIElement adorner in this.InternalChildren) { AdornerProperties.GetLayout((DependencyObject)adorner).Arrange(adorner); } } Performance.StopTiming(PerformanceMarks.AdornerArrange); return(arrangeSize); }
private void EvaluateLayout() { if (this.Visibility != Visibility.Collapsed && this._hasRendered) { if (this.VisualChildrenCount <= 0 || this.CurrentDesignerView == null) { return; } List <UIElement> list = (List <UIElement>)null; foreach (UIElement adorner in this.InternalChildren) { if (!AdornerProperties.GetLayout((DependencyObject)adorner).EvaluateLayout(this.CurrentDesignerView, adorner)) { if (list == null) { list = new List <UIElement>(); } list.Add(adorner); } } if (list == null) { return; } foreach (UIElement element in list) { this.InternalChildren.Remove(element); } } else { this._needEvaluateLayout = true; } }
internal void OnLayoutChanged(UIElement adorner) { if (VisualTreeHelper.GetParent((DependencyObject)this) == null) { return; } AdornerProperties.GetLayout((DependencyObject)adorner).EvaluateLayout(this.CurrentDesignerView, adorner); this.InvalidateArrange(); }
protected override Size MeasureOverride(Size constraint) { Performance.StartTiming(PerformanceMarks.AdornerMeasure); if (VisualTreeHelper.GetParent((DependencyObject)this) != null) { foreach (UIElement adorner in this.InternalChildren) { AdornerProperties.GetLayout((DependencyObject)adorner).Measure(adorner, constraint); } } Performance.StopTiming(PerformanceMarks.AdornerMeasure); return(new Size()); }