Como arrastar e soltar controles criados dinamicamente
-
20-09-2019 - |
Pergunta
Como arrastar e soltar os controles criados dinamicamente, meu código é mostrado abaixo
Button btnTask = new Button();
btnTask.Content = _myCustomTasks[iCtr].Description;
btnTask.Background = _myCustomTasks[iCtr].TaskColor;
stackPanel.Children.Add(btnTask);
Meu requisito é arrastar e soltar esse controle de botões criado dinamicamente. Desde já, obrigado
Solução
- Os controles arrastados e soltos para o designer não são criados dinâmicos. Eles são criados e recriados estaticamente. Esses controles são acessíveis a partir da caixa de ferramentas na maioria dos casos.
- Os controles declarados no código por trás do seu botão são criados dinamicamente. Eles devem ser criados e recriados programaticamente. Esses controles são exclusivos do código por trás.
No entanto, ao usar controles criados dinamicamente, é uma prática comum usar espaços reservados (esse controle não é renderizado) para posicionar seus objetos.
Fazer isso ...
- Arraste e solte um espaço reservado onde você gostaria que seu botão fosse. (Designer).
- Adicione seu botão ao espaço reservado programaticamente. (Código por trás)
Por exemplo...
Button btnTask = new Button();
btnTask.Content = _myCustomTasks[iCtr].Description;
btnTask.Background = _myCustomTasks[iCtr].TaskColor;
PlaceHolder1.Controls.Add(btnTask);
Espero que ajude...
Outras dicas
Minha sugestão de drag-n-drop em Silverlight:
Defina um layout de tela 'abaixo' do seu layout regular (ordem Z).
Quando você seleciona seu objeto para arrastar-n-Drop do seu layout regular (grade, etc.), mova o objeto para a tela subjacente que permite o posicionamento do pixel. Mova a tela 'acima' do layout atual.
Arraste o objeto atualizando sua posição de tela.
Quando terminar o arrasto, retorne o objeto ao layout regular no local apropriado (talvez seja necessário pescar através do layout de nível superior para encontrar o ponto de conexão apropriado). Retorne a camada de tela para uma ordem Z mais baixa do que o layout regular.
Isso funcionou muito bem para um sistema simples de arrasto que eu precisava.
O Telerik Controls também fornece uma estrutura de arrasto-n-Drop.
-Jeff