Exemplo n.º 1
0
        private void TabStackPanelPreviewMouseDown(object sender, MouseButtonEventArgs e)
        {
            if (EditorTabs.Count <= 1)
            {
                return;
            }

            var textBlock = e.Source as TextBlock;

            if (textBlock == null)
            {
                return;
            }

            var stackPanel = textBlock.Parent as StackPanel;

            if (stackPanel == null)
            {
                return;
            }

            var contentPresenter = stackPanel.TemplatedParent as ContentPresenter;

            if (contentPresenter == null)
            {
                return;
            }

            _tabDragTimer          = new Timer(500);
            _tabDragTimer.Elapsed += (o, args) =>
            {
                Dispatcher.Invoke(() =>
                {
                    if (Mouse.PrimaryDevice.LeftButton != MouseButtonState.Pressed)
                    {
                        return;
                    }

                    _tabDragTimer.Stop();
                    _tabDragTimer.Dispose();
                    _tabDragTimer = null;

                    _dragAdorner = new DragAdorner(TopWindowGrid, CreateScriptDragAdornerElement(textBlock.Text))
                    {
                        MousePosition = e.GetPosition(this)
                    };

                    DragOver += TopWindowGridOnDragOver;


                    DragDrop.DoDragDrop(contentPresenter, contentPresenter, DragDropEffects.All);


                    DragOver -= TopWindowGridOnDragOver;

                    _dragAdorner.Remove();

                    _dragAdorner = null;
                });
            };
            _tabDragTimer.Start();
        }