1

そのコントロール内でドラッグ アンド ドロップ機能を提供する WPF ユーザー コントロールがあります。ユーザー コントロールが WPF アプリ内でホストされている場合、すべて正常に動作します。ただし、 内でホストされているVSPackage ToolWindow場合、ドロップは完全に無効になります。

この特定のケースでは、ドラッグ可能なリスト ボックス (下の図の左側) で選択した項目を右側のキャンバスにドラッグしようとしています。

ここに画像の説明を入力

ドラッグは、次のように開始できますDoDragDrop

    protected override void OnMouseMove(MouseEventArgs e)
    {
        base.OnMouseMove(e);
        if (e.LeftButton != MouseButtonState.Pressed)
            dragStartPoint = null;

        if (dragStartPoint.HasValue)
        {
            DragDrop.DoDragDrop(this, Content, DragDropEffects.Copy);
            e.Handled = true;
        }
    }

ただし、ツールウィンドウのどこにもドロップできません。

ツール ウィンドウ内でのドラッグ アンド ドロップを禁止する条件と、それを有効にするにはどのような設定変更が必要ですか?

4

1 に答える 1

1

答えはAlin Constantin のブログで見つかり、 MSDNのユーザーNotreによって指摘されました。VSシェルがそれらを傍受しないように、ドラッグアンドドロップ関連のすべてのイベントを処理する必要がありました。私の場合、コントロールDragOverでイベントを処理する必要がありました。Canvas

    protected override void OnDragOver(DragEventArgs e)
    {
        base.OnDragOver(e);
        e.Handled = true;
    }
于 2011-06-28T02:17:14.053 に答える