问题描述
||
我有一个双层分组,并认为我可以使用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>
我能以某种方式使它工作吗?
解决方法
在TextBlock本身的样式中定义触发器,“ 1”通常用于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声明中设置红色前景,则由于优先级,触发器将无效。