如何拖放动态创建的控件

时间:2009-08-26 10:15:14

标签: c# silverlight silverlight-2.0

如何拖放动态创建的控件 我的代码如下所示

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

我的要求是拖放这些动态创建的按钮控件。 在此先感谢

2 个答案:

答案 0 :(得分:1)

  1. 拖放到设计器中的控件未动态创建。它们是静态创建和重新创建的。在大多数情况下,可以从工具箱访问这些控件。
  2. 动态创建后面代码中声明的控件,例如Button。必须以编程方式创建和重新创建它们。这些控件是后面代码所独有的。
  3. 但是,在使用动态创建的控件时,通常的做法是使用PlaceHolders(不会渲染此控件)来定位对象。

    要这样做......

    1. 将PlaceHolder拖放到您希望按钮所在的位置。 (设计者)。
    2. 以编程方式将Button添加到PlaceHolder。 (代码背后)
    3. 例如......

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

      希望它有所帮助...

答案 1 :(得分:0)

我对silverlight拖拽的建议:

  1. 在“常规布局(z顺序)”下方定义“画布”布局。

  2. 当您从常规布局(网格等)中选择要拖放的对象时,请将对象移动到允许像素定位的基础Canvas。将画布“移动到当前布局”上方。

  3. 通过更新其Canvas位置来拖动对象。

  4. 完成拖动后,将对象返回到适当位置的常规布局(您可能需要浏览顶层布局以找到适当的连接点)。将画布图层返回到比常规布局更低的z顺序。

  5. 这对我需要的简单拖放系统非常有用。

    Telerik控件还提供了一个拖放框架。

    -Jeff