TreeView ItemTemplate

时间:2014-06-05 06:50:40

标签: c# wpf treeview

我有一个静态TreeView,其中所有项目都添加到XAML中,如:

<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>

所以我没有ItemsSource。现在我想用Style添加图像到我的TreeViewItems。因此我使用:

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

不幸的是,这不起作用。未使用StackPanel

我也尝试过:

<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>

这也不能达到我的预期。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

在Window.Resources中添加此样式。删除您定义的ItemTemplate,它不会应用于您在xaml中添加的TreeViewItem。

   <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>