Seletor que só pode levar elementos filhos de um determinado tipo?
-
22-09-2019 - |
Pergunta
Preciso escrever um controle que deve levar apenas um certo tipo de controles infantis. Funcionalmente, ele funciona como um seletor, pois posso selecionar/ativar seus filhos, mas parece que não posso derivar do seletor porque um itemsControl pode levar qualquer tipo de criança (objeto). Eu realmente gostaria de ter o TypeNeTy de compilação aqui. Portanto, jogar uma exceção quando um filho do tipo errado é adicionado não é uma opção.
Essa restrição parece ser necessária porque o controle dos pais precisa confiar em certas propriedades e comportamento em seus filhos. Há também alguma comunicação direta das crianças com seus pais.
Como é algo assim geralmente tratado no WPF.
Solução
ItemsControl
Enrole seus filhos em um tipo de contêiner de itens de sua escolha. Assim, você conhece os filhos de seu ItemsControl
sempre será desse tipo. Por exemplo, ListBox
sempre tem ListBoxItem
s quando crianças.