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

15 篇文章 0 订阅
<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>

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
可以通过在`TreeView`的`Style`中设置`ItemContainerStyle`来实现失去焦点后修改选中背景颜色。具体步骤如下: 1. 在`TreeView`的`Style`中添加`ItemContainerStyle`: ```xml <Style TargetType="{x:Type TreeViewItem}"> <Style.Triggers> <Trigger Property="IsSelected" Value="True"> <Setter Property="Background" Value="LightBlue"/> <Setter Property="Foreground" Value="White"/> </Trigger> <Trigger Property="IsSelected" Value="False"> <Setter Property="Background" Value="Transparent"/> <Setter Property="Foreground" Value="Black"/> </Trigger> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="Background" Value="LightGray"/> <Setter Property="Foreground" Value="Black"/> </Trigger> <MultiTrigger> <MultiTrigger.Conditions> <Condition Property="IsSelected" Value="True"/> <Condition Property="IsFocused" Value="False"/> </MultiTrigger.Conditions> <Setter Property="Background" Value="Gray"/> </MultiTrigger> </Style.Triggers> </Style> ``` 2. 在`Style`中的`ItemContainerStyle`中添加`MultiTrigger`,当`IsSelected`为`True`且`IsFocused`为`False`时设置背景颜色。 ```xml <MultiTrigger> <MultiTrigger.Conditions> <Condition Property="IsSelected" Value="True"/> <Condition Property="IsFocused" Value="False"/> </MultiTrigger.Conditions> <Setter Property="Background" Value="Gray"/> </MultiTrigger> ``` 这段代码的含义是,当`TreeViewItem`被选中并且失去焦点时,设置背景颜色为灰。 注意:上面的代码中的颜色值只是示例,可以根据需要进行修改。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值