Je suis capable d'utiliser un ItemTemplate dans ItemsControl pour rendre des éléments dans un format spécifique. Toutefois, si l'un des éléments de ItemsControl se trouve être, par exemple, un TextBox, ce TextBox est rendu plutôt qu'une instance de ItemsTemplate. D'après ce que je peux dire, ceci est vrai pour tout FrameworkElement. Est-ce le comportement prévu pour un ItemsControl, ou est-ce que je fais quelque chose de façon incorrecte?Pourquoi ItemsControl n'utilise pas mon ItemTemplate?
Un exemple:
<ItemsControl>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid Margin="5">
<Rectangle Fill="Blue" Height="20" Width="20" />
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.Items>
<sys:Object />
<TextBox />
<sys:Object />
<Rectangle Fill="Red" Height="20" Width="20" />
</ItemsControl.Items>
</ItemsControl>
Je prévu cette option pour afficher quatre rectangles bleus. Je pensais que chaque fois qu'un ItemTemplate a été défini, chaque élément de la collection est rendu comme une instance du modèle. Cependant, dans ce cas, le rendu est le suivant: un rectangle bleu suivi d'un TextBox suivi d'un rectangle bleu suivi d'un rectangle rouge.
Je devine que ce comportement est prévu et est destiné à permettre aux développeurs d'ajouter des contrôles spéciaux à usage unique. Par exemple, je pourrais utiliser ceci pour ajouter un bouton à un ComboBox qui efface la sélection, ou je pourrais mettre un TextBox dans un ListBox qui filtre la collection spécifiée par ItemsSource. J'aimerais entendre que quelqu'un a une réponse officielle pour ce comportement parce que je l'ai trouvé contre-intuitif à l'utilisation d'un ItemTemplate. – Drew
Bonne question et bonne réponse d'Anthony, merci les gars. – Golvellius