0

Metroスタイルのアプリケーションでは、カスタムコントロールを定義し、それらのいくつかのインスタンスをグリッド内に配置しました。ユーザーがグリッドの1つのセルからコントロールをドラッグして、別のセルにドロップできるようにするための最良の方法は何でしょうか。

4

1 に答える 1

1

それはあなたが何を達成したいかによって異なります。私の観点からは、UI のさまざまな場所で再利用し、他のユーザーと共有できるように動作を実装するのが最善の方法です。あなたの観点からは、Grid をホストする Page/UserControl に関連付けられるカスタム実装を行う最も簡単な方法が最善の方法かもしれません。

ドラッグ アンド ドロップ部分の実行方法について質問している場合は、カスタム コントロールの ManipulationMode を TranslateX、TranslateY に設定し、コントロールをフルスクリーンまたはグリッド サイズのポップアップに移動して移動する ManipulationStarted イベントを処理できます。 Margin、Canvas、または RenderTransform プロパティのいずれかを更新して ManipulationDelta イベントで、最後に ManipulationCompleted で、条件に一致するセルにドロップします。

Popup を使用して、カスタム コントロールが他のものの上にドラッグされるようにします。

Grid と Popup の間の位置を計算するには、grid.TransformToVisual(popup).TranformPoint() のようなものを使用します。

また、コントロールを離したときにドロップするグリッド内の候補ターゲット セルを強調表示することもできます。

于 2012-12-09T06:34:35.033 に答える