如何在wpf的组头中显示属性名称

Sud*_*ngh 5 wpf dataview listcollectionview

<!-- GroupHeaderStyle -->
<Style x:Key="GroupHeaderStyle" TargetType="{x:Type GroupItem}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type GroupItem}">
                <Expander IsExpanded="False" Margin="15,0,0,0">
                    <Expander.Header>
                        <StackPanel Orientation="Horizontal">
                            <TextBlock Text="{Binding ????????????}"/>
                            <TextBlock Text="-->"/>
                            <TextBlock Text="{Binding Name}"/>
                        </StackPanel>
                    </Expander.Header>
                    <ItemsPresenter />
                </Expander>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,我希望显示它被分组的属性名称.性别 - >男孩; 性别 - >女孩.

public class Test
{
    string gender;
    public string Gender
    {
        get { return gender; }
        set { gender = value; }
    } 
}
Run Code Online (Sandbox Code Playgroud)

我应该提供什么????????????? 在上面的xaml?

另外,如果有任何好的书或链接解释分组的内部细节,请告诉我ListCollectionView.

Cod*_*ked 3

应该是CollectionViewGroupDataContext的一个实例,它将其属性设置为“group”(即 Gender 的值)。但是 CollectionViewGroup 和它来自哪个属性之间没有关联。从技术上讲,该属性可能有多个层次。Name

唯一好的选择是对另一个拥有您所需的所有信息的房产进行排序。该CollectionViewGroup.Name属性是一个对象,而不是字符串。所以你可以这样做:

public class GenderGroup {

    public GenderGroup(string gender) {
        this.Gender = gender;
    }

    public string Gender { get; private set; }
    public string Title {
        get {
            return "Gender";
        }
    }

    public override bool Equals(object obj) {
        var other = obj as GenderGroup;
        return (other != null && string.Equals(this.Gender, other.Gender));
    }
}

public class Test {
    string gender;
    GenderGroup genderGroup = new GenderGroup("none");

    public string Gender {
        get { return gender; }
        set {
            gender = value;
            genderGroup = new GenderGroup(gender);
        }
    } 

    public GenderGroup GenderGroup {
        get { return genderGroup; }
    }

}
Run Code Online (Sandbox Code Playgroud)

然后像这样访问它:

<!-- GroupHeaderStyle -->
<Style x:Key="GroupHeaderStyle" TargetType="{x:Type GroupItem}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type GroupItem}">
                <Expander IsExpanded="False" Margin="15,0,0,0">
                    <Expander.Header>
                        <StackPanel Orientation="Horizontal">
                            <TextBlock Text="{Binding Name.Title}"/>
                            <TextBlock Text="-->"/>
                            <TextBlock Text="{Binding Name.Gender}"/>
                        </StackPanel>
                    </Expander.Header>
                    <ItemsPresenter />
                </Expander>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
Run Code Online (Sandbox Code Playgroud)

这是基本思想,但您可以使 GenderGroup 更加通用。"Gender"因此,您可以传递具有参数的参数,而不是硬编码。