Tomtom
Tomtom

Reputation: 9394

TreeView ItemTemplate

I have a static TreeView where all items are added in the XAML like:

<TreeView>
    <TreeViewItem Header="Pages">
        <TreeViewItem Header="Google"/>
        <TreeViewItem Header="Stackoverflow"/>
    </TreeViewItem>
    <TreeViewItem Header="Stuff">
        <TreeViewItem Header="MyDomain"/>
        <TreeViewItem Header="Other Domains">
            <TreeViewItem Header="Domain 1"/>
            <TreeViewItem Header="Domain 2"/>
            <TreeViewItem Header="Domain 3"/>
        </TreeViewItem>
    </TreeViewItem>
</TreeView>

So I don't have an ItemsSource. Now I want to add Images to my TreeViewItems with a Style. Therefor I use:

<TreeView.ItemTemplate>
    <DataTemplate>
        <StackPanel Orientation="Horizontal">
            <Image Width="16" Height="16"></Image>
            <Label Content="???"/>
        </StackPanel>
    </DataTemplate>
</TreeView.ItemTemplate>

Unfortunately this doesn't work. The StackPanel is not used.

I also tried:

<TreeView.Resources>
    <Style TargetType="{x:Type TreeViewItem}">
        <Setter Property="TreeViewItem.Header">
            <Setter.Value>
                <StackPanel Orientation="Horizontal">
                    <Image Width="16" Height="16"/>
                    <Label Content="???"/>
                </StackPanel>
            </Setter.Value>
        </Setter>
    </Style>
</TreeView.Resources>

This also doesn't do what I expect it to do.

What I am doing wrong?

Upvotes: 0

Views: 639

Answers (1)

Nitin Purohit
Nitin Purohit

Reputation: 18578

Add this style in your Window.Resources. Remove the ItemTemplate you defined as that will not be applied to the TreeViewItem you have added in xaml.

   <Style TargetType="TreeViewItem">
        <Setter Property="HeaderTemplate">
            <Setter.Value>
                <DataTemplate>
                    <StackPanel>
                        <Image Width="16" Height="16"/>
                         <Label Content="{TemplateBinding Content}"/>
                    </StackPanel>
                </DataTemplate>
            </Setter.Value>
        </Setter>
    </Style>

Upvotes: 1

Related Questions