【问题标题】:How to drag and drop dynamically created controls如何拖放动态创建的控件
【发布时间】:2009-08-26 10:15:13
【问题描述】:

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

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

我的要求是拖放这些动态创建的按钮控件。 提前致谢

【问题讨论】:

    标签: c# silverlight silverlight-2.0


    【解决方案1】:
    1. 拖放到设计器中的控件不是动态创建的。它们是静态创建和重新创建的。在大多数情况下,这些控件都可以从工具箱中访问。
    2. 在后面的代码中声明的控件(例如您的 Button)是动态创建的。必须以编程方式创建和重新创建它们。这些控件是背后代码独有的。

    但是,当使用动态创建的控件时,通常使用 PlaceHolders(此控件未呈现)来定位您的对象。

    这样做...

    1. 将 PlaceHolder 拖放到您希望按钮所在的位置。 (设计师)。
    2. 以编程方式将您的按钮添加到 PlaceHolder。 (代码隐藏)

    比如……

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

    希望对你有帮助...

    【讨论】:

      【解决方案2】:

      我对 Silverlight 中拖放的建议:

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

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

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

      4. 完成拖动后,将对象返回到适当位置的常规布局(您可能必须在顶层布局中查找适当的连接点)。将画布层返回到比常规布局更低的 z 顺序。

      这对于我需要的一个简单的拖放系统来说非常有效。

      Telerik 控件还提供拖放框架。

      -杰夫

      【讨论】:

        猜你喜欢
        • 2015-09-10
        • 2019-04-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-22
        • 2013-04-24
        • 2012-05-29
        相关资源
        最近更新 更多