4

带有 Expander 的典型 ListView GroupStyle 大致如下所示:

<ListView.GroupStyle>
    <GroupStyle>
        <GroupStyle.ContainerStyle>
            <Style TargetType="{x:Type GroupItem}">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type GroupItem}">
                            <Expander>
                                <Expander.Header>
                                    <TextBlock Text="{Binding Path=Name}" />
                                </Expander.Header>
                                <Expander.Content>
                                    <ItemsPresenter />
                                </Expander.Content>
                            </Expander>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </GroupStyle.ContainerStyle>
    </GroupStyle>
</ListView.GroupStyle>

TextBlock 绑定到 Name,这似乎产生了 GroupItem 对象的值,该对象的 propertyName 被传递到 PropertyGroupDescription 中,该 PropertyGroupDescription 被添加到 ListCollectionView 的 GroupDescriptions 集合中(whew):

class MyClass
{
    public int Id { get; set; }
    public int FullName { get; set; }
    public string GroupName { get; set; } // used to group MyClass objects
}

MyView.GroupDescriptions.Add(new PropertyGroupDescription("GroupName"));

如何让我的 ListView 的组标题显示 GroupName 以外的属性?我要说的一点是 GroupName 对于将我的对象分成组很有用,但不一定是我希望用于所述组的标题的名称。

4

2 回答 2

10

CollectionViewGroup.Name 属性是对象类型。这意味着您的 GroupName 属性不必是字符串。尝试这样的事情

class MyClass
{
    ...
    public MyGroup GroupName { get; set; } // used to group MyClass objects
}

class MyGroup
{
    public string HeaderText { get; set; }
    // maybe you will need an additional property to make this object
    // unique for grouping (e.g. for different groups with same HeaderText)
}

.

<Expander.Header>
    <TextBlock Text="{Binding Path=Name.HeaderText}" />
</Expander.Header>
于 2013-01-22T01:18:51.713 回答
0

简单如:

<TextBlock Text="{Binding Path=Name, StringFormat='MyText: {0}'}" />
于 2013-01-21T21:02:49.727 回答