1
假设我有一个Node类过滤在HierarchicalDataTemplate
public class Node
{
public string Name;
public ObservableCollection<Node> SubNodes;
}
,并创建下面的XAML可视化Node对象的集合:
<TreeView Name="Tree">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate DataType="myNamespace:Node"
ItemsSource="{Binding Path=SubNodes}">
<TextBlock Text="{Binding Path=Name}" />
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
在我喜欢写东西
Tree.ItemsSource = my_Observable_Collection_Of_Nodes;
代码隐藏
并享受结果。
现在我想将自己的过滤函数(比如说“MyFilterFun”)应用到树视图中的所有节点。为此我修改HierarchicalDataTemplate喜欢的东西
<HierarchicalDataTemplate DataType="myNamespace:MyClass">
<HierarchicalDataTemplate.ItemsSource>
<Binding>
<Binding.Source>
<CollectionViewSource Source="{Binding Path=SubNodes}"
Filter="MyFilterFun"/>
</BindingSource>
</Binding>
<HierarchicalDataTemplate.ItemsSource>
<TextBlock Text="{Binding Path=Name}" />
</HierarchicalDataTemplate>
不幸的是,这并不工作,“MyFilterFun”永远不会被调用。 那么正确的做法是什么?
在基础源类中具有“CollectionViewSource”或“ICollectionView”类型的属性并与该属性绑定。 – 2014-09-05 13:31:36