少し困っています...
これが私の「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として設定する私のメソッド:(注:使用したいLINQ-Compatibleではなく、のセットを提供するため、XAML
では使用しませんでした。<XMLDataProvider>
XML.XMLElement
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>
ので、問題はないと思います。
最終結果は、空のオブジェクトで埋められるリストボックスです。それらをフィルタリングし、並べ替えて、バインドされていないテキストを追加することはできますが、ソースオブジェクトへのバインドはレンダリングされません。