Wpf 如何通过触发器将删除线装饰应用于标签?

Wpf 如何通过触发器将删除线装饰应用于标签?,wpf,datatrigger,wpf-style,Wpf,Datatrigger,Wpf Style,有无数的例子说明如何对TextBlock执行此操作,但我需要在标签上使用它。我认为标签的默认模板包含一个TextBlock,因此我尝试了以下方法: <Grid> <Grid.Resources> <Style TargetType="{x:Type Label}"> <Style.Triggers> <DataTrigger Binding="{Binding Path=Included}" Value

有无数的例子说明如何对
TextBlock
执行此操作,但我需要在标签上使用它。我认为标签的默认模板包含一个
TextBlock
,因此我尝试了以下方法:

<Grid>
  <Grid.Resources>
    <Style TargetType="{x:Type Label}">
      <Style.Triggers>
        <DataTrigger Binding="{Binding Path=Included}" Value="False">
          <Setter Property="TextBlock.TextDecorations" Value="Strikethrough" />
        </DataTrigger>
      </Style.Triggers>
    </Style>
  </Grid.Resources>

  <Label Grid.Column="0" BorderThickness="0,1,0,0" BorderBrush="White"
         Background="Transparent" Padding="5,0,5,0"
         Content="{Binding Path=BillingDefinitionId}"
         IsEnabled="{Binding Path=Included}" />
</Grid>


我想要的效果是当
Included
为false时,标签应该被禁用并具有删除线文本。但这对删除线位不起作用。

如果我明确声明TextBlock,那么它似乎起作用:

<Grid.Resources>
  <Style TargetType="{x:Type TextBlock}">
    <Style.Triggers>
      <DataTrigger Binding="{Binding Path=Included}" Value="False">
        <Setter Property="TextDecorations" Value="Strikethrough" />
      </DataTrigger>
    </Style.Triggers>
  </Style>
</Grid.Resources>

<Label Grid.Column="0" BorderThickness="0,1,0,0" BorderBrush="White"
       Background="Transparent" Padding="5,0,5,0"
       HorizontalContentAlignment="Right" VerticalContentAlignment="Center"
       IsEnabled="{Binding Path=Included}">
  <TextBlock Text="{Binding Path=BillingDefinitionId}" />
</Label>

我想这相当简单,不知道为什么我在发布之前没有想到,但是如果默认模板是文本块,这似乎有点过分了……不管怎样,它是有效的