public void Arrange(Rect finalRect) { using (Dispatcher.CurrentDispatcher.DisableProcessing()) { using (DisableMeasureInvalidation()) { if (Visibility != Visibility.Visible || IsArrangeValid && finalRect.IsClose(PreviousFinalRect)) { LayoutManager.Current.RemoveArrange(this); return; } if (!IsMeasureValid) { Measure(finalRect.Size); } ArrangeCore(finalRect); PreviousFinalRect = finalRect; IsArrangeValid = true; LayoutManager.Current.RemoveArrange(this); LayoutManager.Current.AddUpdatedElement(this); } } }
public void Arrange(Rect finalRect) { using (Dispatcher.CurrentDispatcher.DisableProcessing()) { using (DisableMeasureInvalidation()) { if (Visibility == Visibility.Collapsed) { LayoutManager.Current.RemoveArrange(this); return; } if (IsArrangeValid && finalRect.IsClose(PreviousFinalRect)) { LayoutManager.Current.RemoveArrange(this); return; } if (!IsMeasureValid || !PreviousAvailableSize.IsClose(finalRect.Size)) { Measure(finalRect.Size); } ArrangeCore(finalRect); PreviousFinalRect = finalRect; IsArrangeValid = true; LayoutManager.Current.RemoveArrange(this); } } }