一个更优雅的ListView重新查询

时间:2009-09-10 17:09:45

标签: wpf listview refresh

每次触发另一个控件的ListView事件时,我都需要刷新IsChanged。我搜索了如何做到这一点,我看到一个stackoverflow链接导致我here

其中一个答案有效:

listView.ItemsSource = listView.ItemsSource    

这真的是刷新ListView的唯一方法吗?感觉有点不对劲。

2 个答案:

答案 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?