protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e) { base.OnMouseLeftButtonDown(e); DesignerCanvas canvas = GetDesignerCanvas(this); if (canvas != null) { // position relative to DesignerCanvas this.dragStartPoint = new Point?(e.GetPosition(canvas)); e.Handled = true; } }
private void ShowAdorner() { // the ConnectionAdorner is created once for each Connection if (this.connectionAdorner == null) { DesignerCanvas designer = VisualTreeHelper.GetParent(this) as DesignerCanvas; AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(designer); if (adornerLayer != null) { this.connectionAdorner = new ConnectionAdorner(designer, this); adornerLayer.Add(this.connectionAdorner); } } this.connectionAdorner.Visibility = Visibility.Visible; }
protected override void OnDrop(DragEventArgs e) { base.OnDrop(e); DragObject dragObject = e.Data.GetData(typeof(DragObject)) as DragObject; if (dragObject != null && !String.IsNullOrEmpty(dragObject.Xaml)) { DesignerItem newItem = null; Object content = XamlReader.Load(XmlReader.Create(new StringReader(dragObject.Xaml))); if (content != null) { newItem = new DesignerItem(); newItem.Content = content; Point position = e.GetPosition(this); if (dragObject.DesiredSize.HasValue) { Size desiredSize = dragObject.DesiredSize.Value; newItem.Width = desiredSize.Width; newItem.Height = desiredSize.Height; DesignerCanvas.SetLeft(newItem, Math.Max(0, position.X - newItem.Width / 2)); DesignerCanvas.SetTop(newItem, Math.Max(0, position.Y - newItem.Height / 2)); } else { DesignerCanvas.SetLeft(newItem, Math.Max(0, position.X)); DesignerCanvas.SetTop(newItem, Math.Max(0, position.Y)); } this.Children.Add(newItem); //update selection foreach (ISelectable item in this.SelectedItems) { item.IsSelected = false; } SelectedItems.Clear(); newItem.IsSelected = true; this.SelectedItems.Add(newItem); } e.Handled = true; } }
public override void OnApplyTemplate() { base.OnApplyTemplate(); if (this.ScrollViewer == null) { return; } this.designerCanvas = this.ScrollViewer.Content as DesignerCanvas; if (this.designerCanvas == null) { throw new Exception("DesignerCanvas must not be null!"); } this.zoomThumb = Template.FindName("PART_ZoomThumb", this) as Thumb; if (this.zoomThumb == null) { throw new Exception("PART_ZoomThumb template is missing!"); } this.zoomCanvas = Template.FindName("PART_ZoomCanvas", this) as Canvas; if (this.zoomCanvas == null) { throw new Exception("PART_ZoomCanvas template is missing!"); } this.zoomSlider = Template.FindName("PART_ZoomSlider", this) as Slider; if (this.zoomSlider == null) { throw new Exception("PART_ZoomSlider template is missing!"); } this.designerCanvas.LayoutUpdated += new EventHandler(this.DesignerCanvas_LayoutUpdated); this.zoomThumb.DragDelta += new DragDeltaEventHandler(this.Thumb_DragDelta); this.zoomSlider.ValueChanged += new RoutedPropertyChangedEventHandler <double>(this.ZoomSlider_ValueChanged); this.scaleTransform = new ScaleTransform(); this.designerCanvas.LayoutTransform = this.scaleTransform; }
void Connection_Unloaded(object sender, RoutedEventArgs e) { // do some housekeeping when Connection is unloaded // remove event handler source.PropertyChanged -= new PropertyChangedEventHandler(OnConnectorPositionChanged); sink.PropertyChanged -= new PropertyChangedEventHandler(OnConnectorPositionChanged); // remove adorner if (this.connectionAdorner != null) { DesignerCanvas designer = VisualTreeHelper.GetParent(this) as DesignerCanvas; AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(designer); if (adornerLayer != null) { adornerLayer.Remove(this.connectionAdorner); this.connectionAdorner = null; } } }
protected override void OnMouseDown(System.Windows.Input.MouseButtonEventArgs e) { base.OnMouseDown(e); // usual selection business DesignerCanvas designer = VisualTreeHelper.GetParent(this) as DesignerCanvas; if (designer != null) { if ((Keyboard.Modifiers & (ModifierKeys.Shift | ModifierKeys.Control)) != ModifierKeys.None) { if (this.IsSelected) { this.IsSelected = false; designer.SelectedItems.Remove(this); } else { this.IsSelected = true; designer.SelectedItems.Add(this); } } else if (!this.IsSelected) { foreach (ISelectable item in designer.SelectedItems) { item.IsSelected = false; } designer.SelectedItems.Clear(); this.IsSelected = true; designer.SelectedItems.Add(this); } Focus(); } e.Handled = true; }