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
相关产品推荐
相关产品推荐

