2

四角形の ItemsControl で構成されるユーザー コントロールを持っているアプリがあります (境界線と下にあるコントロールで表されます)。チェス盤のようなものだと考えてください。

私の ItemTemplate は境界線で構成されているため、GridView や ListView のようなドラッグ アンド ドロップのネイティブ サポートはありません。正方形の前に GridView と ListView の両方を使用してみましたが、GUI が遅くなりすぎたため、単純な境界線に切り替えて、はるかに高速にしました。

Manipulation イベントを接続することで、境界線とそのコンテンツのドラッグ動作を取得することができました (少なくとも GUI に関しては)。ただし、正方形 (境界線) を別の正方形にドラッグしようとすると、ドロップ イベントが発生しないようです。ターゲットの正方形がどれかを知る必要があります。

私は自分でドラッグ アンド ドロップ機能を実行しているので、境界線のドロップ イベントにフックするために何かをする必要があることを理解していますが、何ですか?

また、境界イベント PointerEntered、PointerMoved などをサブスクライブして、ポインターがどの正方形にあるかを調べ、ボタンを離すと、ターゲットの正方形がどれかがわかります。ただし、これは 2 つの方向 (右と下) でのみ機能するように見えますが、ポインター イベントは、左または上に移動したときに発生しないようです。項目 (四角形) の ZIndex が異なり、これがイベントの発生に影響を与える可能性があることをどこかで読んだことがあります。

私はこれに何時間も苦労してきましたが、本当に助けていただければ幸いです。

4

2 に答える 2

0

Thumbドラッグ&ドロップしたいものの上にオブジェクトを含めるだけです。オブジェクトはThumb必要なイベントを発生させ、これらのイベントから必要な動作を処理できます (たとえば、キャンバス上で下にあるオブジェクトを移動して、下にあるオブジェクトのドラッグをシミュレートしたい場合があります)。

開始するには、Thumb の MSDN ページを参照してください。

次に、Thumb通知があると、自分に合った方法で基礎となるものを取得し、 を呼び出しますCanvas.SetLeft/Top (object, my new coordinates)。通常、新しい座標は のようなものになりますCanvas.GetLeft/Top(object) + args.Horizontal/VerticalChange

お分かりのように、またはCanvasを使用する代わりに、 を使用してオブジェクトを自分で配置する必要があります。GridListView

于 2013-03-24T19:33:22.447 に答える
0

添付プロパティを作成し、それを Border の外側の親コントロールに接続し、ネイティブ ドラッグ アンド ドロップを ItemTemplate の TargetType に配置します。

PreviewMouseUp および PreviewMouseDown イベントに接続します。

これの詳細はここにありますWPF チュートリアル ドラッグ アンド ドロップ

于 2012-08-01T13:23:16.820 に答える