0

タブアイテムを含むタブコントロールがあります。ユーザーがタブコントロールから特定のタブを「引き裂く」ときに、特定のタブを独自のウィンドウで開きたいと思います。ウィンドウを作成し、タブアイテムをそのウィンドウに移動するという点で何をすべきかを知っています。

しかし、作成した後、ウィンドウが引き裂かれたときに、ウィンドウをマウスの下に保持する方法がわからないようです。したがって、ユーザーの操作はシームレスです。

私はこれを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;
                }
            }
        }
4

1 に答える 1

0

DragMoveメソッドを使用して、ウィンドウを移動させます。

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

編集:loadedイベントでこれを行うと、ウィンドウが部分的にレンダリングされる可能性があることに注意してください。アクティブ化されたイベントの方が良い選択だと思います。

于 2012-10-03T19:34:05.400 に答える