Telerik UI for Windows 8 XAML

You can sort the data in a DataGrid by a property value from the class that defines your objects. This can be achieved with a PropertySortDescriptor and setting its PropertyName property.

  • PropertyName - (type of string)

    - Gets or sets the name of the property that is used to retrieve the key to sort by.

Note

You can easily choose the sorting order - Ascending or Descending - using the SortOrder property.

Note

To apply multiple sorting, you need to enable it through the RadDataGrid.UserSortMode = "Multiple" and add two or more sort descriptors.

The following example will show how to sort data by property:

Property Sort Descriptor Example

First, define a DataGrid instance in XAML with a PropertySortDescriptor which points to a property from the model through its PropertName property:

XAML Copy imageCopy
<grid:RadDataGrid Width="600" Height="460" x:Name="grid">
    <grid:RadDataGrid.SortDescriptors>
        <grid:PropertySortDescriptor PropertyName="Country"/>
    </grid:RadDataGrid.SortDescriptors>
</grid:RadDataGrid>

Then create sample data and add it to the datacontext of the DataGrid:

C# Copy imageCopy
List<CustomData> data = new List<CustomData>
                                     {

                                         new CustomData { Country = "Brazil", City = "Caxias do Sul"},
                                         new CustomData { Country = "Ghana", City = "Wa"},
                                         new CustomData { Country = "Brazil", City = "Fortaleza"},
                                         new CustomData { Country = "Italy", City = "Florence" },
                                         new CustomData { Country = "France", City = "Bordeaux" }, 
                                         new CustomData { Country = "Bulgaria", City = "Vratsa"},
                                         new CustomData { Country = "Spain", City = "Las Palmas"},
                                         new CustomData { Country = "France", City = "Le Mans" },
                                         new CustomData { Country = "Brazil", City = "Santos"},
                                         new CustomData { Country = "Ghana", City = "Ho"},
                                         new CustomData { Country = "Spain", City = "Malaga"},
                                         new CustomData { Country = "France", City = "Marseille" },
                                         new CustomData { Country = "Bulgaria", City = "Koynare" },  
                                         new CustomData { Country = "Spain", City = "Valencia"},
                                         new CustomData { Country = "Ghana", City = "Kade" },
                                         new CustomData { Country = "Brazil", City = "Porto Alegre" }, 
                                         new CustomData { Country = "Bulgaria", City = "Byala Slatina"},
                                         new CustomData { Country = "Italy", City = "Naples" },
                                         new CustomData { Country = "Brazil", City = "Joinville" }, 
                                     };
this.grid.ItemsSource = data;

CustomData is a custom class which defines our objects:

C# Copy imageCopy
public class CustomData
{
    public string City
    {
        get;
        set;
    }
    public string Country
    {
        get;
        set;
    }
}