1

下の画像には、ドロップ ターゲットとして機能する 6 つのオレンジ色の長方形があります。青い四角形は、オレンジ色の四角形の前にあります。青とオレンジの両方の長方形は、同じコンテナーの子です。

ここに画像の説明を入力

私が抱えている問題は、カーソルが青い四角形の上にあるときに、DragEnter、DragLeave、および Drop イベントがトリガーされないことです。青い四角形は、イベントがオレンジ色の四角形に到達するのを妨げているようです。これは、ユーザーがアイテムをドロップできるようにするには、青い四角形の間にカーソルを正確に配置する必要があることを意味します。オレンジ色の四角形の前に青い四角形が残っている間に、オレンジ色の四角形全体を含むようにドロップ領域を拡張したいと思います。

重要な場合、オレンジ色の四角形は FrameworkElements であり、青い四角形は DrawingVisuals です。FrameworkElements にはドラッグ アンド ドロップ機能がありますが、DrawingVisuals は非常に必要最低限​​の機能しかありません。

カーソルが青い四角形の上にあるかどうかに関係なく、オレンジ色の四角形の DragEnter、DragLeave、および Drop イベントを、カーソルがホバーしているときにトリガーされるようにするにはどうすればよいですか?

4

1 に答える 1

1

私が思いついた最も合理的な解決策は、オレンジ色の長方形を青い長方形の上に置くことでした。

ただし、オレンジ色の四角形で青い四角形を覆い隠したくなかったので、次の画像に示すように、透明な四角形とオレンジ色の帽子で構成されたビジュアルを作成する必要がありました。

ここに画像の説明を入力

だから、これがどのように機能するかです:

  • 目標は、ドラッグ アンド ドロップで青い四角形の順序を変更できるようにすることです (私の実際のアプリでは、3 つ以上の青い四角形が存在する可能性があり、青い四角形は実際には青い四角形ではありません)。
  • 通常、青い四角形と透明な四角形だけが描画されます。(もちろん、ユーザーには青い四角形しか見えません。)
  • ユーザーが青い四角形をドラッグすると、カーソルが透明な四角形の上にある場合、オレンジ色の帽子が表示されます。
  • カーソルが透明な四角形から離れると、オレンジ色の帽子が消えます。
  • 青い四角形がドロップされた後、すべての青い四角形が新しい順序で再描画されます (オレンジ色の帽子は再び非表示になります)。
于 2013-04-06T02:07:46.607 に答える