Wpf 更优雅的ListView重新查询
每次触发另一个控件的Wpf 更优雅的ListView重新查询,wpf,listview,refresh,Wpf,Listview,Refresh,每次触发另一个控件的IsChanged事件时,我都需要刷新我的ListView。我在谷歌上搜索了如何做到这一点,我看到了一个stackoverflow链接,它引导了我 其中一个答案奏效了: listView.ItemsSource = listView.ItemsSource 这真的是刷新我的列表视图的唯一方法吗?感觉有点不对劲。就让它失效吧 listView.InvalidateProperty(ListView.ItemsSourceProperty) 应该这样做 顺便说一句,我
IsChanged
事件时,我都需要刷新我的ListView
。我在谷歌上搜索了如何做到这一点,我看到了一个stackoverflow链接,它引导了我
其中一个答案奏效了:
listView.ItemsSource = listView.ItemsSource
这真的是刷新我的列表视图的唯一方法吗?感觉有点不对劲。就让它失效吧
listView.InvalidateProperty(ListView.ItemsSourceProperty)
应该这样做
顺便说一句,我真的建议看看MVVM。它往往更强大。在这种情况下,对于MVVM应用程序,我只需执行以下操作:
Xaml:
下面是我绑定到的ViewModel:
public ObservableCollection<MyItem> MyItems
{
get; set;
}
public void IsChangedHandler(...)
{
...
this.OnPropertyChanged("MyItems");
}
公共可观测集合MyItems
{
获得;设置;
}
公共无效IsChangedHandler(…)
{
...
此项。OnPropertyChanged(“MyItems”);
}
每次刷新listview需要什么。它肯定会降低应用程序的性能
最好使用ObervableCollection作为listview的ItemSource
您可以找到线程安全的可观察集合
在MSDN论坛上也可以看到这个问题-哎哟,真是太糟糕了。这句话应该是个笑话。如果不是,可能会有人认为它是,并删除它。危险的
public ObservableCollection<MyItem> MyItems
{
get; set;
}
public void IsChangedHandler(...)
{
...
this.OnPropertyChanged("MyItems");
}