如何在WPF中过滤ListView?

4

我有一个绑定到项目集合的ListView。 我不想显示属性IsDeleted =“1”的项目。 我该如何实现这一点?

1个回答

17

我会使用一个CollectionView,并将Filter属性设置为表达式:

var view = CollectionViewSource.GetDefault(GetData());
view.Filter = i => ((MyType)i).IsDeleted != 1;
MyListView.DataSource = view;

+1,但是你需要强制转换参数,因为“Filter”是“Predicate<object>”类型。 - Thomas Levesque
如果我想要遵循MVVM设计模式,正确的范例是什么?我认为视图是视图层的事情,而谓词(i=>IsDeleted)则是视图模型层的事情。你会如何解决它? - Uri London
@Uri - ICollectionView是一个视图模型构造,在我使用MVVM的所有经验中都有它的身影。 - codekaizen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接