Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > WPF и Silverlight > TreeView. Binding + ItemsSource


Автор: -Mikle- 7.5.2009, 20:57
Есть такой класс:
class Category
    string Title;
    Category Parent;
    List<Category> Childs;

Чтобы не добавлять дерево вручную, делаю такой вот хитрый темплейт.

Код

        <Grid.Resources>
            <DataTemplate x:Key="categoriesTemplate">
                <TreeViewItem Header="{Binding Title}"
                              ItemsSource="{Binding Childs}"
                              ItemTemplate="{Binding ItemTemplate, RelativeSource={RelativeSource FindAncestor, AncestorType=TreeView}}" />
            </DataTemplate>
        </Grid.Resources>
        
        <TreeView Name="treeView1" Grid.Column="0" ItemTemplate="{StaticResource categoriesTemplate}" />


В коде устанавливаю ItemsSource. Все в принципе работает, дерево создается, но не работает выделение, то есть ноды не синеют smile. Ноды раскрываются, но они не синиеют. Добавлял стиль к TreeViewItem. Там настраивал тригер на свойство IsSelected=True и менял Background, но тригер не срабатывал. Видимо потому, что реальными объектами являются не TreeViewItem, а Category. Вопрос, как это все победить? Вариант с добавлением TreeViewItem циклом в коде и установкой Tag на экземпляр Category, не устраивает и остается как неизбежная альтернатива.

Автор: Partizan 7.5.2009, 22:53
-Mikle-, я бы посоветовал поюзать HierarhicalDataTemplate


Код

            <HierarchicalDataTemplate ItemsSource="{Binding Childs}" x:Key="categoriesTemplate">
                <TextBlock Text="{Binding Title}"/>
            </HierarchicalDataTemplate>

Автор: -Mikle- 8.5.2009, 08:22
Partizan, стыдно признаться, но я не знал о его существовании smile 
Спасибо, что в очередной раз меня ткнул меня носом  smile 

Автор: Костэн 12.6.2010, 23:10
Цитата(Partizan @ 7.5.2009,  22:53)
-Mikle-, я бы посоветовал поюзать HierarhicalDataTemplate


Код

            <HierarchicalDataTemplate ItemsSource="{Binding Childs}" x:Key="categoriesTemplate">
                <TextBlock Text="{Binding Title}"/>
            </HierarchicalDataTemplate>

Доброго времени суток. Подскажите как HierarhicalDataTemplate добавить в проект ? Я использую VS2010 и Silverlight 4, но ничего подобного в XAML'е не могу найти.

Автор: DenWPF 4.7.2010, 12:56
тоже самое не понимаю кака им польозватся

Автор: Partizan 5.7.2010, 10:15
http://www.codeproject.com/KB/silverlight/HierarchicalDataTemplate.aspx

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)