WPF:如何在DataTrigger中设置红色文本删除线
实现红色文本删除线的DataTrigger设置
在WPF中,默认的Strikethrough文本装饰为黑色,要实现红色删除线,需显式定义带颜色的TextDecorationCollection,而非直接使用内置的Strikethrough值。以下是修改后的完整代码:
<!-- 在资源中定义可复用的红色删除线样式 --> <Window.Resources> <TextDecorationCollection x:Key="RedStrikethrough"> <TextDecoration Location="Strikethrough"> <TextDecoration.Pen> <Pen Brush="Red" Thickness="1"/> </TextDecoration.Pen> </TextDecoration> </TextDecorationCollection> </Window.Resources> <!-- 你的TextBlock控件 --> <TextBlock Name="Number" Grid.Column="0" Text="{Binding Number}"/> <TextBlock Name="Name" Grid.Column="1" Text="{Binding Name}"/> <TextBlock Name="Price" Grid.Column="0" Text="{Binding Price}"/> <TextBlock Name="Stock" Grid.Column="1" Text="{Binding Stock}"/> <!-- 默认黑色删除线的DataTrigger --> <DataTrigger Binding="{Binding IsStrikethroughBlack}" Value="True"> <Setter TargetName="Number" Property="TextBlock.TextDecorations" Value="Strikethrough"/> <Setter TargetName="Name" Property="TextBlock.TextDecorations" Value="Strikethrough"/> <Setter TargetName="Price" Property="TextBlock.TextDecorations" Value="Strikethrough"/> <Setter TargetName="Stock" Property="TextBlock.TextDecorations" Value="Strikethrough"/> </DataTrigger> <!-- 红色删除线的DataTrigger --> <DataTrigger Binding="{Binding IsStrikethroughRed}" Value="True"> <Setter TargetName="Number" Property="TextBlock.TextDecorations" Value="{StaticResource RedStrikethrough}"/> <Setter TargetName="Name" Property="TextBlock.TextDecorations" Value="{StaticResource RedStrikethrough}"/> <Setter TargetName="Price" Property="TextBlock.TextDecorations" Value="{StaticResource RedStrikethrough}"/> <Setter TargetName="Stock" Property="TextBlock.TextDecorations" Value="{StaticResource RedStrikethrough}"/> </DataTrigger>
关键说明:
- 红色删除线通过
TextDecoration对象自定义,设置Pen.Brush为Red,还可调整Pen.Thickness修改删除线粗细。 - 资源定义的方式能让红色删除线在多处复用,避免重复代码。
- 黑色删除线直接使用内置
Strikethrough值即可,无需额外定义。
内容的提问来源于stack exchange,提问作者Tinsley
相关产品推荐
相关产品推荐

