2016-08-25 2 views
0

У меня есть TreeView, к которому я привязываю ObservableCollection, где TreeView наследует TreeViewItem.Стиль TreeviewItem layout (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. Может ли это быть причиной того, что он не связывает остальные узлы и только узлы первого уровня? –

Смежные вопросы