Mega Code Archive

 
Categories / C# / WPF
 

Apply Custom Sorting Logic to a Collection

<Window      x:Class="WpfApplication1.Window1"     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"     xmlns:local="clr-namespace:WpfApplication1"     Title="WPF" Height="300" Width="180">     <Window.Resources>         <local:SortableCountries x:Key="sortableCountries"/>     </Window.Resources>     <Grid>         <StackPanel>             <ItemsControl ItemsSource="{StaticResource sortableCountries}" />             <Button Click="SortButton_Click" Content="Sort" Margin="8" />         </StackPanel>     </Grid> </Window> //File:Window.xaml.cs using System; using System.Collections; using System.Windows; using System.Windows.Data; using System.Collections.ObjectModel; namespace WpfApplication1 {     public partial class Window1 : Window     {         public Window1()         {             InitializeComponent();         }         private void SortButton_Click(object sender, RoutedEventArgs args)         {             SortableCountries sortableCountries = (SortableCountries)(this.Resources["sortableCountries"]);             ListCollectionView lcv = (ListCollectionView)CollectionViewSource.GetDefaultView(sortableCountries);             lcv.CustomSort = new SortCountries();         }     }     public class SortCountries : IComparer     {         public int Compare(object x, object y)         {             string stringX = x.ToString();             string stringY = y.ToString();                          return stringX.CompareTo(stringY);         }     }     public class SortableCountries : ObservableCollection<string>     {         public SortableCountries()         {             this.Add("C");             this.Add("B");             this.Add("A");         }     } }