Collectionview mit restlichen Threshold und GruppenC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Collectionview mit restlichen Threshold und Gruppen

Post by Anonymous »

In meiner .NET 9 MAUI -Anwendung habe ich eine CollectionView und das Ansichtsmodell auf der Seite übergibt die Werte über eine Beobachtungsvorstellung .

Code: Select all

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

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

[ObservableProperty]
private ObservableCollection? _wordGroups;
Die CollectionView ist so definiert:

Code: Select all

< /code>
Wenn der Schwellenwert erreicht ist, wird in der App diese Funktion < /p>
ausgeführtprivate async void cvWords_RemainingItemsThresholdReached(object sender,
EventArgs e)
{
if (BindingContext is DictionaryWordsListViewModel vm)
{
await vm.ReadMoreWords();
}
}
< /code>
ReadMoreWords
liest aus den APIs a pageSize Elemente basierend auf der nächsten Seite und fügt die Datensätze zu den Wörtern hinzu, die als Liste definiert sind. Also habe ich in den Wörtern alle vorherigen Elemente plus die neuen. Dann muss ich Wörter mit dieser Funktion
gruppieren

Code: Select all

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 [url=viewtopic.php?t=26065]problem[/url] is that every time I add new elements and group them, the CollectionView
springt am Anfang. Hier ist, was passiert.

Code: Select all

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
Funktion durch Hinzufügen des folgenden Codes.

Code: Select all

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
zu den Wortgruppen . Wie kann ich den Code so ändern, dass ein nutzbares Sammelansicht mit Gruppen und verbleibendem Threshold hat, um ein effizientes Rendern zu machen?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post