У меня есть модель структуры объекта с иерархической настройкой по отношениям.Table1 -> Table2 -> Table3 -> Table4 -> Table 5. Я установил древовидную структуру с иерархическим шаблоном в своем приложении WPF, источник которого привязан к локальным данным платформы Entity.
Все классы моих сущностей сделаны из наблюдаемых коллекций.Каждый из этих классов наследует базовый класс, который имеет идентификатор и имя.
Мне удалось получить родительский элемент верхнего уровня для сортировки, но я не могу получить ни один из дочерних узлов и их дочерних узлов и т. Д. Дляsort:
TreeSetup.Items.SortDescriptions.Add(new SortDescription("Name", ListSortDirection.Descending));
Я также пытался использовать OrderBy в контексте моей сущности.Но тот же результат последовал.У кого-нибудь есть решение, которое упорядочит все элементы моего дерева, а также все будущие узлы, которые будут добавлены.
Вот конвертер, который я использую, который работает только один раз.И не обновляет мое дерево по мере внесения изменений.Я предполагаю, что это потому, что я связываю его со свойством «view», а не с исходным контекстом.
public class SortNodesAlphabetically : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value == null) return null;
if(value is ObservableCollection<tblProject>)
{
ObservableCollection<tblProject> view = (ObservableCollection<tblProject>) value;
return view.OrderBy(o => o.Name); ;
}
if (value is ObservableCollection<tblLine>)
{
ObservableCollection<tblLine> view = (ObservableCollection<tblLine>)value;
return view.OrderBy(o => o.Name); ;
}
if (value is ObservableCollection<tblGroup>)
{
ObservableCollection<tblGroup> view = (ObservableCollection<tblGroup>)value;
return view.OrderBy(o => o.Name); ;
}
if (value is ObservableCollection<tblStation>)
{
ObservableCollection<tblStation> view = (ObservableCollection<tblStation>)value;
return view.OrderBy(o => o.Name); ;
}
if (value is ObservableCollection<tblDevice>)
{
ObservableCollection<tblDevice> view = (ObservableCollection<tblDevice>)value;
return view.OrderBy(o => o.Name); ;
}
if (value is ObservableCollection<tblSubDevice>)
{
ObservableCollection<tblSubDevice> view = (ObservableCollection<tblSubDevice>)value;
return view.OrderBy(o => o.Name); ;
}
if (value is ObservableCollection<tblSubSubDevice>)
{
ObservableCollection<tblSubSubDevice> view = (ObservableCollection<tblSubSubDevice>)value;
return view.OrderBy(o => o.Name); ;
}
return null;
}
Я последовал ответу из подобного поста. Ответил IVerzin Как отсортировать элементы TreeView с помощью SortDescriptionв Xaml?
Однако новые объекты в моем контексте все еще не отсортированы