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

时间:2010-06-23 20:57:10

标签: wpf listbox linq-to-xml datatemplate 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:
(注意:我没有在XAML中使用<XMLDataProvider>,因为它提供了一组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>,所以我认为那里没有问题。

最终结果是一个用空对象填充的listBox。我可以过滤它们,对它们进行排序,并向它们添加非绑定文本......但是对源对象的任何绑定都是未渲染的。

1 个答案:

答案 0 :(得分:1)

http://msdn.microsoft.com/en-us/library/system.windows.data.binding.xpath.aspx

有人引用那里:

  

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

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

http://msdn.microsoft.com/en-us/library/cc165615.aspx