Установка разных стилей для двухуровневой группировки с помощью DataTrigger - PullRequest
0 голосов
/ 13 июня 2011

У меня двухуровневая группировка, и я подумал, что могу определять разные стили с помощью DataTriggers.

Думая, что GroupStyles.HeaderTemplate будет привязываться к CollectionViewGroup. Я пытался привязать данные к свойству 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 Ответ

1 голос
/ 13 июня 2011

Определите ваш триггер в стиле самого 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, триггер не будет действовать из-за приоритета .

...