protected override void OnDrop(DragEventArgs e) { base.OnDrop(e); string xamlString = e.Data.GetData("DESIGNER_ITEM") as string; if (!String.IsNullOrEmpty(xamlString)) { DesignerItem newItem = null; if (XamlReader.Load(XmlReader.Create(new StringReader(xamlString))) is FrameworkElement content) { newItem = new DesignerItem { Content = content, DesignerCanvas = this }; var pos = e.GetPosition(this); if (content.MinHeight != 0 && content.MinWidth != 0) { newItem.Width = content.MinWidth * 2; newItem.Height = content.MinHeight * 2; } else { newItem.Width = DefaultValues.ItemDefaultWidth; newItem.Height = DefaultValues.ItemDefaultHeight; } DesignerCanvas.SetLeft(newItem, Math.Max(0, pos.X - newItem.Width / 2)); DesignerCanvas.SetTop(newItem, Math.Max(0, pos.Y - newItem.Height / 2)); Children.Add(newItem); newItem.Position = new Point(DesignerCanvas.GetLeft(newItem), DesignerCanvas.GetTop(newItem)); DeselectAll(); newItem.IsSelected = true; } e.Handled = true; } }
protected override void OnPreviewMouseDown(MouseButtonEventArgs e) { base.OnPreviewMouseDown(e); if (DesignerCanvas != null) { if ((Keyboard.Modifiers & (ModifierKeys.Shift | ModifierKeys.Control)) != ModifierKeys.None) { IsSelected = !IsSelected; } else { if (!IsSelected) { DesignerCanvas.DeselectAll(); IsSelected = true; } } } e.Handled = false; }
public RubberbandAdorner(DesignerCanvas designerCanvas, Point?dragStartPoint) : base(designerCanvas) { this.designerCanvas = designerCanvas; startPoint = dragStartPoint; adornerCanvas = new Canvas { Background = Brushes.Transparent }; visuals = new VisualCollection(this) { adornerCanvas }; rubberband = new Rectangle { Stroke = Brushes.Navy, StrokeThickness = 1, StrokeDashArray = new DoubleCollection(new double[] { 2 }) }; adornerCanvas.Children.Add(rubberband); }
private static void DpChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { DesignerCanvas dc = (DesignerCanvas)d; dc.DesignerControl.RefreshPlaneStates(); }