modelo de item diferente para cada item em uma lista WPF?
-
02-07-2019 - |
Pergunta
Eu tenho muitos artigos dentro de um controle de lista. Eu quero que cada item para ter um modelo de item diferente, dependendo do tipo de item. Assim, o primeiro item da lista é um tipo ObjectA e assim que eu quero que ele seja processado com ItemTemplateA. Segundo item é um tipo ObjectB e assim que eu quero que ele tenha ItemTemplateB para renderização. No momento eu só pode usar a configuração ItemTemplate para definir um modelo para todos eles. Qualquer maneira de conseguir isso?
Solução
o ItemTemplateSelector
vai funcionar, mas eu acho que é mais fácil de criar várias DataTemplate
s na sua seção de recursos e, em seguida, apenas dando a cada um uma DataType
. Este será automaticamente, em seguida, usar esse DataTemplate
se os itens gerador detecta o tipo de dados correspondente?
<DataTemplate DataType={x:Type local:ObjectA}>
...
</DataTemplate>
Também certifique-se que você não tem conjunto x:Key
para o DataTemplate
.
Leia mais sobre esta abordagem aqui
Outras dicas
Tenha um olhar para o ItemTemplateSelector propriedade da lista de seu controle. Você pode apontar para um TemplateSelector personalizado e decidir qual o modelo a ser usado no código.
Aqui está um post descrevendo TemplateSelectors:
http://blogs.interknowlogy.com/johnbowen/ Arquivo / 2007/06/21 / 20463.aspx
Edit: Aqui está um post melhor: