public override bool EvaluateLayout(DesignerView view, UIElement adorner) { if (view == null) { throw new ArgumentNullException("view"); } if (adorner == null) { throw new ArgumentNullException("adorner"); } BaseAdornerLayout.GetCache((DependencyObject)adorner).DesignerView = view; BaseAdornerLayout.EnsureActualValues((DependencyObject)adorner); ViewItem element = AdornerProperties.GetView((DependencyObject)adorner); if (BaseAdornerLayout.IsAdornableElement(view, element)) { object obj = adorner.ReadLocalValue(BaseAdornerLayout.OriginalVisibilityProperty); if (obj != DependencyProperty.UnsetValue) { adorner.SetValue(UIElement.VisibilityProperty, obj); adorner.ClearValue(BaseAdornerLayout.OriginalVisibilityProperty); } } else { if (element != (ViewItem)null && adorner.ReadLocalValue(BaseAdornerLayout.OriginalVisibilityProperty) == DependencyProperty.UnsetValue) { adorner.SetValue(BaseAdornerLayout.OriginalVisibilityProperty, (object)adorner.Visibility); adorner.Visibility = Visibility.Collapsed; } element = (ViewItem)null; } BaseAdornerLayout.CheckAndInvalidateAdorner(view, element, adorner); return(true); }
private static void EnsureActualValues(DependencyObject adorner) { ViewItem view = AdornerProperties.GetView(adorner); ModelItem model = AdornerProperties.GetModel(adorner); BaseAdornerLayout.LayoutCache cache = BaseAdornerLayout.GetCache(adorner); if (cache.Model == model && !(cache.View != view)) { return; } if (cache.Model != null) { cache.Model.PropertyChanged -= new PropertyChangedEventHandler(BaseAdornerLayout.OnModelItemPropertyChanged); } cache.Model = model; cache.View = view; if (model == null) { return; } model.PropertyChanged += new PropertyChangedEventHandler(BaseAdornerLayout.OnModelItemPropertyChanged); }
public override void Arrange(UIElement adorner) { BaseAdornerLayout.LayoutCache cache = BaseAdornerLayout.GetCache((DependencyObject)adorner); Matrix m1_1 = cache.ElementToDesignerViewTransformMatrix; Matrix m1_2 = cache.DesignerViewToViewportMatrix; if (!MathUtilities.AreClose(m1_1, cache.ElementToDesignerViewTransformMatrix) || !MathUtilities.AreClose(m1_2, cache.DesignerViewToViewportMatrix)) { this.SetupTransform(adorner); } Vector scale = (Vector)adorner.GetValue(TransformAwareAdornerLayout.DesignerElementScalingFactorWithZoom); ViewItem view = AdornerProperties.GetView((DependencyObject)adorner); this.SetAdornerBounds(adorner, view, new Point(0.0, 0.0), scale); if (!(view != (ViewItem)null) || cache.PlatformObjectHashCode == 0 || cache.PlatformObjectHashCode == view.PlatformObject.GetHashCode()) { return; } cache.View = view; cache.RenderSize = view.RenderSize; cache.PlatformObjectHashCode = view.PlatformObject.GetHashCode(); }