Datagrid扩展器(来自分组)标头

时间:2012-03-21 16:17:26

标签: wpf entity-framework datagrid grouping expander

this教程之后,我有一个想法,可以在Expander Header中放入更多数据。 我有2个表(文件1 - *条目)。 我正在显示按文档分组的条目,我不希望在。中重复一些数据 datagrid所以我想把它放在扩展标题中。

<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">
                                        <Expander.Header>
                                            <StackPanel Orientation="Horizontal">
                                                <TextBlock Text="{Binding Path=Name}" />
                                                <TextBlock Text=" - "/>
                                                **<TextBlock Text="{Binding Path=Document.Number or Name2}"/>**
                                            </StackPanel>
                                            ...

1 个答案:

答案 0 :(得分:3)

你可以这样做:

<Expander.Header>
<StackPanel Orientation="Horizontal">
    <TextBlock Text="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type GroupItem}}, Converter={StaticResource ResourceKey=groupToTitleConverter}}" />
</StackPanel> </Expander.Header>

转换器:

public class GroupToTitleConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        GroupItem groupItem = value as GroupItem;
        CollectionViewGroup collectionViewGroup = groupItem.Content as CollectionViewGroup;
        EntryViewModel entryViewModel = collectionViewGroup.Items[0] as EntryViewModel;
        string title = string.Format("{0} - {1} {2}", entryViewModel.Id, entryViewModel.Numar, entryViewModel.Obiect);
        return title;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

从集合中收集第一个项目以形成标题标题可能不是最优雅的解决方案,但它将达到目的。

此处提供完整代码:ExpanderHeadersInDataGridGroupStyle.zip