我使用VS2010 - WPF - C#如何覆蓋C#中的CollectionChanged事件?
我有一個列表視圖,使用此指令從源獲取其項目:
this.listView1.ItemsSource = CollectionViewSource.GetDefaultView(getTicker());
的問題是,每次源被更新的時候,我的列表視圖沒有按沒有得到更新?
我知道我必須做的OnCollectionChanged
事件的東西,但我不知道該怎麼辦呢
請幫我這一點。 。 。
我使用VS2010 - WPF - C#如何覆蓋C#中的CollectionChanged事件?
我有一個列表視圖,使用此指令從源獲取其項目:
this.listView1.ItemsSource = CollectionViewSource.GetDefaultView(getTicker());
的問題是,每次源被更新的時候,我的列表視圖沒有按沒有得到更新?
我知道我必須做的OnCollectionChanged
事件的東西,但我不知道該怎麼辦呢
請幫我這一點。 。 。
我不知道爲什麼你使用的是CollectionViewSource.GetDefaultView(getTicker());
假設getTicker()
回報的項目列表,你可以做
this.listView1.ItemsSource = getTicker();
如果你想確保你的列表視圖更新時源集合那麼你必須使用一個實現INotifyCollectionChanged
接口的集合,例如ObservableCollection
這樣做。但是,您必須確保您在UI線程上更新您的集合。
更新:這裏是你如何使用ObservableCollection
:
var TickerData = new ObservableCollection<MyData>();
this.listView1.ItemsSource = TickerData;
然後你就可以添加/ TickerData
刪除項目/因爲ObservableCollection
實現INotifyCollectionChanged
它公開了一個CollectionChanged
事件的UI會自動更新ListView訂閱的處理程序。
我想你可能想看看some tutorials on WPF。
getTicker方法有什麼作用?如果每個電話都可以返回一個新的收藏,也許您將替換爲收藏,而不是添加/刪除元素。我已經看過好幾次了......
確保當你有新的項目添加(或全新的項目集合)時: 1.清除集合(getTicker中返回的集合)以清除所有項目 2.添加的所有新項目,以收集
如果你真的不需要CollectionviewSource,只需綁定一個ObservableCollection ...
實際上getTicker()函數返回項目 – 2011-04-10 08:59:54
的名單我想做一些像覆蓋CollectionChanged事件一樣的東西,以便每次集合更改我的列表視圖動態更新 – 2011-04-10 09:00:49
覆蓋它在哪裏?如果你將你的列表視圖綁定到一個激發集合更改事件的集合,那麼你就完成了。 – ChrisWue 2011-04-10 10:12:21