У меня немного неприятностей ...
Вот мой файл "mappings.xml" ...
<?xml version="1.0" encoding="utf-8"?>
<mappings>
<mapping QID="info1">
<empty></empty>
</mapping>
<mapping QID="info2">
<empty></empty>
</mapping>
</mappings>
Мой метод, который загружает XML и устанавливает его в качестве ItemsSource для списка:
(Примечание: я не использовал <XMLDataProvider>
в XAML, потому что он доставляет набор XML.XMLElement
, а не LINQ -Совместимый XElement
Я хочу работать с.
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
в 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 XPath=@QID}">
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
Я также пытался установить XPath на ". @ QID", это не имело значения. Я проверил коллекцию myListBox.Items
и подтвердил, что предметы на самом деле XElement
объекты, которые выглядят как <mapping QID="..."><empty/></mapping>
, поэтому я не думаю, что там есть проблема.
Конечный результат - список, который заполняется пустыми объектами. Я могу отфильтровать их, отсортировать и добавить к ним необязательный текст ... но любая привязка к исходному объекту остается без обработки.