2

有没有办法过滤/排序可观察的集合并仍然保留通知?

我环顾四周,发现 CollectionViewSource 可以根据需要对集合进行过滤和排序,但是当过滤器依赖的项目属性在源集合中发生更改时,它不会刷新过滤器。

基本上,我需要原始集合的视图,当视图中的项目属性更改时,它会更新源,而当源更改时,它会更新视图。在 silverlight 3 中是否有任何类提供此功能?

4

2 回答 2

0

我建议使用Bindable.Linq库,它有一段时间没有更新,并且 Union 运算符存在错误。但是对于 linq 风格的过滤器,它的效果很好。

这是一个简单的示例,假设这是在一个名为 people 的列表框的 silverlight 用户控件的代码隐藏中:

using Bindable.Linq;
...

ObservableCollection<Person> data = new ObserableCollection<Person>{.... fill in};
people.ItemsSource = data.AsBindable(Dispatcher).Where(p => p.FirstName.Equals("steve"));
data.add(new Person("steve"));

如果你这样做,史蒂夫应该出现在名单上。我发现这个库非常有用,如果您从 codeplex 下载示例项目,它会显示更高级的示例。

希望这可以帮助。

还有其他几个类似的项目

于 2009-12-18T22:48:06.570 回答
0

使用 TwoWay 绑定的 ObservableCollection 不起作用吗?您能否用一些代码详细说明您的示例以更详细地显示问题?

于 2009-12-17T12:45:10.790 回答