В TreeView каждый TreeViewNode
является TreeViewItem
, и они используют один и тот же TreeViewItemStyle
.Он не предоставляет метод для получения TreeViewItem из узла.Но вы можете изменить его стиль, чтобы он выглядел по-другому.
Вы можете получить стиль по умолчанию TreeView , выполнив следующие действия:
На странице TreeView щелкните Вкладка "Структура документа" , в окне Структура документа вы можете найти TreeView, затем вы можете создать стиль по умолчанию для TreeView, как показано ниже:
Затем нажмите OK, чтобы создать стиль копирования, после этого вы можете увидеть стиль в вашем Page.Resources
.Вы можете изменить стиль в ресурсе, чтобы изменить стиль узлов и фон выбранного узла.
Вот стиль по умолчанию TreeView,
<Style x:Key="TreeViewStyle1" TargetType="TreeView">
<Setter Property="IsTabStop" Value="False"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TreeView">
<TreeViewList x:Name="ListControl" AllowDrop="True"
CanReorderItems="True" CanDragItems="True"
ItemContainerStyle="{StaticResource TreeViewItemStyle}"
ItemTemplate="{StaticResource TreeViewItemDataTemplate}">
<TreeViewList.ItemContainerTransitions>
<TransitionCollection>
<ContentThemeTransition/>
<ReorderThemeTransition/>
<EntranceThemeTransition IsStaggeringEnabled="False"/>
</TransitionCollection>
</TreeViewList.ItemContainerTransitions>
</TreeViewList>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
В этом стиле вы можете видетьItemContainerStyle
TreeViewList использует TreeViewItemStyle
, а ItemTemplate
использует TreeViewItemDataTemplate
, вы также можете найти их в ресурсе этой страницы, который генерируется из наших вышеупомянутых шагов.
Чтобы изменить фоновое изображение узлов, вы можете изменить TreeViewItemDataTemplate
как следующий код, установив для красного цвета фона сетки значение
<DataTemplate x:Key="TreeViewItemDataTemplate">
<Grid Height="44" Background="Red">
<TextBlock HorizontalAlignment="Left"
Style="{ThemeResource BodyTextBlockStyle}"
Text="{Binding Content}" VerticalAlignment="Center"/>
</Grid>
</DataTemplate>
Чтобы установить bg-color для любого выбранного в данный момент элемента., вы можете изменить TreeViewItemStyle
Selected VisualState,
...
<VisualState x:Name="Selected">
<VisualState.Setters>
<Setter Target="ContentPresenterGrid.Background" Value="Green"/>
<Setter Target="ContentPresenter.Foreground" Value="{ThemeResource TreeViewItemForegroundSelected}"/>
<Setter Target="ContentPresenterGrid.BorderBrush" Value="{ThemeResource TreeViewItemBorderBrushSelected}"/>
</VisualState.Setters>
</VisualState>
...
Более того, вы также можете изменить фон узла в строке, изменив фон ContentPresenterGrid
.
<Grid x:Name="ContentPresenterGrid" Background="Yellow" BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="{TemplateBinding BorderBrush}" Margin="0,0,0,0">