private void ConnectorControl_Loaded(object sender, RoutedEventArgs e) { var parentNode = this.GetParent <BaseNodeControl>(); if (parentNode == null) { return; } _parentNode = parentNode; _parentNode.LayoutUpdated += ParentNode_LayoutUpdated; var offset = TranslatePoint(new Point(0, 0), _parentNode); _currentControlOffest = new Point(offset.X + ActualWidth / 2, offset.Y + ActualHeight / 2); _xConverter.ManagedOffset = _currentControlOffest.X; SetBinding(XProperty, new Binding("X") { Source = _parentNode, Converter = _xConverter }); _yConverter.ManagedOffset = _currentControlOffest.Y; SetBinding(YProperty, new Binding("Y") { Source = _parentNode, Converter = _yConverter }); }
/// <summary> /// Initializes a new instance of the <see cref="ConnectionContainerControl"/> class. /// </summary> /// <param name="source">The source.</param> /// <param name="destination">The destination.</param> /// <param name="connection">The connection.</param> /// <param name="noneVirtual">If connection is virtual it should be excluded from hit test.</param> public ConnectionContainerControl(BaseNodeControl source, BaseNodeControl destination, IConnection connection, bool noneVirtual = true) { var xprop = DependencyPropertyDescriptor.FromProperty(BaseNodeControl.XProperty, typeof(ConnectorControl)); if (xprop != null) { xprop.AddValueChanged(source, PositionChanged); xprop.AddValueChanged(destination, PositionChanged); } var yprop = DependencyPropertyDescriptor.FromProperty(BaseNodeControl.YProperty, typeof(ConnectorControl)); if (yprop != null) { yprop.AddValueChanged(source, PositionChanged); yprop.AddValueChanged(destination, PositionChanged); } IsHitTestVisible = noneVirtual; m_source = source; m_destination = destination; Connection = connection; DataContext = connection; UpdateData(); }