Как сортировать элементы TreeView с помощью SortDescriptions в Xaml?

У меня есть список Layers привязанных к TreeView где каждый экземпляр имеет список Effects . Я показываю их через HierarchicalDataTemplate, который отлично работает, но я пытаюсь сортировать их с помощью SortDescriptions .

Я не знаю, как это сделать в xaml, но для этого можно использовать только первый уровень элементов, а не подпункты:

 ICollectionView view = CollectionViewSource.GetDefaultView ( treeView1.ItemsSource ); view.SortDescriptions.Add ( new SortDescription ( "Name", ListSortDirection.Ascending ) ); 

Я пытаюсь сортировать их сначала .Color , затем .Name .

Есть идеи?

EDIT: я добавил этот код:

         

Но это все еще только для первого уровня иерархии. Как я могу указать его для каждой коллекции layer.Effects?

Я бы предложил использовать конвертер для сортировки подпунктов. Что-то вроде этого:

            

и преобразователь:

 public class MyConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { System.Collections.IList collection = value as System.Collections.IList; ListCollectionView view = new ListCollectionView(collection); SortDescription sort = new SortDescription(parameter.ToString(), ListSortDirection.Ascending); view.SortDescriptions.Add(sort); return view; } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { return null; } } 

Я считаю, что использование мультиконвертера лучше:

 using System; using System.Collections; using System.ComponentModel; using System.Globalization; using System.Windows.Data; namespace Converters { [ValueConversion(typeof(object[]), typeof(ListCollectionView))] public class IListToListCollectionViewConverter : IMultiValueConverter { public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) { var Length = values.Length; if (Length >= 1 && Length < 3) { var IList = values[0] as IList; var SortName = string.Empty; if (Length > 1) SortName = values[1].ToString(); var SortDirection = ListSortDirection.Ascending; if (Length > 2) SortDirection = values[2] is ListSortDirection ? (ListSortDirection)values[2] : (values[2] is string ? (ListSortDirection)Enum.Parse(typeof(ListSortDirection), values[2].ToString()) : SortDirection); var Result = new ListCollectionView(IList); Result.SortDescriptions.Add(new SortDescription(SortName, SortDirection)); return Result; } return null; } public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture) { throw new NotImplementedException(); } } } 
  • Найти пару через 2 массива с k-й наибольшей суммой
  • MySQL Нелегальное сочетание сортировок
  • Сортировка 2D-массива в C ++ с использованием встроенных функций (или любого другого метода)?
  • Буквенно-цифровая сортировка с использованием LINQ
  • Диапазон сортировки VBA Excel по определенному столбцу
  • NSFetchedResultsController с датой как sectionNameKeyPath
  • Таблица сортировки неверна при нажатии кнопки сортировки более одного раза?
  • Как сортировать хеш perl по значениям и заказывать ключи соответственно (возможно, в двух массивах)?
  • Лучший способ сделать сортировку WPF ListView / GridView при нажатии на заголовок столбца?
  • Как отсортировать массив структур с помощью нескольких значений?
  • что такое естественный порядок, когда мы говорим о сортировке?
  • Interesting Posts

    Невозможно указать модификатор «async» в методе «Основной» консольного приложения

    Преобразование целочисленного в байтовый массив (Java)

    Когда Excel решает перегрузить текст в соседние ячейки или вырезать их на границе?

    Курсор нажимает «границу» между мониторами разного размера

    Как имитировать записи в файле HOSTS с помощью плагина браузера IE 7

    Несовместимые плагины для android-apt после обновления до Android Studio 2.3

    Изменение ориентации Android VideoView с помощью буферизованного видео

    Переменные оболочки в сценарии sed

    Перерисовать одну строку в listview

    Селекторы jQuery с переменными

    Что происходит, когда я завершаю процесс, и буфер отправки сокета не пуст?

    Как проверить подключение к Интернету в Android?

    Выгрузите сборку, загруженную Assembly.LoadFrom ()

    Не удалось удалить раздел реестра

    Использует ли Mutex для предотвращения безопасной работы нескольких экземпляров одной и той же программы?

    Давайте будем гением компьютера.