Стиль подгруппы Wpf DataGrid - PullRequest
1 голос
/ 10 мая 2011

Я группирую сетку данных на два уровня. Я имею в виду, что в каждой основной группе есть одна или несколько подгрупп.

 <controls:DataGrid.GroupStyle>
            <GroupStyle>
                <GroupStyle.HeaderTemplate>
                    <DataTemplate>
                        <StackPanel>
                            <TextBlock Text="{Binding Path=Name}" />
                        </StackPanel>
                    </DataTemplate>
                </GroupStyle.HeaderTemplate>
                <GroupStyle.ContainerStyle>
                    <Style TargetType="{x:Type GroupItem}">
                        <Setter Property="Template">
                            <Setter.Value>
                                <ControlTemplate TargetType="{x:Type GroupItem}">
                                    <Expander IsExpanded="True"   Style="{DynamicResource newExpanderStyle}"   HorizontalAlignment="Left"
                                             Margin="5,0,0,0"    VerticalAlignment="Top" Background="{DynamicResource NormalBrushGrid}" >
                                        <Expander.Header>
                                            <StackPanel Background="#E5E5E5" Orientation="Horizontal">
                                                <TextBlock Text="{Binding Path=Name}" FontWeight="Bold" FontSize="12" Margin="5,0" />
                                                <TextBlock Text="{Binding Path=ItemCount}"/>
                                            </StackPanel>
                                        </Expander.Header>
                                        <ItemsPresenter />
                                    </Expander>
                                </ControlTemplate>
                            </Setter.Value>
                        </Setter>
                    </Style>
                </GroupStyle.ContainerStyle>
            </GroupStyle>
        </controls:DataGrid.GroupStyle>

Я хотел бы отличить подгруппу от основной группы. Как я могу применить другой цвет к заголовку подгруппы

Заранее спасибо

Чанд.

1 Ответ

2 голосов
/ 10 мая 2011

Группы не предоставляют много информации, но если у вас есть только один подуровень, вы можете использовать CollectionViewGroup.IsBottomLevel для дифференциации. например,

<GroupStyle.HeaderTemplate>
    <DataTemplate>
        <TextBlock Text="{Binding Name}">
            <TextBlock.Style>
                <Style TargetType="{x:Type TextBlock}">
                    <Style.Triggers>
                        <DataTrigger Value="True">
                            <DataTrigger.Binding>
                                <Binding RelativeSource="{RelativeSource TemplatedParent}" Path="Content.IsBottomLevel"/>
                            </DataTrigger.Binding>
                            <Setter Property="Foreground" Value="Red"/>
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </TextBlock.Style>
        </TextBlock>
    </DataTemplate>
</GroupStyle.HeaderTemplate>

Шаблонным родительским элементом является ContentPresenter, а Content этого класса является внутренней группой.

...