Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 更优雅的ListView重新查询_Wpf_Listview_Refresh - Fatal编程技术网

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");
}