Je vais avoir un peu o » ennuis ...problème dans ListBox ItemTemplate liaison en utilisant XML comme ItemsSource
Voici mon fichier "mappings.xml" ...
<?xml version="1.0" encoding="utf-8"?>
<mappings>
<mapping QID="info1">
<empty></empty>
</mapping>
<mapping QID="info2">
<empty></empty>
</mapping>
</mappings>
Ma méthode charge le XML et définit comme le ItemsSource pour la zone de liste:
(note: Je n'ai pas utilisé <XMLDataProvider>
en XAML, car il offre un ensemble de XML.XMLElement
, plutôt que le XElement
LINQ Compatible Je veux travailler avec
Private Property myCollectionView as CollectionView
Private Property mappingsEnum as IEnumerable(Of System.Xml.Linq.XElement)
Sub LoadXML()
mappingsEnum = XDocument.Load("mappings.xml").Root.Elements
'using collection view so I can apply
'filtering to the list of <mapping> objects
myCollectionView = CollectionViewSource.GetDefaultView(mappingsEnum)
myListBox.ItemsSource = myCollectionView
End Sub
.
en XAML
<Grid>
<ListBox x:Name="myListBox" ScrollViewer.VerticalScrollBarVisibility="Auto" DockPanel.Dock="Bottom" ScrollViewer.CanContentScroll="True" VirtualizingStackPanel.VirtualizationMode="Recycling" VirtualizingStackPanel.IsVirtualizing="True" SelectionMode="Extended">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<!-- WHY DOESN'T THIS WORK?? -->
<TextBlock Text="{Binding [email protected]}">
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
J'ai essayé de placer le XPath à "@ QID" aussi bien, qui a fait aucune différence. J'ai inspecté la collection myListBox.Items
et j'ai confirmé que les objets sont en fait XElement
objets qui ressemblent à <mapping QID="..."><empty/></mapping>
donc je ne pense pas qu'il y ait un problème.
Le résultat final est un listBox qui se remplit avec des objets vides. Je peux les filtrer, les trier, et leur ajouter du texte non lié ... mais toute liaison à l'objet source est laissée non-créée.
aaaaaaah. J'ai dû regarder cet article 3 fois et ne jamais lire tout le chemin vers le bas. Merci! –
La solution finale ressemblait à ceci: –