刷新WPF ListView中的转换绑定

时间:2013-01-30 22:11:36

标签: c# wpf binding

我有一个带有GridView(多列)布局的ListView。某些列具有使用当前区域设置来美化数字,将unix时间戳转换为日期时间字符串,或者只是将枚举转换为其本地化描述的转换器。

可以在运行时更改语言环境,因此我需要一种方法来重新运行这些转换器。请注意,绑定的值本身没有改变,但转换器的输出可能因不同的语言环境而不同。

最好的方法是什么?我不想迭代每个受影响列表的整个集合并调用OnPropertyChanged。有没有办法强制ListView刷新每个绑定,或只是某些列的绑定?

2 个答案:

答案 0 :(得分:1)

我找到了答案:

ICollectionView view = CollectionViewSource.GetDefaultView(MyListView.ItemsSource);
view.Refresh();

答案 1 :(得分:0)

您可以强制ListView使用以下内容更新ItemsSource绑定:

lview.GetBindingExpression(ListView.ItemsSourceProperty).UpdateTarget();

使用相同的语法,您当然可以获得更具体的信息,并且只对特定列的绑定强制更新,但根据ListView中的行数,您可能看不到性能差异。