2016-08-25 7 views
0

私は、TreeViewがTreeViewItemを継承するObservableCollectionをバインドするTreeViewを持っています。スタイル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に追加することです。これがノードの残りの部分と第1レベルのノードだけをバインドしない理由である可能性がありますか? –

関連する問題