C# WPF 列表框分组标题样式

3
我正在使用 Listbox 显示多项。 这些项目已经被分组。现在我想编辑标题样式,但唯一发生的事情是文字不再显示。
这是我的 XAML:
<ListBox x:Name="lbTreatments" HorizontalAlignment="Left" Height="473" Margin="10,37,0,0" VerticalAlignment="Top" Width="309" FontSize="13">
    <ListBox.GroupStyle>
        <GroupStyle>
            <GroupStyle.HeaderTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding subcategoryName}" FontWeight="Bold"/>
                </DataTemplate>
            </GroupStyle.HeaderTemplate>
        </GroupStyle>
    </ListBox.GroupStyle>
    <ListBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding name}"/>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

这是我用来对项目进行分组的代码:

ICollectionView view = CollectionViewSource.GetDefaultView(treatmentsCategory);
view.GroupDescriptions.Add(new PropertyGroupDescription("subcategoryName"));
view.SortDescriptions.Add(new SortDescription("subcategoryName", ListSortDirection.Ascending));
lbTreatments.ItemsSource = view;

这些项目已经分组,但标题文本丢失了。如果我从XAML中删除Groupstyle,则文本将显示出来。请问有人可以帮忙吗?


2
请在您的 XAML 中使用 Name 作为组标题。例如:<TextBlock Text="{Binding Name}" FontWeight="Bold"/> - XAMlMAX
好的,它正在工作,谢谢。 但是为什么要命名? - Philipp Rosengart
1个回答

1

MSDN说:

每个组都是CollectionViewGroup类型。

实际数据类型是CollectionViewGroup,它没有subcategoryName属性,因此绑定将失败。相反,您必须使用Name属性,该属性已设置为subcategoryName的值。

因此,请使用以下内容...

<TextBlock Text="{Binding Name}"/>

在您的头部模板中添加以下代码以获取组名。

有没有办法在输出之前添加换行符? - Philipp Rosengart
类似于<TextBlock Text="{Binding Path=Name, StringFormat={}&#x0a;{0}}"/>这样的东西? - Fruchtzwerg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接