Wpf 更改数据触发器中删除线的颜色

问题描述 投票:0回答:1

我有两个删除线数据触发器,其中之一我想设为黑色(默认),但其中之一应该是删除线红色,有人可以帮我设置红色吗,这是我的代码:

<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 Binding="{Binding IsStrikethroughRed}" 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>
wpf strikethrough
1个回答
0
投票

TextDecorations.Strikethrough 只是 TextDecorations 类中预定义的

TextDecorationCollection
的静态实例。同样,您可以定义自己的
TextDecorationCollection
并通过 DataTrigger 应用它。

<Label>
    <Label.Style>
        <Style xmlns:PresentationOptions="http://schemas.microsoft.com/winfx/2006/xaml/presentation/options"
               TargetType="{x:Type ContentControl}">
            <Style.Resources>
                <TextDecorationCollection x:Key="RedStrikethrough"
                                          PresentationOptions:Freeze="True">
                    <TextDecoration Location="Strikethrough">
                        <TextDecoration.Pen>
                            <Pen Brush="Red" Thickness="2"/>
                        </TextDecoration.Pen>
                    </TextDecoration>
                </TextDecorationCollection>
            </Style.Resources>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ContentControl}">
                        <TextBlock x:Name="Number" Text="{Binding Number}"/>
                        <ControlTemplate.Triggers>
                            <DataTrigger Binding="{Binding IsRemoved}" Value="True">
                                <Setter TargetName="Number" Property="TextBlock.TextDecorations" Value="{StaticResource RedStrikethrough}"/>
                            </DataTrigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </Label.Style>
</Label>
© www.soinside.com 2019 - 2024. All rights reserved.