public MainWindow() { InitializeComponent(); Messenger.Default.Register <CutBoardArgs>(this, OnReceivedCutBoardArgs); ArrowWindow arrowWindow = new ArrowWindow(); arrowWindow.Visibility = Visibility.Collapsed; arrowWindow.Show(); }
protected override void OnDragOver(DragEventArgs drgevent) { if (!DesignMode) { if (drgevent.KeyState == 1 && drgevent.Data.GetDataPresent(typeof(TabPageEx))) { TabPageEx over = OverTab(); if (over != null) { TabPageEx draggingTab = drgevent.Data.GetData(typeof(TabPageEx)) as TabPageEx; int draggingTabIndex = ((KRBTabControl)draggingTab.Parent).TabPages.IndexOf(draggingTab); int overringTabIndex = this.TabPages.IndexOf(over); bool checkTabs = over.Parent == draggingTab.Parent; if (!checkTabs) draggingTabIndex = overringTabIndex; if (checkTabs ? overringTabIndex != draggingTabIndex : true) { drgevent.Effect = DragDropEffects.Move; Rectangle rctOver = this.GetTabRect(overringTabIndex); if (overringTabIndex == 0) { rctOver.X += _tabHOffset; } if (_alignments == TabAlignments.Top) { rctOver.Y += 3; } else { rctOver.Y -= 3; } if (dragDropArrowArray[0] == null) dragDropArrowArray[0] = new ArrowWindow(Resources.UpArrow, 255); if (dragDropArrowArray[1] == null) dragDropArrowArray[1] = new ArrowWindow(Resources.DownArrow, 255); Point upArrowPoint = Point.Empty; Point downArrowPoint = Point.Empty; if (overringTabIndex > draggingTabIndex) { if (_alignments == TabAlignments.Top) { downArrowPoint = new Point(rctOver.Right - dragDropArrowArray[1].Width / 2 + 1, rctOver.Top + 2 - dragDropArrowArray[1].Height); upArrowPoint = new Point(rctOver.Right - dragDropArrowArray[0].Width / 2 + 1, rctOver.Bottom - 10); } else { downArrowPoint = new Point(rctOver.Right - dragDropArrowArray[1].Width / 2 + 1, rctOver.Top + 11 - dragDropArrowArray[1].Height); upArrowPoint = new Point(rctOver.Right - dragDropArrowArray[0].Width / 2 + 1, rctOver.Bottom - 3); } } else { if (_alignments == TabAlignments.Top) { downArrowPoint = new Point(rctOver.Left - dragDropArrowArray[1].Width / 2 + 1, rctOver.Top + 2 - dragDropArrowArray[1].Height); upArrowPoint = new Point(rctOver.Left - dragDropArrowArray[0].Width / 2 + 1, rctOver.Bottom - 10); } else { downArrowPoint = new Point(rctOver.Left - dragDropArrowArray[1].Width / 2 + 1, rctOver.Top + 11 - dragDropArrowArray[1].Height); upArrowPoint = new Point(rctOver.Left - dragDropArrowArray[0].Width / 2 + 1, rctOver.Bottom - 3); } } dragDropArrowArray[0].Location = this.PointToScreen(upArrowPoint); dragDropArrowArray[1].Location = this.PointToScreen(downArrowPoint); if (!dragDropArrowArray[0].Visible) dragDropArrowArray[0].Show(); if (!dragDropArrowArray[1].Visible) dragDropArrowArray[1].Show(); } else drgevent.Effect = DragDropEffects.None; } else drgevent.Effect = DragDropEffects.None; } else drgevent.Effect = DragDropEffects.None; } base.OnDragOver(drgevent); }