wpf中可观察集合树视图上的搜索框
我有一个文本框和一个可观察集合的树状视图。我需要根据文本框的文本值过滤树视图中的可观察集合。 所有以匹配文本开头的列表都应显示什么是“可观察集合的树状视图”?它真的是一个可观察集合的树状视图吗 对用户来说,过滤它可能变得相当棘手。当父节点被过滤掉时会发生什么?它的孩子们是否也应该被过滤掉,即使他们觉得满意wpf中可观察集合树视图上的搜索框,wpf,treeview,observablecollection,Wpf,Treeview,Observablecollection,我有一个文本框和一个可观察集合的树状视图。我需要根据文本框的文本值过滤树视图中的可观察集合。 所有以匹配文本开头的列表都应显示什么是“可观察集合的树状视图”?它真的是一个可观察集合的树状视图吗 对用户来说,过滤它可能变得相当棘手。当父节点被过滤掉时会发生什么?它的孩子们是否也应该被过滤掉,即使他们觉得满意 无论如何,请将视图模型特性绑定到文本框。在setter中执行过滤逻辑。将树视图绑定到单独的列表,该列表将只包含令人满意的记录。另一个选项是使用CollectionView。在文本框上按下键时调
无论如何,请将视图模型特性绑定到文本框。在setter中执行过滤逻辑。将树视图绑定到单独的列表,该列表将只包含令人满意的记录。另一个选项是使用CollectionView。在文本框上按下键时调用MVVM中的函数
public void SearchChild()
{
if (!string.IsNullOrEmpty(SearchFilter))
{
var ChildList = new ObservableCollection<TestArtifact>();
foreach (var n in FolderItems)
{
if (n.Name.ToLower().StartsWith(SearchFilter.Trim().ToLower()))
{
ChildList.Add(n);
continue;
}
var a = (n.Children).Where((x) => x.Name.ToLower().StartsWith(SearchFilter.Trim().ToLower())).ToList();
if (a.Count > 0)
{
n.Children = null;
n.Children = a;
ChildList.Add(n);
}
}
SearchFolderItems = new ObservableCollection<TestArtifact>(ChildList);
NotifyOfPropertyChange(() => SearchFolderItems);
return;
}
SearchFolderItems = FolderItems;
NotifyOfPropertyChange(() => SearchFolderItems);
}
public void SearchChild()
{
如果(!string.IsNullOrEmpty(SearchFilter))
{
var ChildList=新的ObservableCollection();
foreach(FolderItems中的变量n)
{
if(n.Name.ToLower().StartsWith(SearchFilter.Trim().ToLower()))
{
添加(n);
继续;
}
var a=(n.Children).Where((x)=>x.Name.ToLower().StartsWith(SearchFilter.Trim().ToLower()).ToList();
如果(a.计数>0)
{
n、 Children=null;
n、 儿童=a;
添加(n);
}
}
SearchFolderItems=新的ObservableCollection(子列表);
NotifyOfPropertyChange(()=>SearchFolderItems);
返回;
}
SearchFolderItems=FolderItems;
NotifyOfPropertyChange(()=>SearchFolderItems);
}
Xaml代码
<TextBox x:Name="SearchScript" Text="{Binding SearchFilter,UpdateSourceTrigger=PropertyChanged}" ToolTip="{Binding Path=Text}"
Grid.Column="0" Grid.Row="0" Margin="10" cal:Message.Attach="[Event KeyUp] = [Action SearchChild]" />
<TreeView x:Name="FolderView" ItemsSource="{Binding SearchFolderItems, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Grid.Column="0" Grid.Row="1" Margin="{Binding ElementName=Editor,Path=Margin}">
是,这是一个可观察集合的树状视图。我必须只筛选父节点,不包括子节点。您的意思是像Visual Studio(比如2012)版本的解决方案资源管理器中的搜索框一样吗?是的,完全相同。我对父记录进行了筛选。我无法为孩子们实现它。好吧,那么你需要重新检查你的搜索逻辑;从根可观察集合遍历到每个节点。