/// <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; } }