2017-08-31 1 views
1

J'utilise une zone de liste pour afficher plusieurs éléments. Les articles sont regroupés. Maintenant, je veux éditer le style d'en-tête mais la seule chose qui arrive est que le texte ne soit plus affiché.C# WPF Listbox Groupe Style d'en-tête

Thats my 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> 

Et c'est mon code pour regrouper les éléments:

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

Les éléments sont regroupés, mais le texte d'en-tête est manquant. Si je supprime le Groupstyle de xaml, le texte sera affiché. Est-ce que anybode peut m'aider s'il vous plait?

+2

utilisez 'Name' pour votre en-tête de groupe XAML. c'est-à-dire ' – XAMlMAX

+0

Ok, ça marche, merci. Mais pourquoi nommer? –

Répondre

0

MSDN dit:

Chaque groupe est de type CollectionViewGroup.

Depuis subcategoryName est pas propriété du CollectionViewGroup, vous devez utiliser la propriété Name

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

dans votre modèle d'en-tête pour obtenir le nom du groupe.

+0

Existe-t-il un moyen d'ajouter un saut de ligne à la sortie avant le nom? –

+0

Quelque chose comme ''? – Fruchtzwerg

+0

Voilà, merci –