将WPF TreeView绑定到Object

时间:2010-09-06 13:04:54

标签: c# wpf xaml

如何将TreeView绑定到分组集合ListCollectionView?

代码cs:

ListCollectionView view=new ListCollectionView(Global._subjectCollection);
view.GroupDescriptions.Add(new PropertyGroupDescription("Fund"));
view.GroupDescriptions.Add(new PropertyGroupDescription("Cipher"));
treeView1.ItemsSource = view.Groups;

代码XAML:

<TreeView>???</TreeView>

1 个答案:

答案 0 :(得分:1)

查看Bea Stollnitz的博客文章"How do I display grouped data in a TreeView?"

使用HierarchicalDataTemplate显示CollectionViewGroup。 Name属性将具有您按其分组的属性的值,因此Fund或Cipher的值以及Items属性将具有外部分组的嵌套组和最内部分组的实际对象。它看起来像这样:

<Window.Resources>
    <!-- Template for actual object -->
    <DataTemplate x:Key="ThirdTemplate">
        <TextBlock Text="{Binding OtherData}"/>
    </DataTemplate>
    <!-- Template for Cipher groups -->
    <HierarchicalDataTemplate x:Key="SecondTemplate"
                              ItemsSource="{Binding Items}"
                              ItemTemplate="{StaticResource ThirdTemplate}">
        <TextBlock Text="{Binding Name}"/>
    </HierarchicalDataTemplate>
    <!-- Template for Fund groups -->
    <HierarchicalDataTemplate x:Key="FirstTemplate"
                              ItemsSource="{Binding Items}"
                              ItemTemplate="{StaticResource SecondTemplate}">
        <TextBlock Text="{Binding Name}"/>
    </HierarchicalDataTemplate>
</Window.Resources>
<TreeView Name="treeView1" ItemTemplate="{StaticResource FirstTemplate}"/>