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

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

TreeView ItemContainerStyle= " {StaticResource Style1}"

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

1 ответов


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

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

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

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


Вы также можете установить свой стиль как стиль по умолчанию для всех TreeViewItems, но только в пределах вашего 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.