Jak mogę to zrobić? Potrzebuję listy (typu ObservableCollection
), w której pierwszy element jest pierwszy.Jak wstawić element na początku ObservableCollection?
Odpowiedz
Spróbuj użyć
collection.Insert(0, item);
Byłoby dodać pozycję do początku zbierania (podczas dodawania dodaje do końca). Więcej informacji here.
Zamiast tego należy użyć stosu.
ta opiera się na Observable Stack and Queue
Załóż zaobserwowania stos, gdzie stos jest zawsze ostatni w pierwszym out (LIFO).
od 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; }
}
}
Wymaga INotifyCollectionChanged, robi to samo jako ObservableCollection, ale w sposób stosu.
Dlaczego potrzebuje stosu? Czy nie może po prostu ".Wstawić (0, przedmiot)" jakieś nowe pozycje na początku listy? – ANeves
@Neves, ponieważ wspomniana wstawka jest wykonywana w czasie O (n), więc może to być droga wstawka. – mslot
@mslot jeśli to jest powód, powinien znajdować się w odpowiedzi. – ANeves
można spróbować to
collection.insert(0,collection.ElementAt(collection.Count - 1));
- 1. Python Tkinter - Jak wstawić tekst na początku pola tekstowego?
- 2. Jak wstawić słowo/tekst na początku każdej linii
- 3. Element wypychający javascript na początku tablicy
- 4. Jak dodać element do początku kolejki?
- 5. Jak wykryć, czy element w mojej ObservableCollection zmienił się
- 6. wydobywania element i wstawić spację
- 7. Jak wstawić element do wewnętrznej listy MongoDB?
- 8. Jak wstawić element do tablicy c_char_p
- 9. Jak mogę sortować ObservableCollection?
- 10. ObservableCollection nie aktualizuje Widok
- 11. Jak konwertować listę do ObservableCollection?
- 12. wstawić element do określonego położenia wektora
- 13. Jak programowo wstawić element łącza za pomocą HTMLElement?
- 14. android Jak dodać widok na początku układu?
- 15. Jak ustawić tekst na początku RibbonApplicationMenu
- 16. Wstaw ciąg znaków na początku kolejnego ciągu znaków
- 17. JavaScript 0 na początku numeru
- 18. ddd zawiesza się na początku
- 19. Asynchroniczna aktualizacja elementów ObservableCollection
- 20. Jak wstawić # na czele wielu linii za pomocą emacsa?
- 21. Prepend element tablicy numpy
- 22. Jak zmienić ICollection Entity Framework jako ObservableCollection?
- 23. Jak wstawić zdarzenie do początku kolejki wątków procesu wyświetlania zdarzeń w java?
- 24. C++ napisz na początku pliku
- 25. Nieoczekiwana przestrzeń na początku pliku
- 26. Jak przekonwertować element DOM na element jQuery?
- 27. HTML Tidy stripping przestrzeń na początku
- 28. android.os.NetworkOnMainThreadException na początku usług na Androidzie
- 29. node.js jak wstawić ciąg do początku pliku, ale nie zastąpić oryginalnego tekstu?
- 30. Jak wstawić element na posortowanej liście połączonej w ramach złożoności o stałym czasie?
Czy trzeba swoją kolekcję być obserwowalne inaczej stosie jest przeznaczony do tego celu. –