Pergunta

Eu criei um UserControl que possui um ListView iniciar.O ListView é acessível publicamente por meio de uma propriedade.Quando coloco o UserControl em um formulário e tento desenhar o ListView embora a propriedade, o ListView permanece assim até que eu compile novamente e ele volte ao estado padrão.

Como faço para que minhas alterações de design sejam mantidas no ListView?

Foi útil?

Solução

Você precisa decorar a propriedade ListView com o atributo DesignerSerializationVisibility, assim:

[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public ListView MyListView { get { return this.listView1; } }

Isso informa ao gerador de código do designer para gerar o código para ele.

Outras dicas

Frederico está certo, basicamente, quando você precisa permitir que o designer persista a propriedade na página para que ela possa ser instanciada em tempo de execução.Só há uma maneira de fazer isso: gravar seus valores na página ASPX, que é então captada pelo tempo de execução.

Caso contrário, o controle simplesmente retornará ao seu estado padrão todas as vezes.

Sempre tenha em mente que a página (e seu conteúdo) e o código são completamente separados no ASP.NET, eles são conectados em tempo de execução.Isso significa que você não obtém o excelente suporte do designer code-behind como em um aplicativo WinForms (onde o formulário é uma instância de um objeto).

Só para deixar claro, você fez algo assim, certo?

public ListView MyListView { get { return this.listView1; } }

Então você está acessando (em tempo de design) a propriedade MyListView no seu UserControl?

Acho que se você deseja suporte adequado em tempo de design, é melhor alterar a propriedade "Modificador" no próprio ListView (de volta ao UserControl original) para Público - dessa forma, você pode modificar o ListView diretamente nas instâncias do UserControl.Eu tive sucesso fazendo isso de qualquer maneira.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top