public ViewModelConnection(ViewModelConnector source, ViewModelConnector sink) { this.ID = Guid.NewGuid(); this.Source = source; this.Sink = sink; base.Unloaded += new RoutedEventHandler(Connection_Unloaded); }
private void HitTesting(Point hitPoint) { bool hitConnectorFlag = false; DependencyObject hitObject = designerCanvas.InputHitTest(hitPoint) as DependencyObject; while (hitObject != null && hitObject != sourceConnector.ParentDesignerItem && hitObject.GetType() != typeof(ViewModelDesignerCanvas)) { if (hitObject is ViewModelConnector) { HitConnector = hitObject as ViewModelConnector; hitConnectorFlag = true; } if (hitObject is ViewModelDesignerItem) { HitDesignerItem = hitObject as ViewModelDesignerItem; if (!hitConnectorFlag) { HitConnector = null; } return; } hitObject = VisualTreeHelper.GetParent(hitObject); } HitConnector = null; HitDesignerItem = null; }
public ViewModelConnectorAdorner(ViewModelDesignerCanvas designer, ViewModelConnector sourceConnector) : base(designer) { this.designerCanvas = designer; this.sourceConnector = sourceConnector; drawingPen = new Pen(Brushes.LightSlateGray, 2); drawingPen.LineJoin = PenLineJoin.Miter; this.Cursor = Cursors.Cross; }
void thumbDragThumb_DragStarted(object sender, DragStartedEventArgs e) { this.HitDesignerItem = null; this.HitConnector = null; this.pathGeometry = null; this.Cursor = Cursors.Cross; this.connection.StrokeDashArray = new DoubleCollection(new double[] { 1, 2 }); if (sender == sourceDragThumb) { fixConnector = connection.Sink; dragConnector = connection.Source; } else if (sender == sinkDragThumb) { dragConnector = connection.Sink; fixConnector = connection.Source; } }
protected override void OnMouseUp(MouseButtonEventArgs e) { if (HitConnector != null) { if (this.sourceConnector.Orientation.ToString() != "Top" && this.HitConnector.Orientation.ToString() == "Top" && this.sourceConnector.Connections.Count == 0) { ModelChildStateObject SinkconnObj = new ModelChildStateObject(); ModelParentStateObject SourceConnObj = new ModelParentStateObject(); DockPanel Sourcepnl = (DockPanel)this.sourceConnector.ParentDesignerItem.Content; DockPanel Sinkpnl = (DockPanel)this.HitConnector.ParentDesignerItem.Content; ModelConnectorInfo SourceConnInfo = this.sourceConnector.GetInfo(); //Bağlanılan state'in Child'ına atanır SinkconnObj.SourcePoint = this.sourceConnector.Position; SinkconnObj.SinkPoint = this.HitConnector.Position; SinkconnObj.ChildId = Sinkpnl.Uid; SinkconnObj.ChildType = Sinkpnl.Tag.ToString(); //bağlanan state'in Parent'ına atanır SourceConnObj.SourcePoint = this.sourceConnector.Position; SourceConnObj.SinkPoint = this.HitConnector.Position; SourceConnObj.ParentId = Sourcepnl.Uid; SourceConnObj.ParentType = Sourcepnl.Tag.ToString(); SourceConnObj.PropertyName = SourceConnInfo.ToolTip; // if (ArrangeProperties(SinkconnObj, SourceConnObj, Sourcepnl, Sinkpnl)) { ViewModelConnector sourceConnector = this.sourceConnector; ViewModelConnector sinkConnector = this.HitConnector; sourceConnector.DesignerItemName = Sourcepnl.Tag.ToString(); sourceConnector.Name = SourceConnInfo.ToolTip.ToString(); sinkConnector.DesignerItemName = Sinkpnl.Tag.ToString(); sinkConnector.Name = "Top"; ViewModelConnection newConnection = new ViewModelConnection(sourceConnector, sinkConnector); newConnection.SourceToolTip = SourceConnObj.PropertyName; newConnection.SourceDesignerItemId = Sourcepnl.Name; newConnection.SinkDesignerItemId = Sinkpnl.Name; Canvas.SetZIndex(newConnection, designerCanvas.Children.Count); this.designerCanvas.Children.Add(newConnection); } } else { MessageBox.Show("Bağlantıyı doğru şekilde yapınız.!"); } } if (HitDesignerItem != null) { this.HitDesignerItem.IsDragConnectionOver = false; } if (this.IsMouseCaptured) { this.ReleaseMouseCapture(); } AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(this.designerCanvas); if (adornerLayer != null) { adornerLayer.Remove(this); } }