[英]How can I filter List property
在我的视图上,我有一个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上键入test并按Enter键时,最简单的方法是在哪里过滤项目(item.description == searchterm)? 只需对其进行过滤并更新itemsource,而不重写属性
您可以使用<SearchBox>
及其QuerySubmitted
事件。 但是它也可以很好地与<TextBox>
。 如果您需要重新过滤 Items
-只需创建两个列表,一个列表用于存储Items
,另一个列表用于显示商品。
这是一个<SearchBox>
示例:
private List<MyClass> _items; // store for your items
private List<MyClass> _displayItems;
public List<MyClass> 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<MyClass> items = _items.AsQueryable();
if (!string.IsNullOrEmpty(searchTerm))
{
searchTerm = searchTerm.ToLower();
items = items.Where(x => x.productModel.Description.ToLower().Contains(searchTerm));
}
DisplayItems = items.ToList();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.