I have a multi-level TreeView that implements data binding, just like:
<TreeView
IsTextSearchEnabled="True"
IsTextSearchCaseSensitive="False"
TextSearch.TextPath="Config.Name"
ItemsSource="{Binding Connections, Mode=OneWay}">
<TreeView.ItemContainerStyle>
... for style
</TreeView.ItemContainerStyle>
<TreeView.ItemTemplate>
<HierarchicalDataTemplate
ItemsSource="{Binding Children}"
DataType="{x:Type models:TreeNode_Connection}">
... for level-1 node, label binding Config.Name
<HierarchicalDataTemplate.ItemTemplate>
<HierarchicalDataTemplate
ItemsSource="{Binding Children}"
DataType="{x:Type models:TreeNode_Database}">
... for level-2 node, label binding Name
<HierarchicalDataTemplate.ItemTemplate>
<HierarchicalDataTemplate
ItemsSource="{Binding Children}"
DataType="{x:Type models:TreeNode_Module}">
... for level-3 node, label binding Name
</HierarchicalDataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
I hope that each layer can implement the function of TextSearch, but currently only the first layer has achieved it. I have tried various methods, such as:
- Add TextSearch.TextPath to the HierarchicalDataTemplate for every-level.
- Add TextSearch.TextPath to the ItemContainerStyle for every-level.
- Unifying the variable names of each level as Name.
But all these attempts were ineffective, how should I implement this feature?