Я с немного о»неприятности ...Проблема в ListBox ItemTemplate связывания с использованием XML, как ItemsSource
Вот мой файл„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 для ListBox:
(Примечание: я не использовал <XMLDataProvider>
в XAML, так как она обеспечивает набор XML.XMLElement
, а не LINQ-Compatible 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 [email protected]}">
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
Я попытался установить XPath к "@ QID", а также, что не имеет никакого значения. Я осмотрел коллекцию myListBox.Items
и подтвердил, что на самом деле это предметы XElement
, которые выглядят как <mapping QID="..."><empty/></mapping>
, поэтому я не думаю, что там есть проблема.
Конечный результат: listBox, заполняющий пустые объекты. Я могу их фильтровать, сортировать и добавлять к ним текст без привязки ... но любая привязка к исходному объекту остается незагруженной.
aaaaaaah. я, должно быть, посмотрел на эту статью 3 раза и никогда не читал до конца. Благодаря! –
Окончательное решение выглядело так: –