Beispiel #1
0
        protected override void StartDrag(UIElement dragObj, MouseButtonEventArgs e)
        {
            mContainedNodes.Clear();
            base.StartDrag(dragObj, e);

            // 计算所有在范围内的节点
            int deepestZIndex = -10;
            var lt            = ContentGrid.TranslatePoint(new Point(0, 0), ParentDrawCanvas);
            var rb            = ContentGrid.TranslatePoint(new Point(ContentGrid.ActualWidth, ContentGrid.ActualHeight), ParentDrawCanvas);
            var nodes         = HostNodesContainer.CtrlNodeList;

            for (int i = 0; i < nodes.Count; i++)
            {
                var checkNode = nodes[i];
                var loc       = checkNode.GetLocation();
                var nRight    = loc.X + checkNode.GetWidth();
                var nBottom   = loc.Y + checkNode.GetHeight();

                if (lt.X <= loc.X && rb.X >= nRight && lt.Y <= loc.Y && rb.Y >= nBottom)
                {
                    var zIndex = Canvas.GetZIndex(checkNode);
                    if (deepestZIndex > zIndex)
                    {
                        deepestZIndex = zIndex;
                    }
                    mContainedNodes.Add(checkNode);
                    checkNode.CalculateDeltaPt(e);
                }
            }
            Canvas.SetZIndex(this, deepestZIndex - 1);
        }