Example #1
0
        protected override void Activate(ModelItem item)
        {
            designObject = item.GetCurrentValue() as LinkableControl;//获得被点击的控件对象

            if (designObject != null)
            {
                designCanvas = designObject.Parent as Panel;
                DesignerView v = DesignerView.FromContext(Context);
                adorner = new ControlAdorner(designObject);
                adorner.RenderTransform = new ScaleTransform(v.ZoomLevel, v.ZoomLevel);

                foreach (var pin in adorner.Children)
                {
                    pin.MouseLeftButtonDown += new MouseButtonEventHandler(Pin_MouseLeftButtonDown); //按下左键选中hitPin,开始拖动
                    pin.MouseMove           += new MouseEventHandler(Pin_MouseMove);                 //移动鼠标,开始找寻目标连接节点
                }

                AdornerPanel.SetAdornerHorizontalAlignment(adorner, AdornerHorizontalAlignment.Stretch);
                AdornerPanel.SetAdornerVerticalAlignment(adorner, AdornerVerticalAlignment.Stretch);
                _panel.Children.Add(adorner);

                Adorners.Add(_panel);
                v.ZoomLevelChanged += (s, e) => { adorner.RenderTransform = new ScaleTransform(v.ZoomLevel, v.ZoomLevel); };
            }

            base.Activate(item);
        }
Example #2
0
        void pinAdorner_MouseUp(object sender, MouseButtonEventArgs e)
        {
            var pinAdorner = sender as PinAdorner;

            if (pinAdorner.HitPin != null)
            {
                LinkableControl targetObject = pinAdorner.HitLinkableControl;
                LinkPin         lp1          = pinAdorner.SourcePin;
                LinkPin         lp2          = pinAdorner.HitPin;

                ConnectInfo info1 = lp1.GetInfo();
                ConnectInfo info2 = lp2.GetInfo();

                LinkLine line = new LinkLine(info1, info2);
                //Panel.SetZIndex(line, designCanvas.Children.Count);

                Binding bi1 = new Binding(omap[info1.Orient]);
                bi1.ElementName = designObject.Name;
                line.SetBinding(LinkLine.OriginInfoProperty, bi1);
                Binding bi2 = new Binding(omap[info2.Orient]);
                bi2.ElementName = targetObject.Name;
                line.SetBinding(LinkLine.TargetInfoProperty, bi2);

                var CanvasModelItem            = AdornerProperties.GetModel(adorner).Parent;
                ModelItemCollection myControls = CanvasModelItem.Properties["Children"].Collection;
                ModelItem           myLinkLine = myControls.Add(line);
            }
            if (pinAdorner.HitLinkableControl != null)
            {
                pinAdorner.HitLinkableControl.IsLinkDragOver = false;
            }

            hitPin = null;
            if (adorner.IsMouseCaptured)
            {
                adorner.ReleaseMouseCapture();
            }
            _panel.Children.Remove(pinAdorner);
        }