Как перетаскивать динамически созданные элементы управления - PullRequest
0 голосов
/ 26 августа 2009

Как перетаскивать динамически созданные элементы управления мой код показан ниже

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

Мое требование - перетащить эти динамически созданные кнопки управления Заранее спасибо

Ответы [ 2 ]

1 голос
/ 26 августа 2009
  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);

Надеюсь, это поможет ...

0 голосов
/ 27 августа 2009

Мое предложение для drag-n-drop в silverlight:

  1. Определите макет Canvas «под» вашим обычным макетом (z-порядок).

  2. Когда вы выбираете объект для перетаскивания из обычного макета (сетка и т. Д.), Перемещайте объект на базовый холст, который позволяет позиционировать пиксели. Переместите холст «выше» текущего макета.

  3. Перетащите объект, обновив его положение холста.

  4. Когда вы закончите перетаскивание, верните объект к обычному макету в соответствующем месте (возможно, вам придется пролистать макет верхнего уровня, чтобы найти подходящую точку подключения). Верните слой холста в более низкий z-порядок, чем ваш обычный макет.

Это работало довольно хорошо для простой системы Drag-drop, которая мне была нужна.

Элементы управления Telerik также предоставляют инфраструктуру drag-n-drop.

-Джефф

...