using System; using System.Collections.Generic; using System.ComponentModel; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; namespace AIStudio.Wpf.DiagramDesigner { public class Connector : ContentControl { protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e) { base.OnMouseLeftButtonDown(e); DesignerCanvas canvas = GetDesignerCanvas(this); if (canvas != null) { canvas.SourceConnector = this; } } public ConnectorOrientation Orientation { get; set; } // iterate through visual tree to get parent DesignerCanvas private DesignerCanvas GetDesignerCanvas(DependencyObject element) { while (element != null && !(element is DesignerCanvas)) element = VisualTreeHelper.GetParent(element); return element as DesignerCanvas; } public FullyCreatedConnectorInfo Info { get { if (Content is FullyCreatedConnectorInfo connectorInfo) return connectorInfo; return this.DataContext as FullyCreatedConnectorInfo; } } } }