예제 #1
0
        /// <summary>
        /// 拖拽结束
        /// </summary>
        /// <param name="p_toolWin"></param>
        internal void OnDragCompleted(ToolWindow p_toolWin)
        {
            if (p_toolWin == null)
            {
                return;
            }

            Pane winItem = p_toolWin.Content as Pane;

            if (_sectWithCompass != null && _compass.DockPosition != DockPosition.None)
            {
                // 停靠在Pane内部
                p_toolWin.ClearValue(ContentControl.ContentProperty);
                _sectWithCompass.AddItem(winItem, _compass.DockPosition);
            }
            else if (_rootCompass.DockPosition != DockPosition.None && _rootCompass.DockPosition != DockPosition.Center)
            {
                // 停靠在四边
                p_toolWin.ClearValue(ContentControl.ContentProperty);
                switch (_rootCompass.DockPosition)
                {
                case DockPosition.Top:
                    winItem.Pos = PanePosition.Top;
                    break;

                case DockPosition.Bottom:
                    winItem.Pos = PanePosition.Bottom;
                    break;

                case DockPosition.Left:
                    winItem.Pos = PanePosition.Left;
                    break;

                case DockPosition.Right:
                    winItem.Pos = PanePosition.Right;
                    break;
                }
                Items.Insert(0, winItem);
            }

            _sectWithCompass          = null;
            _compass.DockPosition     = DockPosition.None;
            _rootCompass.DockPosition = DockPosition.None;
            _compass.Visibility       = Visibility.Collapsed;
            _rootCompass.Visibility   = Visibility.Collapsed;
            _dragCue.Visibility       = Visibility.Collapsed;

            if (_isDragDelta)
            {
                OnLayoutChanged();
                _isDragDelta = false;
            }
        }