2011-12-07 27 views
3

我想創建一個ListView和一個區域,其中顯示選定對象的細節的窗口。列表視圖顯示存儲在ObservableCollection(Of T)集合中的項目。這些項目本身也包含一個ObservableCollecton(Of T)集合,然後該集合應顯示在另一個ListView的詳細信息區域中,因此與第一個ListView的選定項目相對應。WPF數據綁定ListView到一個對象的屬性,可以什麼都沒有

問題: InitializeComponent()拋出異常(XAMLParseException)。

例外:
Set property 'System.Windows.Controls.GridViewColumn.DisplayMemberBinding' threw an exception.

的InnerException:
Object of type 'System.String' cannot be converted to type 'System.Windows.Data.BindingBase'.

的線路和異常的ColumNumer在我的ListView的<GridView>(.View)指向

這是第一個ListView

<ListView ItemsSource="{Binding Path=MyObjectCollection, Mode=OneWay}" SelectedItem="{Binding Path=Selected, Mode=OneWayToSource}"> 
    <ListView.View> 
     <GridView> 
     <GridViewColumn DisplayMemberBinding="{Binding Path=Name, Mode=OneWay}"> 
      <GridViewColumnHeader Content="Name" /> 
     </GridViewColumn> 
     </GridView> 
    </ListView.View> 
</ListView> 

這是第二次的ListView

<ListView ItemsSource="{Binding Path=SelectedItem.MySubCollection, Mode=OneWay}"> 
    <ListView.View> 
     <GridView> <!-- Thats the Line where the Exception is pointing at --> 
     <GridViewColumn Width="150" DisplayMemberBinding="Key"> 
      <GridViewColumnHeader Content="Key" /> 
     </GridViewColumn> 
     <GridViewColumn Width="150" DisplayMemberBinding="Value"> 
      <GridViewColumnHeader Content="Value" /> 
     </GridViewColumn> 
     </GridView> 
    </ListView.View> 
</ListView> 

所以。我如何綁定到一個對象的集合屬性可以是什麼?

回答

3

從第二個列表視圖中看出問題出在您的DisplayMemberBinding。因爲您必須提供Binding表達式而不是字符串see MSDN。就像你的第一個列表視圖:

<ListView ItemsSource="{Binding Path=SelectedItem.MySubCollection, Mode=OneWay}"> 
    <ListView.View> 
     <GridView> <!-- Thats the Line where the Exception is pointing at --> 
     <GridViewColumn Width="150" DisplayMemberBinding="{Binding Path=Key}"> 
      <GridViewColumnHeader Content="Key" /> 
     </GridViewColumn> 
     <GridViewColumn Width="150" DisplayMemberBinding="{Binding Path=Value}"> 
      <GridViewColumnHeader Content="Value" /> 
     </GridViewColumn> 
     </GridView> 
    </ListView.View> 
</ListView> 
+0

它的工作原理。非常感謝:)。剛剛錯過了綁定表達。但我認爲我已經使用它已經沒有綁定表達式......也許搞砸了東西..無論如何..感謝您的幫助:) – Nicholas

+0

我想你搞砸了'ItemsControl.DisplayMemberPath'屬性,它確實是一個字符串。 – nemesv

相關問題