Wpf DataGrid子组样式

时间:2011-05-10 15:26:00

标签: wpf datagrid styles

我正在将数据网格分组到两个级别。我的意思是每个主要组都有一个或多个子组。

 <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 个答案:

答案 0 :(得分:2)

这些群组不提供太多信息,但如果您只有一个子级别,则可以使用CollectionViewGroup.IsBottomLevel来区分。 e.g。

<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>

模板化父级是ContentPresenterContent是内部组级别。