为什么触发器集合不允许数据触发器和除事件触发器之外的其他触发器?
<StackPanel Orientation="Horizontal">
<Label Name="LblHeader"
Margin="10,0,10,0"
Content="Test"
FontWeight="Bold"
Foreground="SteelBlue" />
<Button Name="BtnAttach" Content="_Attach"/>
<StackPanel.Triggers>
<DataTrigger Binding="{Binding IsEnabled, RelativeSource={RelativeSource FindAncestor, AncestorType=StackPanel }}" Value="False">
<Setter TargetName="LblHeader" Property="Label.Foreground" Value="Gray" />
</DataTrigger>
</StackPanel.Triggers>
</StackPanel>
答案 0 :(得分:1)
可以在四个级别指定触发器....
ControlTemplate
等级DataTemplate
级Style
等级UIElement
等级。 DataTrigger
仅在前三个级别工作。理想情况下,它只应在第二种情况下使用,即Style
或DataTemplate
。
但首先你可以用这段代码澄清你的意图吗?
当StackPanel被禁用时,您是否要将Label
文本显示为Gray
?
如果是IsEnabled
属性是可继承的依赖项属性,这意味着它将应用于被禁用的父视觉树下的所有元素。
因此,如果StackPanel
被禁用,那么Label
就会被禁用。
在这种情况下,PropertyTrigger
就足够了......
<StackPanel Orientation="Horizontal">
<Label Name="LblHeader"
Margin="10,0,10,0"
Content="Test"
FontWeight="Bold">
<Label.Style>
<Style TargetType="Label">
<Setter Property="Foreground" Value="SteelBlue" />
<Style.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Foreground" Value="Gray" />
</Trigger>
</Style.Triggers>
</Style>
</Label.Style>
</Label>
<Button Name="BtnAttach" Content="_Attach"/>
</StackPanel>