Как установить 2 цвет фона в TreeView (WPF)

114
12

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

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

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>

Изменить: при использовании решения с 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

спросил(а) 2016-09-27T14:52:00+03:00 4 года назад
1
Решение
57

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

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

ответил(а) 2016-09-27T15:31:00+03:00 4 года назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема