コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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();
        }