如何过滤List属性
在我的View上我有一个AutoSuggestBox(searchfield)和ListView,我的ListView的ItemSource被绑定到我的VM Class属性:
private Class1 _searchMatches; public Class1 SearchMatches { get { return _searchMatches; } set { this.Set(ref _searchMatches, value); } }
在我的Class1上我有一个LoadItems任务:
异步任务> LoadItems()
var stocks = _response.products? .Select(s => new MyClass(PLService.DtoToModel(s))) .ToList(); var items = stocks.GroupBy(p => p.productModel.Description) .Select(p => p.First()) .ToList(); return items;
当我在AutoSuggestBox上输入测试并点击回车时,过滤项目的最简单方法是什么(item.description == searchterm)? 只是过滤它并更新itemsource,而不是重写属性
您可以使用
并使用QuerySubmitted
事件。 但它也适用于
。 如果您需要重新过滤您的Items
– 只需创建两个列表,一个用于存储您的Items
,另一个用于显示物品。
这是一个
示例:
private List _items; // store for your items private List _displayItems; public List DisplayItems // list to show { get { return _displayItems; } set { SetProperty(ref _displayItems, value); } } private void SearchBoxQuerySubmitted(SearchBoxQuerySubmittedEventArgs eventArgs) { searchTerm = eventArgs.QueryText?.Trim(); Filter(searchTerm); } private void Filter(string searchTerm) { if (_items == null) return; IQueryable items = _items.AsQueryable(); if (!string.IsNullOrEmpty(searchTerm)) { searchTerm = searchTerm.ToLower(); items = items.Where(x => x.productModel.Description.ToLower().Contains(searchTerm)); } DisplayItems = items.ToList(); }