Sorting and grouping is possible in pure XAML. To sort and group a collection, you use a CollectionViewSource object. This object has two properties CollectionViewSource.SortDescriptions and CollectionViewSource.GroupDescriptions.
For example:
<Window
x:Class="WindowsApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="WindowsApplication1"
Height="300" Width="300"
xmlns:global="clr-namespace:System.Globalization;assembly=mscorlib"
xmlns:scm="clr-namespace:System.ComponentModel;assembly=WindowsBase"
xmlns:dat="clr-namespace:System.Windows.Data;assembly=PresentationFramework"
>
<Window.Resources>
<ObjectDataProvider x:Key="CulturesProvider"
ObjectType="{x:Type global:CultureInfo}"
MethodName="GetCultures">
<ObjectDataProvider.MethodParameters>
<global:CultureTypes>AllCultures</global:CultureTypes>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
<CollectionViewSource x:Key="MyCVS"
Source="{StaticResource CulturesProvider}">
<CollectionViewSource.SortDescriptions>
<scm:SortDescription PropertyName="IetfLanguageTag" />
</CollectionViewSource.SortDescriptions>
<CollectionViewSource.GroupDescriptions>
<dat:PropertyGroupDescription PropertyName="Parent" />
</CollectionViewSource.GroupDescriptions>
</CollectionViewSource>
</Window.Resources>
<Grid>
<ListBox ItemsSource="{Binding Source={StaticResource MyCVS}}">
<ListBox.GroupStyle>
<x:Static Member="GroupStyle.Default"/>
</ListBox.GroupStyle>
</ListBox>
</Grid>
</Window>
Please note that, if you want to sort in descending order, add Direction into SortDescription:
<scm:SortDescription PropertyName="IetfLanguageTag" Direction="Descending" />
Enjoy!