我正在尝试创建一个带有ListView和一个区域的窗口,其中显示所选对象的详细信息。 Listview显示存储在ObservableCollection(Of T)
集合中的项目。这些项目本身也包含一个ObservableCollecton(Of T)
集合,然后应该显示在另一个ListView的详细信息区域中,相应地显示在第一个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'.
Exception的Line-和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>
因此。如何绑定到Object的Collection属性可能什么都没有?
答案 0 :(得分:3)
在异常消息中,问题与第二个列表视图中的DisplayMemberBinding
有关。因为您必须提供Binding表达式而不是字符串see MSDN。就像在你的第一个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="{Binding Path=Key}">
<GridViewColumnHeader Content="Key" />
</GridViewColumn>
<GridViewColumn Width="150" DisplayMemberBinding="{Binding Path=Value}">
<GridViewColumnHeader Content="Value" />
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>