動的に作成されたコントロールをドラッグ アンド ドロップする方法
-
20-09-2019 - |
質問
動的に作成されたコントロールをドラッグアンドドロップする方法私のコードを以下に示します
Button btnTask = new Button();
btnTask.Content = _myCustomTasks[iCtr].Description;
btnTask.Background = _myCustomTasks[iCtr].TaskColor;
stackPanel.Children.Add(btnTask);
私の要件は、これらの動的に作成されたボタン コントロールをドラッグ アンド ドロップすることです。前もって感謝します
解決
- デザイナーにドラッグ アンド ドロップされたコントロールは動的に作成されません。これらは静的に作成および再作成されます。ほとんどの場合、これらのコントロールはツールボックスからアクセスできます。
- ボタンなどのコードビハインドで宣言されたコントロールは動的に作成されます。これらはプログラムで作成および再作成する必要があります。これらのコントロールはコードビハインド専用です。
ただし、動的に作成されたコントロールを使用する場合は、PlaceHolders (このコントロールはレンダリングされません) を使用してオブジェクトを配置するのが一般的です。
そうするために...
- PlaceHolder をボタンを配置したい場所にドラッグ アンド ドロップします。(デザイナー)。
- ボタンをプログラム的に PlaceHolder に追加します。(コードビハインド)
例えば...
Button btnTask = new Button();
btnTask.Content = _myCustomTasks[iCtr].Description;
btnTask.Background = _myCustomTasks[iCtr].TaskColor;
PlaceHolder1.Controls.Add(btnTask);
それが役に立てば幸い...
他のヒント
Silverlight でのドラッグ アンド ドロップに関する私の提案:
通常のレイアウト (Z オーダー) の「下」に Canvas レイアウトを定義します。
通常のレイアウト (グリッドなど) からドラッグ アンド ドロップするオブジェクトを選択するときは、そのオブジェクトを下にあるキャンバスに移動すると、ピクセルの配置が可能になります。キャンバスを現在のレイアウトの「上」に移動します。
Canvas の位置を更新してオブジェクトをドラッグします。
ドラッグが終了したら、オブジェクトを適切な場所の通常のレイアウトに戻します (適切な接続ポイントを見つけるには、トップレベルのレイアウトを検索する必要がある場合があります)。キャンバス レイヤーを通常のレイアウトよりも低い Z オーダーに戻します。
これは、私が必要としていた単純なドラッグ ドロップ システムでは非常にうまく機能しました。
Telerik コントロールは、ドラッグ アンド ドロップ フレームワークも提供します。
-ジェフ
所属していません StackOverflow