每當另一個控件的IsChanged
事件被觸發時,我需要刷新我的ListView
。我如何做到這一點一派,我就看見一個計算器鏈接,導致我here更優雅的ListView查詢
答案之一工作:
listView.ItemsSource = listView.ItemsSource
那真的只有這樣,才能刷新我ListView
?它感覺不太舒服。
每當另一個控件的IsChanged
事件被觸發時,我需要刷新我的ListView
。我如何做到這一點一派,我就看見一個計算器鏈接,導致我here更優雅的ListView查詢
答案之一工作:
listView.ItemsSource = listView.ItemsSource
那真的只有這樣,才能刷新我ListView
?它感覺不太舒服。
只是使其無效。
listView.InvalidateProperty(ListView.ItemsSourceProperty)
應該這樣做。另外,我真的會建議看MVVM。它往往更強大。在這種情況下,一個MVVM應用程序,我只想做:
的XAML:
<ListView ItemsSource="{Binding MyItems}" />
這裏將是我的ViewModel我結合:
public ObservableCollection<MyItem> MyItems
{
get; set;
}
public void IsChangedHandler(...)
{
...
this.OnPropertyChanged("MyItems");
}
你是什麼每次都需要刷新列表視圖。它會明確地減慢你的應用程序的性能。
最好使用ObervableCollection作爲你的listview的ItemSource。
您可以找到一個線程安全可觀察集合here。
另請參閱MSDN論壇中的此問題 - ListView.ItemsSource: howto update the UI whenever the source is updated?
哎呀,那真的是關閉了。該聲明應該是一個noop。如果不是有人可能會認爲它是,並刪除它。危險的。 – 2009-09-10 17:12:37