每次触发另一个控件的ListView
事件时,我都需要刷新IsChanged
。我搜索了如何做到这一点,我看到一个stackoverflow链接导致我here
其中一个答案有效:
listView.ItemsSource = listView.ItemsSource
这真的是刷新ListView
的唯一方法吗?感觉有点不对劲。
答案 0 :(得分:5)
让它无效。
listView.InvalidateProperty(ListView.ItemsSourceProperty)
应该这样做。
顺便说一句,我真的建议看一下MVVM。它往往更强大。在这种情况下,对于MVVM应用程序,我会这样做:
的Xaml:
<ListView ItemsSource="{Binding MyItems}" />
这将是我绑定的ViewModel:
public ObservableCollection<MyItem> MyItems
{
get; set;
}
public void IsChangedHandler(...)
{
...
this.OnPropertyChanged("MyItems");
}
答案 1 :(得分:1)
每次刷新列表视图需要什么?它肯定会降低您的应用程序的性能。
最好使用ObervableCollection作为listview的ItemSource。
您可以找到一个Thread safe observable collection here。
另请参阅MSDN论坛中的此问题 - ListView.ItemsSource: howto update the UI whenever the source is updated?