2010-06-23 72 views
0

我有一點O」麻煩XML綁定...問題的ListBox中使用的ItemTemplate作爲的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:
(注:因爲它提供了一組XML.XMLElement,而不是LINQ兼容XElement我想工作我沒有在XAML中使用<XMLDataProvider>

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>的物品,所以我認爲那裏沒有問題。

最終結果是一個用空對象填充的列表框。我可以對它們進行過濾,對它們進行排序,並向它們添加非綁定文本...但是對源對象的任何綁定都是未呈現的。

回答

1

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

從那裏有些報價:

的LINQ to XML對象的XDocument和 的XElement不使用XPath。有關 的詳細信息,請參閱如何:綁定到 用於XML的XDocument,XElement或LINQ 查詢結果。

還有一些例如如何綁定到的XElement

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

+0

aaaaaaah。我一定看過那篇文章3次,從來沒有讀到底部。謝謝! – 2010-06-23 21:16:04

+0

最終解決方案如下所示 2010-06-23 21:25:27

相關問題