我該怎麼做?我需要一個最新的產品名單(類型ObservableCollection
)。如何在ObservableCollection的開頭插入一個項目?
31
A
回答
64
5
您應該使用堆棧。
這是基於Observable Stack and Queue
創建一個可觀察的堆棧,其中堆棧總是倒數第一的出(LIFO)。
從霍爾的Sascha
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; }
}
}
這要求INotifyCollectionChanged,做同樣的作爲的ObservableCollection,但在一個堆棧方式。
0
你可以試試這個
collection.insert(0,collection.ElementAt(collection.Count - 1));
相關問題
- 1. WP7中插入一個ObservableCollection
- 2. 複製一個ObservableCollection項目
- 3. 插入一個項目在一個ItemsControl
- 4. 如何在一個可選控件中插入一個項目
- 5. 在矩陣中插入一個項目
- 6. 如何在eclipse插件開發中建立一個項目
- 7. 從ObservableCollection刪除一個項目
- 8. 在項目文件中插入項目頭版本號
- 9. 如何在多個文件的開頭插入文本?
- 10. 插入一個編號的項目
- 11. Three20插入項目如何
- 12. 一個插件,打開從項目樹
- 13. ASP.NET的ListView:如何插入「特定」項目每N個項目?
- 14. 在SQL中的字符串的開頭插入一個字符
- 15. 在另一個字符串的開頭插入字符串
- 16. 在嵌套列表的開頭插入一個列表
- 17. python:list.insert:在一個給定的位置插入一個項目
- 18. 作爲一個項目插入到多個項目
- 19. 如何在桌面上插入項目
- 20. 如何在數組中插入項目?
- 21. 如何在列表中插入項目
- 22. Python:插入一個項目到堆棧
- 23. 只用一個頭文件開始一個新項目
- 24. 插入新項目的ListView第一項
- 25. 如何在GAE的django項目中嵌入開源項目?
- 26. 如何添加項目到ObservableCollection?
- 27. 如何異步更新到ObservableCollection項目?
- 28. 如何資助一個開源項目?
- 29. 如何開始一個新項目
- 30. 在文本的開頭插入元素
你需要你的收藏可觀察到,否則堆棧是專爲這一目的。 – 2012-03-27 18:31:17