Wie kann ich das tun? Ich brauche eine Liste (vom Typ ObservableCollection
) wo der neueste Artikel zuerst ist.Wie füge ich ein Objekt am Anfang einer ObservableCollection ein?
Antwort
Versuchen Sie es mit
collection.Insert(0, item);
Dieser Artikel an den Anfang der Sammlung hinzufügen würde (während an das Ende hinzufügt). Weitere Informationen here.
Sie sollten stattdessen einen Stapel verwenden.
auf Observable Stack and Queue
Eine beobachtbare Stapel, dieser basiert, wo Stapel immer in first out (LIFO) wird dauern.
von Sascha Holl
public class ObservableStack<T> : Stack<T>, INotifyCollectionChanged, INotifyPropertyChanged
{
public ObservableStack()
{
}
public ObservableStack(IEnumerable<T> collection)
{
foreach (var item in collection)
base.Push(item);
}
public ObservableStack(List<T> list)
{
foreach (var item in list)
base.Push(item);
}
public new virtual void Clear()
{
base.Clear();
this.OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset));
}
public new virtual T Pop()
{
var item = base.Pop();
this.OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, item));
return item;
}
public new virtual void Push(T item)
{
base.Push(item);
this.OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, item));
}
public virtual event NotifyCollectionChangedEventHandler CollectionChanged;
protected virtual void OnCollectionChanged(NotifyCollectionChangedEventArgs e)
{
this.RaiseCollectionChanged(e);
}
protected virtual void OnPropertyChanged(PropertyChangedEventArgs e)
{
this.RaisePropertyChanged(e);
}
protected virtual event PropertyChangedEventHandler PropertyChanged;
private void RaiseCollectionChanged(NotifyCollectionChangedEventArgs e)
{
if (this.CollectionChanged != null)
this.CollectionChanged(this, e);
}
private void RaisePropertyChanged(PropertyChangedEventArgs e)
{
if (this.PropertyChanged != null)
this.PropertyChanged(this, e);
}
event PropertyChangedEventHandler INotifyPropertyChanged.PropertyChanged
{
add { this.PropertyChanged += value; }
remove { this.PropertyChanged -= value; }
}
}
Dies erfordert INotifyCollectionChanged, tut das gleiche wie ein ObservableCollection, aber in einem Stapel Weise.
Warum braucht er einen Stapel? Kann er nicht einfach einfach '.Insert (0, item)' irgendwelche neuen Gegenstände am Anfang der Liste? – ANeves
@ANeves, Weil der erwähnte Einsatz in O (n) Zeit gemacht wird, so kann es ein teurer Einsatz sein. – mslot
@mslot wenn das der Grund ist, sollte es in der Antwort sein. – ANeves
können Sie versuchen, diese
collection.insert(0,collection.ElementAt(collection.Count - 1));
- 1. Wie aktualisiere ich ein Objekt in einer ObservableCollection?
- 2. Wie füge ich am Anfang einer vim-Datei mit der .vimrc-Datei Text ein?
- 3. Wie füge ich ein Element am Anfang der Liste in ListBox hinzu?
- 4. In MATLAB wie füge ich eine Zeichenfolge am Anfang jeder Zeichenfolge in einem Zellenfeld ein?
- 5. Python Tkinter - Wie füge ich Text am Anfang des Textfelds ein?
- 6. Wie füge ich ein Wort am Anfang mehrerer Zeilen in vim hinzu?
- 7. Wie kann ein Objekt innerhalb einer ObservableCollection am effizientesten identifiziert und ersetzt werden?
- 8. Ein Leerzeichen am Anfang einer Zeile mit pyparsing
- 9. Wie füge ich ein Element am Ende eines Arrays hinzu?
- 10. Benötigen Sie ein Element am Anfang eines Iterators in Python
- 11. SQL Server 2005: Wie füge ich eine Spalte zu einer Tabelle am Anfang der Tabelle hinzu?
- 12. Wie wird ein Leerzeichen am Anfang des Ausdrucks python gefunden?
- 13. Wie fügt man ein Objekt am Anfang der Liste in ArrayAdapter hinzu?
- 14. Wie kann ich ein Prozentzeichen (%) am Anfang einer Zeile in HAML schreiben?
- 15. Wie entferne ich ein Komma am Ende einer Zeichenkette?
- 16. Wie füge ich meinem Singleton-Code ein anderes Objekt hinzu?
- 17. Wie füge ich ein QWidget zu einer QMenuBar hinzu?
- 18. Wie füge ich ein Commit in ein früheres Commit ein?
- 19. Wie füge ich ein Element mit Linq in XML ein?
- 20. ein Array zu einem ObservableCollection
- 21. Wie loswerden einer zufälligen "% 3" am Anfang einer Zeichenfolge
- 22. Entkomme ein & (Et-Zeichen) am Anfang eines YAML-Eintrags?
- 23. Wie füge ich am Anfang jeder Zeile in einem ausgewählten Text mit autohotkey vier Leerzeichen hinzu?
- 24. Wie füge ich ein bedingtes Pflichtfeld hinzu?
- 25. Wie gebe ich Text in ein Textfeld ein, indem am Anfang des Feldes ein Leerzeichen gesetzt wird?
- 26. Wie füge ich ein Tab-Zeichen in Iterm ein?
- 27. Ein Objekt als ObservableCollection darstellen <object>
- 28. Wie füge ich Symbole in ein Formularfeld ein?
- 29. Microsofts Nachricht am Anfang einer Datei
- 30. Wie kopiere ich ein Objekt in ein anderes und füge ein neues Feld zum neuen Objekt in JavaScript hinzu?
Haben Sie Ihre Sammlung brauchen für diesen Zweck als beobachtbare sonst wird ein Stapel gestaltet. –