Sorting on datagrid column with binded data and converter
===

I'm trying to sort data in datagrid, but when I click on header of column which has binding with convertor nothing happend. I use MVVM pattern. Example is attached below. In examle grid shows column (Type) which displays type of person and therefore I use converter (class TypeValueConverter). When I use this converter, grid doesn't sort column Type.

 Thank you for your help.

    <Window x:Class="GridSort.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:my="clr-namespace:GridSort"
            Title="MainWindow" Height="350" Width="525">
        <Grid>
            <DataGrid ItemsSource="{Binding People}" AutoGenerateColumns="False">
                <DataGrid.Resources>
                    <my:TypeValueConverter x:Key="typeConverter" />
                </DataGrid.Resources>
                <DataGrid.Columns>
                    <DataGridTextColumn Binding="{Binding FirstName}" Header="FirstName" />
                    <DataGridTextColumn Binding="{Binding Surname}" Header="Surname" />
                    <DataGridTextColumn Binding="{Binding Converter={StaticResource ResourceKey=typeConverter}}" Header="Type" />
                </DataGrid.Columns>
            </DataGrid>
        </Grid>
    </Window>


    public class ViewModel
    {
        private ICollection<Person> people;
        public ICollection<Person> People
        {
            get
            {
                if (this.people == null)
                {
                    this.people = new List<Person>();
                    this.people.Add(new Student() { FirstName = "Charles", Surname = "Simons" });
                    this.people.Add(new Student() { FirstName = "Jake", Surname = "Baron" });
                    this.people.Add(new Teacher() { FirstName = "John", Surname = "Jackson" });
                    this.people.Add(new Student() { FirstName = "Patricia", Surname = "Phillips" });
                    this.people.Add(new Student() { FirstName = "Martin", Surname = "Weber" });
                }

                return this.people;
            }
        }
    }

    public class TypeValueConverter : IValueConverter
        {
            public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                if (value == null)
                {
                    return DependencyProperty.UnsetValue;
                }
    
                return value.GetType().Name;
            }
    
            public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                throw new NotImplementedException();
            }
        }

    public abstract class Person
        {
            public string FirstName
            {
                get;
                set;
            }
    
            public string Surname
            {
                get;
                set;
            }
        }
    
        public class Student : Person
        {
        }
    
        public class Teacher : Person
        {
        }