Проблема UWP при загрузке TreeView - очень длинный список - PullRequest
0 голосов
/ 30 марта 2020

Я рецензировал эту статью Проблема загрузки TreeView , но это не решает мою проблему. У меня есть такая структура: Персона - Посещение

Посещение является иерархическим, поэтому я могу иметь:

Person
 - Visit 1
 - Visit 2
   - Visit 2.1
   - Visit 2.2

, и нет способа определить, какая это структура.

I Я определил 2 класса Person и посещение и используя EFCore. Я сопоставил базу данных.

Код загрузки Person:

           var aList = await context.VVisitHierarchy
                .Where(a => a.CodPaz == _PazV.CodPaz && a.Parent == null)
                .OrderBy(b => b.CreationOrd).ThenBy(b => b.Data).ThenBy(b => b.CodPar)
                .ToListAsync();

            foreach (var item in aList)
            {
                MTreeViewVisit aMVisit = new MTreeViewVisit(item);
                Visits.Add(aMVisit);
                await aMVisit.LoadDataAsync();
            }

, а затем я загружаю все посещения:

    public async Task LoadDataAsync()
    {
        using (var context = new TitoDocContext())
        {
            var aList = await context.VVisitHierarchy
                .Where(a => a.CodPaz == _VisitH.CodPaz && a.Parent == _VisitH.CodPar)
                .OrderBy(b => b.CreationOrd).ThenBy(b => b.Data).ThenBy(b => b.CodPar)
                .ToListAsync();

            foreach (var item in aList)
            {
                MTreeViewVisit aMVisit = new MTreeViewVisit(item);
                Visits.Add(aMVisit);
                await aMVisit.LoadDataAsync();
            }
        }
    }

Что прекрасно, так это то, что я вижу, что дерево загружается постепенно, это очень хорошо. Что НЕ приятно, так это то, что когда у меня есть несколько уровней, когда я пытаюсь развернуть уровень ниже, я получаю неперехваченную ошибку, поскольку элементы не были загружены (или это мое предположение). Я предположил, что это так, потому что для небольшого набора данных он всегда работает идеально, но когда у меня 1000 клиентов и 10 000 посещений, он случайно заходит в тупик. загружен "но как определить, загружен ли весь асин c? Также мне нужно, чтобы элементы root были в правильном порядке (из запроса), а не в «скорости создания», так что я могу сделать? Может быть, я могу создать элемент root без дочернего элемента, а затем добавить дочерний элемент после загрузки всей структуры? но опять как все ждать и потом сигнализировать об обновлении?

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