Как сортировать элементы 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(); } } } 
  • Сортировка NSArray строк или объектов даты
  • Сортировка NSArray пользовательских объектов по их свойствам NSDate
  • Как использовать std :: sort с вектором структур и функцией сравнения?
  • как сортировать данные из базы данных pandas
  • MySQL: Сортировка значений GROUP_CONCAT
  • Как использовать std :: sort для сортировки массива в C ++
  • Список OrderBy Алфавитный порядок
  • Алгоритм параллельной сортировки
  • Лучший способ перечислить файлы на Java, отсортированные по дате Модифицированные?
  • Сортировка 2D-массива в C ++ с использованием встроенных функций (или любого другого метода)?
  • Как сортировать список по свойству в объекте
  • Interesting Posts

    Как вы выполняете левое внешнее соединение с использованием методов расширения linq

    Запрос для документов, размер массива которых превышает 1

    Как конвертировать буквы с акцентами, умлауты и т. Д. В их ASCII-копии в Perl?

    как обеспечить функцию подкачки для моего classа?

    Проверка наличия или отсутствия URL-адреса

    Могу ли я получить разрешение 2560 x1600 на моем dell 3007wfp-hc, используя соединение hdmi на моем рабочем столе dell I660s /

    SPARQL: существует ли какой-либо путь между двумя узлами?

    Как прослушивать дуплекс на представлении в Android?

    Как переименовать некоторые файлы в соответствии с их меткой времени

    Как реализовать держатель вида?

    Бесплатный локальный прокси-движок для Windows?

    Twitter Bootstrap – добавить верхнее пространство между строками

    Изменение заголовков HTTP для запроса JSONP

    Как добавить оглавление в Rmarkdown?

    Являются ли двойные квадратные скобки ] предпочтительными в квадратных скобках в Bash?

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