我有一个双级分组,并认为我可以使用DataTriggers定义不同的样式。
认为GroupStyles.HeaderTemplate将绑定到CollectionViewGroup我尝试将DataBinding转换为IsBottomLevel属性。
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<TextBlock x:Name="GroupName"
Text="{Binding Path=Name}"
Foreground="Red" />
<DataTemplate.Triggers>
<DataTrigger Binding="IsBottomLevel" Value="True" >
<Setter TargetName="GroupName" Property="Foreground" Value="Blue" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</GroupStyle.HeaderTemplate>
</GroupStyle>
我能以某种方式让这个工作吗?
答案 0 :(得分:1)
在TextBlock本身的Style中定义你的触发器,TargetName
通常用于ControlTemplates,然后你可以放弃它。
这不具约束力:
Binding="IsBottomLevel"
您应该用以下内容替换它:
Binding="{Binding IsBottomLevel}"
<TextBlock Text="{Binding Name}">
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Foreground" Value="Red" />
<Style.Triggers>
<DataTrigger Binding="{Binding IsBottomLevel}" Value="True">
<Setter Property="Foreground" Value="Blue" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
如果直接在TextBlock声明中设置红色前景,则触发器将因precedence而无效。