Wpf 使用XML作为itemssource的ListBox ItemTemplate绑定中存在问题

Wpf 使用XML作为itemssource的ListBox ItemTemplate绑定中存在问题,wpf,listbox,linq-to-xml,datatemplate,itemssource,Wpf,Listbox,Linq To Xml,Datatemplate,Itemssource,我有点麻烦 这是我的“mappings.xml”文件 在XAML中 <Grid> <ListBox x:Name="myListBox" ScrollViewer.VerticalScrollBarVisibility="Auto" DockPanel.Dock="Bottom" ScrollViewer.CanContentScroll="True" VirtualizingStackPanel.VirtualizationMode="Recycling"

我有点麻烦

这是我的“mappings.xml”文件

在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
对象,看起来像
,因此我认为没有问题

最终结果是一个用空对象填充的列表框。我可以对它们进行过滤、排序,并向它们添加未绑定的文本。。。但是,对源对象的任何绑定都不会被描述。

其中有人引述:

LINQ到XML对象XDocument和 XElement不使用XPath。对于 详细信息,请参见如何:绑定到 XDocument、XElement或LINQ for XML 查询结果

以及一些如何绑定到XElement的示例


aaaah。那篇文章我一定看了三遍,从来没有读到底。谢谢最终的解决方案是这样的
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
<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>