Способ сортировки xaml заключается в использовании источника collectionview.У него есть описания сортировки.
<CollectionViewSource x:Key="SortedItems" Source="{Binding UnsortedItems}" >
<CollectionViewSource.SortDescriptions>
<scm:SortDescription PropertyName="Blaa" />
<scm:SortDescription PropertyName="Blaa2" />
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>
Проблема в том, что вы не можете связать эти описания сортировки.
Возможно, вы могли бы что-то сделать с поведением или пользовательским каркасным элементом.Это позволило бы вам написать кучу кода и сделать это в пользовательском интерфейсе.Это было бы сложнее, чем выполнять сортировку в модели представления.
Я предлагаю вам вместо этого добавить коллекционное представление в модель представления и обработать сортировку в коде.Вы можете определить собственного icomparer для использования или просто очистить и добавить описания сортировки.
Или сортировать с помощью Linq, если это лучше подходит для вашего требования / набора навыков.
Примеры сортировки (и выполнения других задач) с коллекциями:
https://social.technet.microsoft.com/wiki/contents/articles/26673.wpf-collectionview-tips.aspx
Существует рабочий образец, связанный.
По существу, с наблюдаемой коллекцией людей, это связано с использованием:
public CollectionView PeopleView {get; set;}
Настройка:
CollectionViewSource cvs = new CollectionViewSource();
cvs.Source = People;
PeopleView = (CollectionView)cvs.View;
Сортировка:
PeopleView.SortDescriptions.Clear();
PeopleView.SortDescriptions.Add(new SortDescription("OrganizationLevel", ListSortDirection.Ascending));
PeopleView.SortDescriptions.Add(new SortDescription("LastName", ListSortDirection.Ascending));
PeopleView.SortDescriptions.Add(new SortDescription("FirstName", ListSortDirection.Ascending));