wpf 设置treeView节点选中后的的文字颜色、节点的背景色以及节点失去焦点后的背景颜色

本文介绍了一个自定义的TreeView样式实现,包括如何设置TreeView的Item样式、背景颜色、图标显示条件等,并通过绑定属性实现了节点的选择变化事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<TreeView Margin="20,10,0,0" BorderThickness="0" Background="#1b222d" VirtualizingStackPanel.IsVirtualizing="False"
                      scroll:TreeViewScrollToViewBehavior.TreeViewSelectedItem="{Binding SelectedNode,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}"
                    ItemsSource="{Binding BuildingInfoNodes,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}">
            <TreeView.ItemContainerStyle>
                <Style TargetType="{x:Type TreeViewItem}">
                    <Setter Property="IsExpanded" Value="{Binding IsExpanded,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}"/>
                    <Setter Property="IsSelected" Value="{Binding IsSelected,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}"/>
                    <Style.Resources>
                        <!--SelectedItem with focus-->设置为treeView的背景色
                        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="#1b222d" Opacity="0"/>
                        <!--SelectedItem without focus-->
                        <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="#1b222d" Opacity="0"/>
                    </Style.Resources>
                </Style>
            </TreeView.ItemContainerStyle>
            <TreeView.ItemTemplate>
                <HierarchicalDataTemplate ItemsSource="{Binding Children,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}">
                    <StackPanel Orientation="Horizontal" Background="#1b222d" Margin="-1,0,0,0">“-1可以使失去焦点后的前面的竖条去掉”
                        <Image Visibility="{Binding HasNodeImage,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay,Converter={StaticResource BoolToVisibility}}"
                            Width="17" Height="15" Source="{Binding NodeImagePath,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}"
                               />
                        <TextBlock  Margin="0,10,0,0" Height="22" FontSize="14"
                                    Foreground="{Binding SelectedForeground,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}"
                                    Text="{Binding Name,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}"/>
                    </StackPanel>
                </HierarchicalDataTemplate>
            </TreeView.ItemTemplate>
            <it:Interaction.Triggers>
                <it:EventTrigger EventName="SelectedItemChanged">
                    <it:InvokeCommandAction Command="{Binding BuildingInfoNodeSelectedChangedCommand}"/>
                </it:EventTrigger>
            </it:Interaction.Triggers>
        </TreeView>

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值