我上课了:
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的列表中列出我的评论,但我想为每个孩子递归递送。
由于
答案 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选择