Felix  RuthenbergGruppierungsüberschrift in WPF ListBox anzeigen


Das Anbinden von Daten (aus einer Datenbank zum Beispiel) in eine WPF Listbox geschieht am besten über ein CollectionViewSource Control deklarativ in XAML.  Die CollectionViewSource hat den Vorteil, dass an ihr Filter, Sortierungen und Gruppierungen angewandt werden können, die direkt in der ListBox sichtbar werden.

Bei der Gruppierung ist es nun auch möglich sich die Gruppenüberschriften in der ListBox darstellen zu lassen, siehe hier (klicken zum Vergrößern):

Grouping

Das Gruppieren ist im Check-Event der CheckBox mit diesen Zeilen Code eingestellt und angewandt:

private void CheckBoxGroupBy_Checked(object sender, RoutedEventArgs e)
{
  PropertyGroupDescription gd = new PropertyGroupDescription("Country");
  CustomerViewSource.GroupDescriptions.Add(gd);
}

[Hinweis, die CustomerViewSource Eigenschaft ist eine Eigenschaft des Windows und dort folgendermaßen deklariert:

public CollectionViewSource CustomerViewSource
{
  get
  {
    return this.Resources["CustomersViewSource"] as CollectionViewSource;
  }
}

Sie gibt also die CollectionViewSource, die in den Resourcen definiert ist, zurück! ]

Die ListBox selbst hat ein GroupStyle Template in dem ein TextBlock definiert ist, der die jeweilige Gruppenüberschrift darstellen soll.  Die eigentliche Information (Country in diesem Fall) lässt sich einfach über den Path=Name im DataTemplate abfragen, Code-Beispiel siehe hier:

<ListBox Name="lstbxCustomers"
  ItemsSource="{Binding Source={StaticResource CustomersViewSource}}">
  <ListBox.GroupStyle>
    <GroupStyle>
      <GroupStyle.HeaderTemplate>
        <DataTemplate>
          <TextBlock Text="{Binding Path=Name}" />
        </DataTemplate>
      </GroupStyle.HeaderTemplate>
    </GroupStyle>
  </ListBox.GroupStyle>
  <ListBox.ItemTemplate>
        <!-- ... -->
  </ListBox.ItemTemplate>
</ListBox>

Dieses Beispiel steht unter http://cid-fd4d63530af59c99.skydrive.live.com/browse.aspx/.Public/Projekte/WPF?uc=1&isFromRichUpload=1 zur Verfügung!



Kategorien: 03.07.2009 16:49:09


 


Neuen Kommentar einfügen:

  Titel:   
  Name:
  E-Mail:
  Kommentar:

 
 


Kommentare




© Copyright 2008 ppedv AG