Как перетаскивать динамически созданные элементы управления
-
20-09-2019 - |
Вопрос
Как перетаскивать динамически созданные элементы управления мой код показан ниже
Button btnTask = new Button();
btnTask.Content = _myCustomTasks[iCtr].Description;
btnTask.Background = _myCustomTasks[iCtr].TaskColor;
stackPanel.Children.Add(btnTask);
мое требование состоит в том, чтобы перетащить эти динамически созданные элементы управления кнопками.Заранее спасибо
Решение
- Элементы управления, перетаскиваемые в конструктор, не создаются динамически.Они статически создаются и воссоздаются заново.В большинстве случаев эти элементы управления доступны из панели инструментов.
- Элементы управления, объявленные в коде, лежащем в основе, такие как ваша кнопка, создаются динамически.Они ДОЛЖНЫ создаваться и воссоздаваться программно.Эти элементы управления являются эксклюзивными для лежащего в основе кода.
Однако при использовании динамически создаваемых элементов управления обычной практикой является использование заполнителей (этот элемент управления не отображается) для позиционирования ваших объектов.
Чтобы сделать это...
- Перетащите заполнитель туда, где вы хотели бы разместить свою кнопку.(дизайнер).
- Добавьте свою кнопку в заполнитель программным путем.(Код Позади)
Например...
Button btnTask = new Button();
btnTask.Content = _myCustomTasks[iCtr].Description;
btnTask.Background = _myCustomTasks[iCtr].TaskColor;
PlaceHolder1.Controls.Add(btnTask);
Надеюсь, это поможет...
Другие советы
Мое предложение по перетаскиванию в silverlight:
Определите макет холста "ниже" вашего обычного макета (z-порядок).
Когда вы выбираете объект для перетаскивания из вашего обычного макета (сетки и т.д.), переместите его на нижележащий холст, который обеспечивает позиционирование пикселей.Переместите холст "выше" текущего макета.
Перетащите объект, обновив его положение на холсте.
Когда вы закончите перетаскивание, верните объект в обычный макет в соответствующем месте (возможно, вам придется просмотреть макет верхнего уровня, чтобы найти подходящую точку подключения).Верните слою canvas более низкий z-порядок, чем в вашем обычном макете.
Это работало довольно хорошо для простой системы перетаскивания, которая мне была нужна.
Telerik controls также предоставляет платформу drag-n-drop.
-Джефф