Применить стиль ко всему TreeViewItem

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

TreeView ItemContainerStyle="{СтатикРесурс Стиль1}"

установит только корневой элемент, а не все дочерние элементы. Как применить стиль ко всем дочерним элементам в TreeView


person Chandimal    schedule 02.09.2009    source источник


Ответы (1)


Есть несколько способов сделать это:

Вы можете сделать свой стиль по умолчанию для всех TreeViewItems:

<Style TargetType="{x:Type TreeViewItem}">
...
</Style>

Разница в том, что вы не устанавливаете атрибут x:Key, а устанавливаете атрибут TargetType. В этом случае вам не нужно устанавливать ItemContainerStyle в TreeView.


Вы также можете установить свой стиль в качестве стиля по умолчанию для всех элементов TreeViewItem, но только в пределах вашего элемента управления TreeView:

<TreeView>
    <TreeView.Resources>
        <Style TargetType="{x:Type TreeViewItem}" BasedOn="{StaticResource Style1}"/>
    </TreeView.Resources>
</TreeView>

В этом случае вам также не нужно устанавливать ItemContainerStyle в вашем TreeView.


Вы также можете изменить свой стиль следующим образом

<Style x:Key="Style1" TargetType="{x:Type TreeViewItem}">
    <Setter Property="ItemContainerStyle" Value="{StaticResource Style1}"/>
</Style>

В этом случае вам все равно придется установить ItemContainerStyle в вашем TreeView.

person Bubblewrap    schedule 02.09.2009
comment
Думаю стоит упомянуть о DataTemplates. Кто знает, может Chandimal хочет изменить содержимое TreeViewItem, а не стиль контейнера, но не понимает этого... Просто мысль :). - person Anvaka; 02.09.2009
comment
Спасибо! Это то, что я искал!. Речь идет об изменении фона / цвета выделения и т. Д. - person Chandimal; 02.09.2009