2008-10-30 101 views

回答

12

我認爲最好的方法是在TreeView上設置一個Style,它將更改TreeViewItems的模板以獲得所需的圖像。

模板可能需要是一個帶有圖像和標籤控件的StackPanel,將圖像綁定到圖標,並將標籤文本綁定到Observable集合中的字符串。

我已經從Code Project article中複製了相關的代碼片斷,其中涵蓋了更詳細的內容,但我認爲以下是您需要的全部內容(此代碼位於TreeView.Resources元素中)。

<Style TargetType="{x:Type TreeViewItem}"> 
    <Setter Property="HeaderTemplate"> 
     <Setter.Value> 
      <DataTemplate> 
       <StackPanel Orientation="Horizontal"> 
        <Image Name="img" 
          Width="20" 
          Height="20" 
          Stretch="Fill" 
          Source="image.png"/> 
        <TextBlock Text="{Binding}" Margin="5,0" /> 
       </StackPanel> 
      </DataTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 
+2

這是所有節點的一個圖標。如何爲不同級別的treenodes關聯不同的圖標? – newman 2011-03-26 13:34:39

10

我用James OsbornStackPanel technique這樣...

XAML:

<TreeView Name="TreeViewThings" ItemsSource="{Binding}"> 
    <TreeView.Resources> 
     <HierarchicalDataTemplate DataType="{x:Type local:Thing}" 
            ItemsSource="{Binding Children}"> 
      <StackPanel Orientation="Horizontal" Margin="2"> 
       <Image Source="Thing.png" 
         Width="16" 
         Height="16" 
         SnapsToDevicePixels="True"/> 
       <TextBlock Text="{Binding Path=Name}" Margin="5,0"/> 
      </StackPanel> 
     </HierarchicalDataTemplate> 
    </TreeView.Resources> 
</TreeView>