如何将2色背景设置为TreeView(WPF)

时间:2016-09-27 11:52:42

标签: c# wpf mvvm background treeview

我想将两种颜色背景设置为自定义树视图(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

1 个答案:

答案 0 :(得分:1)

您可能希望在ItemsControl.AlternationIndex中使用Style来控制循环的颜色数量(在您的情况下为2)。

MSDN Docs for ItemsControl.AlternationIndex有一个ListBox的示例,您也可以适应TreeView