動的に作成されたコントロールをドラッグ アンド ドロップする方法

StackOverflow https://stackoverflow.com/questions/1333683

  •  20-09-2019
  •  | 
  •  

質問

動的に作成されたコントロールをドラッグアンドドロップする方法私のコードを以下に示します

 Button btnTask = new Button();
 btnTask.Content = _myCustomTasks[iCtr].Description;
 btnTask.Background = _myCustomTasks[iCtr].TaskColor;
 stackPanel.Children.Add(btnTask);

私の要件は、これらの動的に作成されたボタン コントロールをドラッグ アンド ドロップすることです。前もって感謝します

役に立ちましたか?

解決

  1. デザイナーにドラッグ アンド ドロップされたコントロールは動的に作成されません。これらは静的に作成および再作成されます。ほとんどの場合、これらのコントロールはツールボックスからアクセスできます。
  2. ボタンなどのコードビハインドで宣言されたコントロールは動的に作成されます。これらはプログラムで作成および再作成する必要があります。これらのコントロールはコードビハインド専用です。

ただし、動的に作成されたコントロールを使用する場合は、PlaceHolders (このコントロールはレンダリングされません) を使用してオブジェクトを配置するのが一般的です。

そうするために...

  1. PlaceHolder をボタンを配置したい場所にドラッグ アンド ドロップします。(デザイナー)。
  2. ボタンをプログラム的に PlaceHolder に追加します。(コードビハインド)

例えば...

Button btnTask = new Button();
btnTask.Content = _myCustomTasks[iCtr].Description;
btnTask.Background = _myCustomTasks[iCtr].TaskColor;
PlaceHolder1.Controls.Add(btnTask);

それが役に立てば幸い...

他のヒント

Silverlight でのドラッグ アンド ドロップに関する私の提案:

  1. 通常のレイアウト (Z オーダー) の「下」に Canvas レイアウトを定義します。

  2. 通常のレイアウト (グリッドなど) からドラッグ アンド ドロップするオブジェクトを選択するときは、そのオブジェクトを下にあるキャンバスに移動すると、ピクセルの配置が可能になります。キャンバスを現在のレイアウトの「上」に移動します。

  3. Canvas の位置を更新してオブジェクトをドラッグします。

  4. ドラッグが終了したら、オブジェクトを適切な場所の通常のレイアウトに戻します (適切な接続ポイントを見つけるには、トップレベルのレイアウトを検索する必要がある場合があります)。キャンバス レイヤーを通常のレイアウトよりも低い Z オーダーに戻します。

これは、私が必要としていた単純なドラッグ ドロップ システムでは非常にうまく機能しました。

Telerik コントロールは、ドラッグ アンド ドロップ フレームワークも提供します。

-ジェフ

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top