Ich habe ein Problem, das ist sehr langweilig und ich verbringe viel Zeit, um mein Problem mit dem besten Weg zu lösen.Artikel in ObservableCollection hinzufügen Ordered - C# UWP
Problem: Ich habe zwei ObservableCollections. (OCAux - Auxiliary OC, OCMain - Haupt OC Binde UI)
Ich habe Anfrage http, 5 Anfragen. für jede Antwort auf die Anfrage wird zu den Artikeln OCAux hinzugefügt, und dann werden die Artikel bestellt. Nachdem dies jedem Artikel hinzugefügt wurde, der zu meinem OCMain bestellt wurde, wird automatisch die Benutzeroberfläche benachrichtigt (ist bindend). Das Problem ist, dass beim Hinzufügen eines neuen Artikels, dieser nicht bestellt wird, weil ich Bestellung das Ergebnis von OCAux bin, dh nur Bestellungen auf Anfrage anfordern. Wenn Sie das Element bestellen, nachdem Sie es zu OCMain hinzugefügt haben, blinkt es. Ich könnte das OCMain für jedes Mal bestellen, das Elemente hinzugefügt hat, aber verursacht, dass die UI beim Hinzufügen der Elemente blinkt.
Dies wurde umgangen, wie folgt, aber es bleibt diese „blinkt“ in der Benutzeroberfläche:
foreach (var item in OCMain)
{
OCAux.Add(item);
}
ObservableCollection<Movies> moviesSortedByDatetime= new ObservableCollection<Movies>
(OCAux.OrderByDescending(item=> item.DateTime));
OCMain.Clear();
foreach (var item in moviesSortedByDatetime)
{
if (!OCMain.Contains(item))
{
OCMain.Add(item);
}
}
Wer weiß, wie in der richtigen Position eines ObservableCollection ein Element halten einfügen?
Vielen Dank im Voraus
Fügen Sie es zu OCAux hinzu. Dann bestelle es. Holen Sie den Index des hinzugefügten Artikels mit OCAux.indexOf (item). Dann fügen Sie es in OCMain ein. OCMain.Insert (Index, Element); Ist es das was du wolltest? – Archana
Ich mache die Sortierung in der CollectionViewSource, aber ich kenne nur WPF.Und ein weiterer Trick besteht darin, ein IEnumerable zurückzugeben, das Sie sortieren und NotifyProperty-Änderung für das Enumerable aufrufen, aber das funktioniert nicht in allen Situationen. Ziemlich sicher und ObservableCollection hat kein InsertAt. – Paparazzi