private static void OnEdgeDragFinished(object sender, System.Windows.Input.MouseButtonEventArgs e) { EdgeControl edgeControl = sender as EdgeControl; if (edgeControl == null) { return; } GraphAreaBase graphAreaBase = edgeControl.RootArea; VertexControl vertexControl = graphAreaBase.GetVertexControlAt(e.GetPosition(graphAreaBase)); if (vertexControl != null) { edgeControl.Target = vertexControl; if (vertexControl.VertexConnectionPointsList.Count > 0) { IVertexConnectionPoint vertexConnectionPoint = vertexControl.GetConnectionPointAt(e.GetPosition(graphAreaBase)); var edge = edgeControl.Edge as IGraphXCommonEdge; if (vertexConnectionPoint != null) { edge.TargetConnectionPointId = vertexConnectionPoint.Id; } else { edge.TargetConnectionPointId = null; } } edgeControl.UpdateEdge(); var obj = (DependencyObject)sender; SetIsDragging(obj, false); //obj.ClearValue(OriginalMouseXProperty); //obj.ClearValue(OriginalMouseYProperty); //obj.ClearValue(OriginalXProperty); //obj.ClearValue(OriginalYProperty); var element = sender as IInputElement; if (element != null) { element.MouseMove -= OnVertexDragging; element.ReleaseMouseCapture(); } } }