1

メトロのユーザーコントロールをドラッグ可能にしたい。ユーザーはそれをドラッグして他のコントロールにドロップできるはずです。この機能を実装するにはどうすればよいですか?

私が発見した唯一の方法は、GridViewおよびListViewコントロールを使用することです。これらには「CanDragItems」プロパティがあります。これは、trueの場合、ビュー内の任意のアイテムをドラッグアンドドロップできることを意味します。コントロールをグリッドビューまたはリストビューでラップしようとしましたが、理解できない方法でレイアウトに干渉します。

OSが提供する機能をエミュレートしたくない。生のマウス/タップイベントを使用してそれを行うことはできますが、デッドゾーンのサイズなどのシステム設定を適切に尊重せず、誤ってドラッグするのを防ぎます。

4

2 に答える 2

0

つまり、グリッド上にアタッチプロパティを作成し、MouseDown / MouseUpイベントに接続する装飾を描画する必要があります。そこから、Grid.ColumnのWidth/Grid.RowのHeightを設定します。これにより、グリッドがドラッグ可能になります。

組み込みのプロパティSh​​owGridLinesはデバッグにのみ使用されるため、使用することはお勧めしません。必要に応じて、コードを減らしてグリッドスプリッターを使用してみてください。

添付プロパティの詳細については、こちらをご覧ください。添付プロパティ

于 2012-08-01T13:28:12.133 に答える
0

結局、マウスのイベントを見て機能をエミュレートするだけでした。ドラッグされているコントロールに、同じように見えても機能がない「ドッペルゲンガー」のコピーを求め、それを最上位のグリッドに配置し、レンダリング変換を調整して移動します。

ただし、要件が少し異なっていた場合は、操作モード/イベントを使用して目的の操作を実行できた可能性があることに注意してください。慣性が組み込まれているので特に便利ですが、フォーカスについては少しうるさいので、親のコントロールの境界を越えることができませんでした。

于 2012-10-20T14:12:24.663 に答える