3

私は Wpf プロジェクトに取り組んでいますが、現在ListView問題が発生しています。

Drag&DropListView に正常に機能する機能を実装したことがわかりました。下または上にスクロールしようとすると問題が発生します。これを行うと、Drag&Drop機能がアクティブになり、スクロールし続けることができなくなります。

コントロールをイベントにアタッチする必要があることを示すこのソリューションを見つけました。ScrollChanged

<ListView ScrollViewer.ScrollChanged="listView1_ScrollChanged"...

しかし、そのハンドラーで何をすべきか本当にわかりません。そのイベントからドラッグ&ドロップを無効にするにはどうすればよいですか?? そして、どうすれば再び有効にできますか?? または、これを解決するより良い方法はありますか??

それが私のDrag&Dropコードです:

 private void listView1_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        // Store the mouse position
        startPoint = e.GetPosition(null);
    }

    private void listView1_MouseMove(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))
        {
            // Get the dragged ListViewItem
            ListView listView = sender as ListView;

            // Get items to drag
            var a = listView.SelectedItems;

            // Initialize the drag & drop operation
            DataObject dragData = new DataObject("myFormat", a);
            DragDrop.DoDragDrop(listView, dragData, DragDropEffects.Move);
        } 
    }

前もって感謝します。

4

3 に答える 3