WPF - Question très élémentaire ListBox.ItemTemplate
Ok, c'est un embarassingly simple en apparence problème, mais me rend fou. J'apprends sur DataTemplating et suis en train d'appliquer une très TRÈS simple ItemTemplate à une zone de liste.
Cependant, lorsque je lance mon application, le modèle est complètement ignoré et je viens d'obtenir la norme de la recherche listbox, alors qu'en fait, je m'attends à voir une liste de cases à cocher avec "Test" à côté de vous.
J'ai essayé plusieurs fois et toujours le même résultat. J'ai vérifié à plusieurs ressources sur Google et tous ont le même type de syntaxe pour la définition et l'ItemTemplate sur une zone de liste, donc je ne peux vraiment pas voir où je vais mal.
Code...
<Grid x:Name="LayoutRoot">
<ListBox x:Name="TestList"
SelectionMode="Multiple">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<CheckBox Content="Check this checkbox!"/>
<TextBlock>Test</TextBlock>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
<ListBox.Items>
<ListBoxItem>Bob</ListBoxItem>
<ListBoxItem>Jim</ListBoxItem>
<ListBoxItem>Dave</ListBoxItem>
<ListBoxItem>Larry</ListBoxItem>
<ListBoxItem>Tom</ListBoxItem>
</ListBox.Items>
</ListBox>
</Grid>
Toute aide grandement appréciée. Désolé pour ces stupides-semblant question, mais je suis vraiment tombée amoureuse au premier obstacle ici 🙁
À
source d'informationauteur Andy T
Vous devez vous connecter pour publier un commentaire.
ItemTemplate ne fonctionnent pas lorsque vous mettez ListBoxItem directement en tant qu'objets. Concept général est vous databind une liste de révocation de certificats de collecte de la zone de liste.ItemsSource puis spécifiez l'ItemTemplate. Vérifiez le code ci-dessous.
où sys est xmlns:sys="clr-namespace:Système;assembly=mscorlib"
De cette façon, il y a 5 ListBoxItems arriver généré dans le fond et a ajouté à la zone de liste.
Vous pouvez utiliser ItemContainerStyle au lieu de ItemTemplate si vous souhaitez ajouter ListBoxItems directement à la zone de liste.
De le faire, cependant, est seulement recommandé lorsque vous avez besoin des caractéristiques uniques à chaque niveau de l'élément.
Si vous prévoyez sur tous les articles à la recherche de la même ou de faire une liste dynamique à l'aide de ItemsSource, je vous conseillerais d'ajouter des chaînes de caractères (ou un autre objet personnalisé) à votre liste et d'utiliser ItemTemplate à l'affichage de vos articles. (voir Jobi Joie de réponse)
Voici un exemple d'utilisation ItemContainerStyle:
Pour quelque raison DataTemplate peut encore être ignoré si la zone de liste est renseignée à l'aide de ItemsSource e.g:
Noter que ceci est lié à une ObservableCollection contenant des objets (TextAdapter : INotifyPropertyChanged) avec une propriété: string Text {...}