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

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. Элементы управления, объявленные в коде, лежащем в основе, такие как ваша кнопка, создаются динамически.Они ДОЛЖНЫ создаваться и воссоздаваться программно.Эти элементы управления являются эксклюзивными для лежащего в основе кода.

Однако при использовании динамически создаваемых элементов управления обычной практикой является использование заполнителей (этот элемент управления не отображается) для позиционирования ваших объектов.

Чтобы сделать это...

  1. Перетащите заполнитель туда, где вы хотели бы разместить свою кнопку.(дизайнер).
  2. Добавьте свою кнопку в заполнитель программным путем.(Код Позади)

Например...

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

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

Другие советы

Мое предложение по перетаскиванию в silverlight:

  1. Определите макет холста "ниже" вашего обычного макета (z-порядок).

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

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

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

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

Telerik controls также предоставляет платформу drag-n-drop.

-Джефф

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top