.NET Tutorials, Forums, Interview Questions And Answers
Welcome :Guest
 
Sign In
Register
 
Win Surprise Gifts!!!
Congratulations!!!


Top 5 Contributors of the Month
david stephan

Home >> Articles >> WPF >> Post New Resource Bookmark and Share   

 Subscribe to Articles

Group And Sort items In ListBox In WPF

Posted By:Diptimaya Patra       Posted Date: March 27, 2010    Points: 25    Category: WPF    URL: http://www.dotnetspark.com  

Group And Sort items In ListBox In WPF. In this article we will see how we can group elements in ListBox.
 

Introduction


In this article we will see how we can group elements in ListBox.


Creating WPF Project


Fire up Visual Studio 2008 and create a new WPF Project. Name it as ListBoxSampleWPF.


1.gif



Now we will add a ListBox to the application and it will look as following:


Now let's add some sample data to the ListBox.


public class Person
{
       public string Name { get; set; }
       public int Age { get; set; }
       public string Country { get; set; }
}
ObservableCollection myList;
public Window1()
{
           InitializeComponent();
   myList = new ObservableCollection()
           {
               new Person{ Name="Name 1", Age=24, Country="Japan"},
               new Person{ Name="Name 2", Age=24, Country="India"},
               new Person{ Name="Name 3", Age=24, Country="China"},
               new Person{ Name="Name 4", Age=24, Country="Japan"},
               new Person{ Name="Name 5", Age=24, Country="India"},
       new Person{ Name="Name 6", Age=24, Country="US"},
               new Person{ Name="Name 7", Age=24, Country="US"},
               new Person{ Name="Name 8", Age=24, Country="India"},
               new Person{ Name="Name 9", Age=24, Country="India"},
               new Person{ Name="Name 10", Age=24, Country="India"},
               new Person{ Name="Name 11", Age=24, Country="India"},
               new Person{ Name="Name 12", Age=24, Country="China"},
               new Person{ Name="Name 13", Age=24, Country="India"},
               new Person{ Name="Name 14", Age=24, Country="India"},
               new Person{ Name="Name 15", Age=24, Country="India"},
               new Person{ Name="Name 16", Age=24, Country="China"},
               new Person{ Name="Name 17", Age=24, Country="India"},
               new Person{ Name="Name 18", Age=24, Country="India"},
               new Person{ Name="Name 19", Age=24, Country="India"},
               new Person{ Name="Name 20", Age=24, Country="US"},
               new Person{ Name="Name 21", Age=24, Country="US"},
               new Person{ Name="Name 22", Age=24, Country="India"},
           };
           lbPersonList.ItemsSource = myList;
}

Now run the application and we can see the list of persons in the ListBox.


2.gif



Now we would like to see the persons from different countries. Then add the following code.


ICollectionView view = CollectionViewSource.GetDefaultView(myList);
view.GroupDescriptions.Add(new PropertyGroupDescription("Country"));
view.SortDescriptions.Add(new SortDescription("Country", ListSortDirection.Ascending));
lbPersonList.ItemsSource = view;

And in XAML we need to add the GroupStyle for the ListBox.


           
               
           
           
               
                   
               
           


Now run the application and see the Grouped List.


3.gif



One thing you must have noticed is that, The groups are sorted but the content of the group are not sorted.


It's a matter of writing a line of code and that is add another SortDescription.

ICollectionView view = CollectionViewSource.GetDefaultView(myList);
view.GroupDescriptions.Add(new PropertyGroupDescription("Country"));
view.SortDescriptions.Add(new SortDescription("Country", ListSortDirection.Ascending));
view.SortDescriptions.Add(new SortDescription("Name", ListSortDirection.Ascending));
           lbPersonList.ItemsSource = view;


Now run the application and you will see the sorting in the grouped contents too.


4.gif



Hope you like this article.

 Subscribe to Articles

     

Further Readings:

Responses

No response found. Be the first to respond this post

Post Comment

You must Sign In To post reply
Find More Articles on C#, ASP.Net, Vb.Net, SQL Server and more Here

Hall of Fame    Twitter   Terms of Service    Privacy Policy    Contact Us    Archives   Tell A Friend