gpt4 book ai didi

WPF - 在 TreeView 中过滤/搜索多个 Collection View

转载 作者:行者123 更新时间:2023-12-04 07:03:05 25 4
gpt4 key购买 nike

我有一个绑定(bind)到集合的 TreeView ,并且集合中的每个项目都绑定(bind)到另一个集合。 (使用层次结构数据模板)

我想使用 Collection View .Filter 事件处理程序来搜索树。
问题是我需要多个 Collection View 。

例如通过搜索词过滤 TreeView 项目的最佳方法是什么?我可以通过集合的单个绑定(bind)来做到这一点,但是一旦集合中有集合,我就会遇到麻烦。

最佳答案

我发现最简单的方法是创建一个 SearchFilter 属性

     public string SearchFilter
{
get { return _searchFilter; }
set
{
_searchFilter = value;
OnPropertyChanged("MyTreeViewBoundCollection");
}
}

您将搜索过滤器绑定(bind)到文本框,每次搜索文本框更改时,您都会通知集合已更改
            <TextBox Text="{Binding Path=TemplateDataSchema.SearchFilter, UpdateSourceTrigger=PropertyChanged}"/>

一旦 SearchFilter 发生更改,WPF 绑定(bind)系统将重新查询 Collection 属性,然后可以将其过滤掉
 public ObservableCollection<Category> MyTreeViewBoundCollection
{
get {
if (_searchFilter.Trim().Length < 1)
return myObject.Categories;
else
{
ObservableCollection<Category> cats = new ObservableCollection<Category>();
string searchText = _searchFilter.ToLower().Trim();
foreach (Category cat in myObject.Categories)
{
Category tmpCat = new Category(cat.CategoryName);
foreach (Field field in cat.Fields)
{
if (field.DataDisplayName.ToLower().Contains(searchText))
tmpCat.Fields.Add(field);
}
if (tmpCat.Fields.Count > 0)
cats.Add(tmpCat);
}

return cats;
}
}
}

这只会返回过滤器集合。

关于WPF - 在 TreeView 中过滤/搜索多个 Collection View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1526662/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com