internal EditableFrameworkElement(CanvasEditor editor, FrameworkElement element)
        {
            Editor = editor;
            UIElement = element;
            Position = new PointNotifyPropertyChanged(new Point(
                (double)element.GetValue(Canvas.LeftProperty),
                (double)element.GetValue(Canvas.TopProperty)));
            Size = new SizeNotifyPropertyChanged(new Size(
                (double)element.GetValue(Canvas.WidthProperty),
                (double)element.GetValue(Canvas.HeightProperty)));

            Binding xBinding = new Binding(PointNotifyPropertyChanged.XProperty);
            xBinding.Source = Position;
            element.SetBinding(Canvas.LeftProperty, xBinding);

            Binding yBinding = new Binding(PointNotifyPropertyChanged.YProperty);
            yBinding.Source = Position;
            element.SetBinding(Canvas.TopProperty, yBinding);

            Binding wBinding = new Binding(SizeNotifyPropertyChanged.WidthProperty);
            wBinding.Source = Size;
            element.SetBinding(Canvas.WidthProperty, wBinding);

            Binding hBinding = new Binding(SizeNotifyPropertyChanged.HeightProperty);
            hBinding.Source = Size;
            element.SetBinding(Canvas.HeightProperty, hBinding);

            Position.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(Position_PropertyChanged);
            Size.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(Size_PropertyChanged);
        }
Exemplo n.º 2
0
        internal static IEditable CreateWrapperForUIElement(CanvasEditor editor, UIElement element)
        {
            IEditable result = null;

            Assembly assembly = Assembly.GetAssembly(typeof(EditableWrapper));
            string name = element.GetType().Name;
            Type type = assembly.GetType(typeof(EditableWrapper).Namespace + ".Editable" + name);
            if (type != null)
            {
                result = (IEditable)Activator.CreateInstance(type, new object[] { editor, element });
            }

            return result;
        }