绑定包含项列表的项列表

时间:2012-03-14 10:07:47

标签: c# wpf list binding observablecollection

我上课了:

public class Comment
{
    ...
    public List<Comment> Children;
}

在我的ViewModel中,我有一个带有我的评论的ObservableCollection,绑定正在运行,但我想绑定孩子们。

这是我的观点:

<ListBox 
    ItemsSource="{Binding Comments}" 
    ItemTemplate="{Binding Source={StaticResource comment}}">
</ListBox>

模板是每个评论内容和子项的UserControl绑定:

<Grid>
    <TextBlock Text="{Binding Body}" />

    <ListBox 
        ItemsSource="{Binding Children}" 
        ItemTemplate="{Binding Source={StaticResource comment}}">
    </ListBox>
</Grid>

显然我不能绑定Children因为我需要一个ObservableCollection但我看不懂怎么做,如果我在我的Comment类中用ObservableCollection替换List,它也不能正常工作。

现在,我只在ViewModel的列表中列出我的评论,但我想为每个孩子递归递送。

由于

1 个答案:

答案 0 :(得分:1)

树有多深?儿童评论是否可以在任意级别上发表儿童评论?在这种情况下,您正在查看分层数据结构,并使用&lt; HierarchicalDataTemplate&gt; 。以下是一个相当简单的示例:http://www.dev102.blogspot.com/2007/12/how-to-use-hierarchical-datatemplate-in.html或MSDN文章:http://msdn.microsoft.com/en-us/magazine/cc700358.aspx#id0190065

如果这只是一个简单的两级深层结构,那么有两个类Commend和ChildCommend,你的方法就可以了。

无论如何,Comment似乎是一个Model类。有了可观察的儿童评论集合,还有CommentVm是有意义的。使用linq扩展函数创建一个列表到ObservableCollection选择