我想知道为什么Style
TextBlock
状态发生变化时Foreground
Checkbox
颜色不会改变IsChecked
<CheckBox Name="checkbox" IsChecked="True"/>
<TextBlock Foreground="LightGray" IsEnabled="{Binding ElementName=checkbox, Path=IsChecked}">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Style.Triggers>
<Trigger Property="TextBlock.IsEnabled" Value="False">
<Setter Property="TextBlock.Foreground" Value="Gray" />
</Trigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
颜色
{{1}}
答案 0 :(得分:7)
您已设置 本地值,该值始终优先于样式触发器 。在样式中移动属性声明,它将起作用,因为样式触发器的优先级高于样式设置器。
<TextBlock IsEnabled="{Binding ElementName=checkbox, Path=IsChecked}">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Foreground" Value="LightGray"/> <-- HERE
<Style.Triggers>
<Trigger Property="TextBlock.IsEnabled" Value="False">
<Setter Property="TextBlock.Foreground" Value="Gray" />
</Trigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
答案 1 :(得分:0)
更新您现有的样式,并在TextBlock
<TextBlock Foreground="LightGray" IsEnabled="{Binding ElementName=checkbox, Path=IsChecked}">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Style.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Foreground" Value="Gray" />
</Trigger>
</Style.Triggers>
</Style>
<Setter Property="Foreground" Value="Black"/>
</TextBlock.Style>
</TextBlock>