我使用DispatcherTimer()來調用更新函數來更新其中數據更新的數據庫的列表視圖。所以,listview就像儀表板一樣使用。更新WPF列表視圖作爲數據庫表更新
private void Update(){
DateTime d = DateTime.Today;
items = (from i in DataManager.Entities.signals
where i.Date > d
orderby i.Id descending
select i).Take(MAX_NUM_OF_DISPLAYED);
this.lvDashboard.ItemsSource = items;
}
它工作正常,直到達到一定數量的數據。我知道我可以查詢數據庫中上次更新的數據並將其添加到itemssource。我試圖讓我的代碼簡單明瞭。你能提出任何想法或建議嗎?
----------------更新---
,每天1-2秒更新1000行數據和數據的窗口都會移動到最近的數據。過程記憶不斷增長的一些原因。 DataTable是否監視數據庫更新?如果數據庫更新了一些其他地方,DB綁定的DataTable會自行更新嗎?
什麼時候它確切地失敗(你是否更新你的列表視圖相當頻繁)? – MrClan 2012-03-19 11:53:35
簡單明瞭往往不能很好地與快速一起工作;)但正如所有的人已經建議。重置ItemsSource顯然是你能做的最糟糕的事情。只需使用數據綁定的力量,使用ObservableCollection作爲ItemsSource,將數據添加到列表中,然後讓其餘部分通過wpf處理。 – dowhilefor 2012-03-19 13:45:10