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