Come posso farlo? Ho bisogno di un elenco (di tipo ObservableCollection
) in cui l'ultimo elemento è il primo.Come inserire un elemento all'inizio di ObservableCollection?
risposta
Provare a utilizzare
collection.Insert(0, item);
Questo aggiungerebbe voce per l'inizio della raccolta (mentre Add aggiunge alla fine). Maggiori informazioni here.
Si dovrebbe usare invece una pila.
questo si basa su Observable Stack and Queue
Crea uno Stack osservabile, in cui stack è sempre Last In First Out (LIFO).
da 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; }
}
}
Ciò richiede INotifyCollectionChanged, fa lo stesso come ObservableCollection, ma in maniera pila.
Perché ha bisogno di uno stack? Non può semplicemente semplicemente ".Inserire (0, elemento)" qualsiasi nuovo elemento all'inizio della lista? – ANeves
@ANeves, poiché l'inserto menzionato viene eseguito in tempo O (n), quindi può essere un inserto costoso. – mslot
@mslot se questo è il motivo, dovrebbe essere nella risposta. – ANeves
si può provare questo
collection.insert(0,collection.ElementAt(collection.Count - 1));
- 1. Aggiornamento ItemsControl quando un elemento in un ObservableCollection viene aggiornato
- 2. Come inserire un elemento nell'elenco in ordine?
- 3. Come inserire un elemento nell'array c_char_p
- 4. sostituire l'intera ObservableCollection con un altro ObservableCollection
- 5. Trova elemento in ObservableCollection senza utilizzare un ciclo
- 6. python, numpy; Come inserire un elemento all'inizio di un array
- 7. Come inserire un elemento nell'elenco interno di MongoDB?
- 8. Come inserire come primo elemento nel dizionario?
- 9. Come inserire un elemento duplicato in un vettore?
- 10. WPF - Binding ObservableCollection proprietà di dipendenza all'interno di un UserControl
- 11. Conversione di un array di ObservableCollection
- 12. Come inserire un elemento textNode javascript su una nuova riga
- 13. Come posso ordinare ObservableCollection?
- 14. Come inserire un elemento dopo la posizione iteratore
- 15. Come posso inserire più elementi canvas in un elemento canvas?
- 16. Rimuovere un elemento da ObservableCollection in un gestore di eventi CollectionChanged
- 17. Aumentare WPF prestazioni ObservableCollection
- 18. Utilizzando Lambda Expression su un ObservableCollection
- 19. Inserire un elemento tra ogni due elementi adiacenti di Seq
- 20. ObservableCollection Prestazioni di Databinding
- 21. voglio usare JavaScript per inserire un attributo a un elemento
- 22. Impossibile modificare ObservableCollection durante un evento CollectionChanged
- 23. Come posso inserire un elemento in un riferimento di matrice trattenuto come valore hash?
- 24. Come implementare un controllo Button Radio XAML con un'origine ObservableCollection?
- 25. Come convertire l'elenco in ObservableCollection?
- 26. Come aggiornare ObservableCollection dall'interno di un BackgroundWorker usando MVVM?
- 27. Come inserire un nuovo elemento tra tutti gli elementi di un array Ruby?
- 28. ObservableCollection non si aggiorna Visualizza
- 29. Come posso inserire elemento in XML dopo/prima di certo elemento in java
- 30. AngularJS e ngRepeat - inserire un elemento aggiuntivo ogni n ripetizioni
Avete bisogno la vostra collezione di essere osservabili altrimenti uno Stack è progettato per questo scopo. –