public virtual void SetChildRect(BaseFrameworkElement child, Rect rect, LayoutOverrides layoutOverrides, LayoutOverrides overridesToIgnore, LayoutOverrides nonExplicitOverrides, SetRectMode setRectMode) { overridesToIgnore = this.AdjustOverrideToIgnore(child, overridesToIgnore); if (this.suppressLayoutRoundingCount == 0 && (LayoutRoundingHelper.GetLayoutRoundingStatus((SceneElement)child) & LayoutRoundingStatus.ShouldSnapToPixel) != LayoutRoundingStatus.Off) { rect = LayoutRoundingHelper.RoundRect(child.Platform.GeometryHelper, rect); } using (child.ViewModel.ScopeViewObjectCache()) { using (GridLayoutDesigner.TryCanvasDesignMode(child, rect.Size, true, true)) { LayoutUtilities.EnterLayoutMode(); LayoutOperation layoutOperation = this.CreateLayoutOperation(child); if (layoutOverrides == LayoutOverrides.RecomputeDefault) { layoutOverrides = this.InternalComputeOverrides(child, layoutOperation); } layoutOperation.SetRect(rect, layoutOverrides, overridesToIgnore, nonExplicitOverrides, setRectMode); LayoutUtilities.ExitLayoutMode(); } } }
protected virtual LayoutOverrides InternalComputeOverrides(BaseFrameworkElement element, LayoutOperation layoutOperation) { if (!element.IsAttached) { return(LayoutOverrides.None); } Rect childRect = this.GetChildRect(element); return(layoutOperation.ComputeOverrides(childRect)); }
public LayoutOverrides ComputeOverrides(BaseFrameworkElement element) { LayoutOperation layoutOperation = this.CreateLayoutOperation(element); return(this.InternalComputeOverrides(element, layoutOperation)); }