2009-08-26 62 views
0

如何拖放動態創建的控件 我的代碼如下所示如何拖放動態創建的控件

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

我的要求是拖放這些動態創建的按鈕控件。 在前提前感謝

回答

1
  1. 控制拖放到設計器不動態創建。它們是靜態創建和重新創建的。在大多數情況下,可以從工具箱訪問這些控件。
  2. 在後面的代碼中聲明的控件(例如Button)是動態創建的。它們必須以編程方式創建和重新創建。這些控件是背後的代碼所獨有的。

但是,使用動態創建控件時,它是一種常見的做法是使用佔位符(這種控制不是渲染)來定位你的對象。

要做到這一點...

  1. 拖放一個佔位符,你想你的按鈕是。 (設計師)。
  2. 以編程方式將按鈕添加到PlaceHolder。 (代碼隱藏)

例如...

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

希望它可以幫助...

0

我對拖歐米茄下降Silverlight中建議:

  1. 在常規佈局(z順序)下方定義佈局佈局。

  2. 當你選擇你的對象從你的常規佈局(網格等)拖放,將對象移動到底層畫布,它允許像素定位。將畫布移動到當前佈局上方。

  3. 通過更新其Canvas位置來拖動該對象。

  4. 完成拖動後,將對象返回到適當位置的常規佈局(您可能需要查看頂層佈局以查找適當的連接點)。將畫布圖層返回到比常規佈局更低的z順序。

這對我需要的簡單拖放系統非常有效。

Telerik控件還提供拖放式框架。

-Jeff