2016-09-27 10 views
0

Я хочу установить два цветовых фона в пользовательское древовидное представление (wpf). Вы можете установить эту приманку в DataGrid. Я не мог понять, как это сделать для дерева.Как установить 2 цвет фона TreeView (WPF)

Я также хочу, чтобы выбор элемента был таким большим, как ячейка.

enter image description here

<TreeView Grid.Row="2" Name="TreeView" DataContext="{Binding Path=TreeModel}" ItemsSource="{Binding TreeItems}" SelectedItemChanged="TreeView_OnSelectedItemChanged"> 
    <TreeView.Resources> 
     <HierarchicalDataTemplate DataType="{x:Type local:NodeViewModel}" ItemsSource="{Binding Children}"> 
      <StackPanel Orientation="Horizontal"> 
       <Label Content="{Binding NameNode}"/> 
      </StackPanel> 
     </HierarchicalDataTemplate> 
    </TreeView.Resources> 
    <TreeView.ItemContainerStyle> 
     <Style TargetType="{x:Type TreeViewItem}"> 
      <Setter Property="FontWeight" Value="Normal" /> 
      <Setter Property="ContextMenu"> 
       <Setter.Value> 
        <ContextMenu> 
         <MenuItem Header="Add" Command="{Binding AddMachinePart_Command}"/> 
         <MenuItem Header="Remove" Command="{Binding RemoveMachinePart_Command}" IsEnabled="{Binding IsModule}"/> 
         <MenuItem Header="Edit" Command="{Binding EditMachinePart_Command}" IsEnabled="{Binding IsModule}"/> 
         <Separator></Separator> 
         <MenuItem Header="Copy path" Command="{Binding CopyPath_Command}" IsEnabled="{Binding IsModule}"></MenuItem> 
        </ContextMenu> 
       </Setter.Value> 
      </Setter> 
      <Style.Triggers> 
       <Trigger Property="IsSelected" Value="True"> 
        <Setter Property="FontWeight" Value="Bold" /> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </TreeView.ItemContainerStyle> 
</TreeView> 

Edit: При использовании раствора из https://msdn.microsoft.com/en-us/library/system.windows.controls.itemscontrol.alternationindex(v=vs.110).aspx предложил @jschroedl

enter image description here

Было бы идеально, чтобы быть столь же большим, как вид дерева сетки, как показанном на рисунке ниже:

enter image description here

+1

Возможный дубликат [WPF: чередующиеся цвета в ItemsControl?] (Http://stackoverflow.com/questions/4404539/wpf-alternating-colors-on-a-itemscontrol) – MikeT

+0

Вы хотите, чтобы узлы дерева чередовали цвет фона? – leetibbett

+0

@leetibbett да. –

ответ

1

Вы, вероятно, хотите использовать ItemsControl.AlternationIndex в Style, чтобы контролировать, как много цветов в цикле (2 в вашем случае).

MSDN Docs for ItemsControl.AlternationIndex имеет пример с ListBox, который вы, вероятно, можете адаптировать к TreeView.

+0

Спасибо, что работает сразу с места! Теперь я понимаю, что я могу сделать, чтобы покрасить всю ячейку дерева. –

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