另一个ListView里面的ListView不起作用

时间:2014-05-17 16:01:13

标签: wpf xaml listview nested

我遇到了一个奇怪的问题。我在另一个ListView中有一个ListView:

<ListView ItemsSource="{Binding Graph}">    
    <ListView.Resources>
        <DataTemplate DataType="{x:Type model:Node}">
            <ListView ItemsSource="{Binding Path=LSC.Elements}">
                <DataTemplate DataType="{x:Type model:Entity}">
                    <TextBlock Text={Binding Name} />
                </DataTemplate>
            </ListView>
        <DataTemplate>

        <DataTemplate DataType="{x:Type model:Edge}">
            ...
        </DataTemplate>
    </ListView>
</ListView>

我得到的是以下例外:

Add value to collection of type 'System.Windows.Controls.ItemCollection' threw an exception

您能告诉我我的代码有什么问题吗?

1 个答案:

答案 0 :(得分:1)

如果您要查看内部异常,它会告诉您

  

使用ItemsSource时,操作无效。使用ItemsControl.ItemsSource访问和修改元素。

您忘记了内部ListView.ItemTemplate中的ListView.ResourcesListView(取决于您希望如何执行此操作)标记。它应该是:

<ListView ItemsSource="{Binding Path=LSC.Elements}">
    <ListView.ItemTemplate>
        <DataTemplate DataType="{x:Type model:Entity}">
            <TextBlock Text={Binding Name} />
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

没有它假设您的DataTemplate是一个项目,因为您已指定ItemSource绑定,您会收到此错误