CollectionView с оставшимися данными и группамиC#

Место общения программистов C#
Ответить
Anonymous
 CollectionView с оставшимися данными и группами

Сообщение Anonymous »

В моем приложении .NET 9 Maui у меня есть CollectionView , а модель представления на странице проходит значения через ObservableCollection .

Код: Выделить всё

public class WordGroup : List
{
public string Name { get; private set; }

public WordGroup(string name, List words) : base(words)
{
Name = name;
}
}

[ObservableProperty]
private ObservableCollection? _wordGroups;
CollectionView определяется так:

Код: Выделить всё

< /code>
Когда порог достигнут, приложение запускает эту функцию < /p>
private async void cvWords_RemainingItemsThresholdReached(object sender,
EventArgs e)
{
if (BindingContext is DictionaryWordsListViewModel vm)
{
await vm.ReadMoreWords();
}
}
< /code>
ReadMoreWords
считывает из APIS A Pageize элементы на основе следующей страницы и добавляет записи в слова , которые определяются как список . Итак, в словах у меня есть все предыдущие элементы плюс новые. Затем я должен группировать слова , используя эту функцию

Код: Выделить всё

public void GroupWords()
{
if (Words != null && Words.Count == 0)
{
WordGroups = new ObservableCollection();
return;
}

if (IsGroupedByLetter)
WordGroups = Words?.ToObservableGroups();
else
WordGroups = Words?.ToObservableGroups(Enums.GroupFor.WordType);
}
< /code>
The problem is that every time I add new elements and group them, the CollectionView
прыгает в начале. Вот что произойдет.

Код: Выделить всё

private async void cvWords_RemainingItemsThresholdReached(object sender,
EventArgs e)
{
if (BindingContext is DictionaryWordsListViewModel vm)
{
await vm.ReadMoreWords();

cvWords.ScrollTo(vm.WordGroups?.LastOrDefault(),
position: ScrollToPosition.End, animate: false);
}
}
< /code>
with no results. Also, I tried to change the GroupWords
Функция путем добавления следующего кода.

Код: Выделить всё

foreach (var newGroup in list)
{
var existingGroup = WordGroups.FirstOrDefault(g => g.Name == newGroup.Name);

if (existingGroup == null)
{
WordGroups.Add(newGroup);
}
else
{
foreach (var word in newGroup)
{
if (!existingGroup.Any(w => w.ID == word.ID))
existingGroup.Add(word);
}
}
}
< /code>
In this case, the application crashes when I add the second newGroup
к словесным группам . Как я могу изменить код, чтобы получить полезный обзор с группами и оставшиеся в результате , чтобы сделать эффективное рендеринг?

Подробнее здесь: https://stackoverflow.com/questions/797 ... and-groups
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»