1

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

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

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

4

2 回答 2

2

我找到了答案:

ICollectionView view = CollectionViewSource.GetDefaultView(MyListView.ItemsSource);
view.Refresh();
于 2013-01-31T09:03:59.310 回答
0

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

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

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

于 2013-01-30T22:30:01.050 回答