3

このアプリでは、Element ホスト内に小さな WPF Listbox をホストし、PreviewMouseDown イベントを使用してドラッグ アンド ドロップを実装します...

   private void Border_PreviewMouseMove(object sender, MouseEventArgs e)
        {
            // Get the current mouse position
            Point mousePos = e.GetPosition(null);
            Vector diff = startPoint - mousePos;

            if (e.LeftButton == MouseButtonState.Pressed &&
                Math.Abs(diff.X) > SystemParameters.MinimumHorizontalDragDistance &&
                Math.Abs(diff.Y) > SystemParameters.MinimumVerticalDragDistance)
            {
                OnDragStarted(e);                
            } 

        }

私たちが目にしている問題は、アイテムをクリックしてドラッグすると、マウスが Elementhost を離れる前に WPF コントロールが PreviewMouseMove イベントを 1 つしか発生させないため、マウスが Elementhost に戻って別の PreviewMouseMove に戻るまでドラッグ操作が開始されないことです。イベントが発生します。

このケースを処理する堅牢な方法はありますか?

4

1 に答える 1

2

マウスダウンイベントでマウスをキャプチャする必要があります。その後のマウスの移動は、カーソルがウィンドウの上にない場合でも、常にウィンドウにルーティングされます。WPF で Mouse.Capture() メソッドを使用します。

于 2011-03-14T21:45:38.447 に答える