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); }
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; }