Ejemplo n.º 1
0
        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();
        }