C # Entity Framework.Упорядочить все иерархические узлы согласно столбцу «Имя» - PullRequest
0 голосов
/ 18 мая 2018

У меня есть модель структуры объекта с иерархической настройкой по отношениям.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?

Однако новые объекты в моем контексте все еще не отсортированы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...