在撕下标签上激活窗口移动

时间:2012-10-03 19:26:29

标签: c# wpf

我有一个带标签项的tabcontrol。当用户从标签控件中“撕下”它时,我想在自己的窗口中打开一个特定的选项卡。我知道在创建窗口和将标签项移动到该窗口方面该怎么做。

但是,我似乎无法弄清楚如何在创建之后将窗口保持在鼠标下方,当它被撕下时;所以用户交互是无缝的。

我在tabitem的代码中有这个:

 protected override void OnPreviewMouseMove(MouseEventArgs e)
        {
            base.OnPreviewMouseMove(e);
            if(e.LeftButton == MouseButtonState.Pressed && _startPoint != null)
            {
                Point position = e.GetPosition(null);

                if (Math.Abs(position.Y - _startPoint.Value.Y) > SystemParameters.MinimumVerticalDragDistance)
                {
                    Point cursor = Utils.GetCursorPosition();
                    var w = new AttachableWindow(){WindowStartupLocation = WindowStartupLocation.Manual, Left = cursor.X, Top=cursor.Y};
                    w.Show();
                    _startPoint = null;
                    e.Handled = true;
                }
            }
        }

1 个答案:

答案 0 :(得分:0)

使用DragMove方法获取要移动的窗口:

w.Loaded += (sender, args) =>
                        {
                            (sender as Window).DragMove();
                        };

编辑:注意在加载的事件中执行此操作会导致窗口部分呈现。我认为激活的事件是更好的选择。