Comment lier un ListBoxItem dans WPF?
J'ai une listbox et je veux effectuer une itération sur une collection de Bars dans mon Foo-objet.
<ListBox DataContext="{Binding Path=Foo.Bars}" >
<ListBox.Items>
<ListBoxItem>
<ContentControl DataContext="{Binding Path=.}" />
</ListBoxItem>
</ListBox.Items>
</ListBox>
C'est le datatemplate que je veux utiliser.
<DataTemplate DataType="{x:Type Bar}">
<Label Content="hello stackoverflow" />
</DataTemplate>
Si je snoop (--> examiner en utilisant l'outil de Snoop) de mon application, j'ai remarqué que la ensemble de la collection Bars, est lié à la ContentControl, au lieu de seulement 1.
Comment puis-je correctement bind pour l'itération sur la collection va bien?
OriginalL'auteur Natrium | 2009-02-03
Vous devez vous connecter pour publier un commentaire.
Vous suffit de définir le DataTemplate, et WPF fait tout le travail. Définir la ItemsSource à une liste de
Bar
éléments, puis de définir un DataTemplate pourBar
éléments.Vous pouvez également définir la ItemsTemplate directement à l'aide de
<ListBox.ItemTemplate>
au lieu de<ListBox.Resources>
Voir La Liaison De Données Vue D'Ensemble à MSDN.
Ouais, que le lien sous pourri, et je ne peux pas trouver un remplaçant désolé. C'était juste un article qui parle de liaisons dans WPF.
OriginalL'auteur Cameron MacFarland
D'abord l'ajouter à votre espace de noms à l'
Window
élément (Intellisense) :Alors la suivante
XAML
( enWindow.Resources
est propre façon de le faire ) :Lieu le
Listbox
:Mais, cela dépend de votre code-behind de l'objet, vous devez définir un constructeur pour initialiser les propriétés publiques au sein de votre objet qui sont ObservableCollection<> de préférence (Il existe quelques règles de restriction avec l'instance de l'objet dans
XAML
).Je vous suggère de taper votre code objet dans votre question. Il y avait une certaine erreur de syntaxe dans ma réponse, je la corriger ( de Ressources, pas de Ressource, oublié GridView, je suis taper tout à la main... ).
en fait, je suis en utilisant une zone de liste. J'ai d'abord posté ListView, mais j'ai édité.
OriginalL'auteur