Apply style to all TreeViewItem

Chandimal picture Chandimal · Sep 2, 2009 · Viewed 10k times · Source

Hi The problem am having is that I have multiple TreeView control and each TreeView has its own TreeViewItem styles, setting it

TreeView ItemContainerStyle="{StaticResource Style1}"

will only set the root element NOT all the child elements, How to apply a style to all the child elements in a TreeView

Answer

Bubblewrap picture Bubblewrap · Sep 2, 2009

There are several ways to accomplish this:

You could make your style the default for all TreeViewItems:

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

The difference is that you do not set the x:Key attribute, but you do set the TargetType attribute. You do not need to set the ItemContainerStyle on your TreeView in this case.


You could also set your style as the default style for all TreeViewItems, but only within your TreeView:

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

In this case you also do not need to set the ItemContainerStyle on your TreeView.


You could also alter your style as follows

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

In this case you'd still have to set the ItemContainerStyle on your TreeView.