2014-06-05 7 views
0

J'ai un TreeView statique où tous les éléments sont ajoutés dans le XAML comme:TreeView ItemTemplate

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

Je n'ai pas ItemsSource. Maintenant, je veux ajouter des images à mon TreeViewItems avec un style. À cet effet j'utilise:

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

Malheureusement, cela ne fonctionne pas. Le StackPanel n'est pas utilisé.

J'ai aussi essayé:

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

Cela aussi ne fais pas ce que je pense à faire.

Qu'est-ce que je fais mal?

Répondre

1

Ajoutez ce style dans votre Window.Resources. Supprimez le ItemTemplate que vous avez défini car il ne sera pas appliqué à TreeViewItem que vous avez ajouté dans 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>