You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WPF C#:根据TreeView节点COID属性值切换矩形颜色的方法

给TreeView节点添加基于COID的彩色矩形

我来帮你搞定这个需求!你只需要在现有的HierarchicalDataTemplate里添加一个Rectangle控件,然后通过**数据触发器(DataTrigger)**根据COID的值动态设置它的填充颜色就行。

修改后的完整模板代码

<HierarchicalDataTemplate ItemsSource="{Binding tblLines}">
    <StackPanel Orientation="Horizontal" Margin="2">
        <!-- 新增的彩色状态矩形 -->
        <Rectangle Width="15" Height="15" Margin="4,0" x:Name="statusRect">
            <Rectangle.Style>
                <Style TargetType="Rectangle">
                    <!-- 默认颜色(COID不匹配三种情况时显示) -->
                    <Setter Property="Fill" Value="Gray"/>
                    <Style.Triggers>
                        <!-- 情况1:COID为特定值时显示红色 -->
                        <DataTrigger Binding="{Binding COID}" Value="1">
                            <Setter Property="Fill" Value="Red"/>
                        </DataTrigger>
                        <!-- 情况2:COID为另一值时显示绿色 -->
                        <DataTrigger Binding="{Binding COID}" Value="2">
                            <Setter Property="Fill" Value="Green"/>
                        </DataTrigger>
                        <!-- 情况3:COID为第三值时显示蓝色 -->
                        <DataTrigger Binding="{Binding COID}" Value="3">
                            <Setter Property="Fill" Value="Blue"/>
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </Rectangle.Style>
        </Rectangle>
        
        <!-- 你原有图片和文本块 -->
        <Image Height="15" Margin="4" x:Name="imgTreeProject" Source="/DES STUDIO PR;component/Resources/Images/folder_closed.png"/>
        <TextBlock Text="{Binding Name}" VerticalAlignment="Center"/>
    </StackPanel>
</HierarchicalDataTemplate>

关键细节说明:

  • 我把彩色矩形放在了布局最前面,你可以调整Width、Height和Margin来适配你的TreeView样式。
  • 触发器里的Value需要替换成你业务中实际的COID取值(比如可能是0、1、2,或者特定的枚举值)。
  • 如果COID是枚举类型,记得在Value里写完整的枚举路径,比如Value="YourNamespace.CheckoutStatus.CheckedOut"。
  • 默认灰色是兜底样式,你可以改成透明或者其他符合需求的颜色。

要是你的COID是范围值(比如大于0、等于0、小于0),可以结合转换器来实现判断,比如先定义一个布尔转换器,再用DataTrigger绑定转换后的结果:

<DataTrigger Binding="{Binding COID, Converter={StaticResource GreaterThanZeroConverter}}" Value="True">
    <Setter Property="Fill" Value="Green"/>
</DataTrigger>

这种情况需要你提前在资源里定义对应的转换器类。

内容的提问来源于stack exchange,提问作者PigSpider

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:13:21