2012-03-14 6 views
0

У меня есть свой класс:Binding список элементов, содержащих список элементов

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> 

Очевидно, что я не могу связывать детей, потому что мне нужно ObservableCollection но я не могу понять, как это сделать, если я заменил в своем классе Comment List на ObservableCollection, он не работает ни.

Прямо сейчас, я перечисляю только мои комментарии в своем списке в ViewModel, но я хотел бы сделать это рекурсивно для каждого ребенка.

Thanks

+0

Возможный дубликат http://stackoverflow.com/questions/1222008/wpf-hierarchicaldatatemplate-itemscontrol –

ответ

1

Как глубоко дерево? Комментарии детей могут иметь комментарии детей на произвольном уровне? В этом случае вы смотрите на иерархическую структуру данных, и используете . < Иерархический образец. >. Вот довольно простой образец: 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, и ваш подход будет работать.

В любом случае, комментарий кажется классом модели. Имело бы смысл также иметь CommentVm, с наблюдаемым набором комментариев детей. Создайте список для ObservableCollection с помощью функции расширения linq. Выберите

+0

Отлично, вот что я искал! Спасибо – Dax

Смежные вопросы