使用DataTrigger为双级分组设置不同的样式

时间:2011-06-13 17:20:00

标签: wpf data-binding datatemplate datatrigger groupstyle

我有一个双级分组,并认为我可以使用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>

我能以某种方式让这个工作吗?

1 个答案:

答案 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而无效。