2
我有一個綁定到集合的樹形視圖,集合中的每個項目都綁定到另一個集合。 (使用hierachle數據模板)WPF - 在樹形視圖中篩選/搜索多個集合視圖
我想使用集合視圖.Filter事件處理程序來搜索樹。 問題是我需要多個收集視圖。
例如通過搜索詞過濾樹視圖項目的最佳方法是什麼?我可以用一個集合的單個綁定來做到這一點,但一旦集合中有集合,我就遇到了麻煩。
我有一個綁定到集合的樹形視圖,集合中的每個項目都綁定到另一個集合。 (使用hierachle數據模板)WPF - 在樹形視圖中篩選/搜索多個集合視圖
我想使用集合視圖.Filter事件處理程序來搜索樹。 問題是我需要多個收集視圖。
例如通過搜索詞過濾樹視圖項目的最佳方法是什麼?我可以用一個集合的單個綁定來做到這一點,但一旦集合中有集合,我就遇到了麻煩。
我發現這樣做最簡單的方法是創建一個SearchFilter物業
public string SearchFilter
{
get { return _searchFilter; }
set
{
_searchFilter = value;
OnPropertyChanged("MyTreeViewBoundCollection");
}
}
您的搜索過濾器綁定到一個文本框,每次搜索文本框中改變了你通知集已經改變
<TextBox Text="{Binding Path=TemplateDataSchema.SearchFilter, UpdateSourceTrigger=PropertyChanged}"/>
一旦變化已經在發生SearchFilter,WPF的綁定系統將重新查詢集合屬性,那麼它可以被過濾下來
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;
}
}
}
這將只返回過濾器集合。