Как настроить заголовок группы в DataGrid Grouping? - PullRequest
1 голос
/ 15 апреля 2011

У меня есть DataGrid, который выглядит примерно так.

enter image description here

Я сгруппировал данные по полу.Мой стиль GroupItem:

<Style TargetType="{x:Type GroupItem}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type GroupItem}">
                    <Expander x:Name="exp" IsExpanded="True"
                      Background="White"
                      Foreground="Black">
                        <Expander.Header>
                            <TextBlock Text="{Binding Name}"/>
                        </Expander.Header>
                        <ItemsPresenter />
                    </Expander>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

Я хочу, чтобы заголовок группы «Мужской» и «Женский» выглядел как «Пол: Мужской» и «Пол: Женский», а не просто как «Мужской» и «Женский».,Как я могу изменить свой стиль GroupItem для достижения этой цели, чтобы каждый раз, когда я группирую свои данные в сетке данных, заголовок группы может выглядеть как GroupHeaderTitle: GroupHeaderValue?или мне нужно изменить что-либо, кроме стиля GroupItem, чтобы добиться этого?

Ответы [ 2 ]

3 голосов
/ 11 апреля 2015

Когда вы добавляете группировку, просто поставьте конвертер:

// Get the default view
ICollectionView view = CollectionViewSource.GetDefaultView(...);

// Do the grouping
view.GroupDescriptions.Clear();
view.GroupDescriptions.Add(new PropertyGroupDescription("Gender", new GenderConverter()));

// The converter 
public class GenderConverter : IValueConverter
{
    public object Convert(object value,
    Type targetType, object parameter, CultureInfo culture)
    {
        return string.Format("Gender: {0}", value);
    }

    public object ConvertBack(object value,
    Type targetType, object parameter, CultureInfo culture)
    {
        return DependencyProperty.UnsetValue;
    }
}
2 голосов
/ 15 апреля 2011

Вы можете добавить свойство GroupTitle, которое представляет желаемый заголовок группы в вашей модели представления, если вы используете MVVM или ваш код окна в противном случае, затем добавьте еще один TextBlock в Expander.Header, который связан с *Свойство 1003 *, см. Следующий фрагмент кода:

<Style TargetType="{x:Type GroupItem}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type GroupItem}">
                <Expander x:Name="exp" IsExpanded="True"
                            Background="White" Foreground="Black">
                    <Expander.Header>
                        <StackPanel Orientation="Horizontal">
                            <TextBlock Text="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=Window}, Path=DataContext.GroupTitle}"/>
                            <TextBlock Text="{Binding Name}"/>
                        </StackPanel>
                    </Expander.Header>
                    <ItemsPresenter />
                </Expander>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
...