0

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

我可以让它以某种方式工作吗?

4

1 回答 1

1

在 TextBlock 本身的样式中定义您的触发器,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 声明中设置红色 Foreground ,则由于优先级,触发器将无效。

于 2011-06-13T17:33:44.607 回答