2016-08-25 56 views
0

我有一个TreeView,我绑定了一个ObservableCollection,其中TreeView继承了TreeViewItem。风格TreeviewItem布局(MVVM)

我想样式的树视图的标题有一个图像在每个标题的前面。我将标题设置为ItemContainerStyle,但它没有调整其布局。但它适用于ContextMenu

<TreeView.ItemContainerStyle> 
    <Style TargetType="{x:Type TreeViewItem}"> 
      <Setter Property="ToolTip" Value="{Binding ID, Mode=TwoWay}"/> 
      <Setter Property="Header"> 
       <Setter.Value> 
        <StackPanel Orientation="Horizontal"> 
         <Image Source="Images/Icons/Plus-48.png" Height="10" Width="10" /> 
         <TextBlock Text="{Binding MachinePartName}" Margin="0,0,4,0" /> 
        </StackPanel> 
       </Setter.Value> 
      </Setter> 
      <Setter Property="ContextMenu">  
       <Setter.Value> 
        <ContextMenu> 
         <MenuItem Header="Add" Command="{Binding AddMachinePart_Command}"/> 
        </ContextMenu> 
       </Setter.Value> 
      </Setter> 
    </Style> 
</TreeView.ItemContainerStyle> 

回答

1

您需要使用HeaderTemplate代替:

<Setter Property="Header" 
       Value="{Binding }" /> 
     <Setter Property="HeaderTemplate"> 
      <Setter.Value> 
       <DataTemplate> 
        <StackPanel Orientation="Horizontal"> 
         <Image Source="Images/Icons/Plus-48.png" 
           Height="10" 
           Width="10" /> 
         <TextBlock Text="{Binding MachinePartName}" 
            Margin="0,0,4,0" /> 
        </StackPanel> 
       </DataTemplate> 
      </Setter.Value> 
     </Setter> 

不要忘记绑定Header财产。

+0

谢谢你!也为伟大的以前的答案! –

+0

你是欢迎)) –

+0

但是,它似乎并没有为孩子绑定。只有主树节点。我构建树的方式是将TreeItem实例添加到TreeItem.Items。难道这就是为什么它没有绑定剩下的节点和只有第一级节点的原因吗? –