Есть такой класс: 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. Все в принципе работает, дерево создается, но не работает выделение, то есть ноды не синеют . Ноды раскрываются, но они не синиеют. Добавлял стиль к TreeViewItem. Там настраивал тригер на свойство IsSelected=True и менял Background, но тригер не срабатывал. Видимо потому, что реальными объектами являются не TreeViewItem, а Category. Вопрос, как это все победить? Вариант с добавлением TreeViewItem циклом в коде и установкой Tag на экземпляр Category, не устраивает и остается как неизбежная альтернатива. |