如何创建TreeView模板以使用HierarchicalDataTemplate对项目进行分组?

时间:2013-07-09 14:17:01

标签: c# wpf xaml hierarchicaldatatemplate

所以,我知道如何创建一个TreeView,然后添加TreeViewItems并绑定它们的ItemsSource,它可以很容易地显示我拥有的所有OBJ,但我遇到的问题是人们想要制作这些项目的组。我如何创建一个DataTemplate,让我可以像我的Data Warehouse一样,但显示为用户选择项的集合?

<TreeView.Items>
    <TreeViewItem Header="Data Warehouse">
        <TreeViewItem.Items>
            <TreeViewItem Header="Platforms">
                <TreeViewItem.Items>
                    <TreeViewItem ItemsSource="{Binding OBJS, Converter={StaticResource COBJSourceConverter}, ConverterParameter=Fixed}">
                        <TreeViewItem.Header>
                            <TextBlock Text="{Binding RelativeSource={RelativeSource Self},
                                Path=Parent.Items.Count,
                                StringFormat=Fixed Devices ({0})}">
                            </TextBlock>
                        </TreeViewItem.Header>
                    </TreeViewItem>
                    <TreeViewItem ItemsSource="{Binding OBJS, Converter={StaticResource COBJSourceConverter}, ConverterParameter=Mobile}">
                        <TreeViewItem.Header>
                            <TextBlock Text="{Binding RelativeSource={RelativeSource Self},
                                Path=Parent.Items.Count,
                                StringFormat=Mobile Devices ({0})}">
                            </TextBlock>
                        </TreeViewItem.Header>
                    </TreeViewItem>
        </TreeViewItem.Items>
    </TreeViewItem>
    <TreeViewItem ItemsSource="{Binding OBJS, Converter={StaticResource CollectionSourceConverter}, ConverterParameter=Public}" Header="Public" />
    <TreeViewItem ItemsSource="{Binding OBJS, Converter={StaticResource CollectionSourceConverter}, ConverterParameter=Shared}" Header="Shared" />
    <TreeViewItem ItemsSource="{Binding OBJS, Converter={StaticResource CollectionSourceConverter}, ConverterParameter=Private}" Header="Private" />
</TreeView.Items>

所以,我有以下几点:

<HierarchicalDataTemplate DataType="{x:Type EntityType:COLLECTIONS}">
    <TextBlock Text="{Binding COLLECTIONNAME}" />
</HierarchicalDataTemplate>

但是,如果我将ItemTemplate设置为TreeViewItem,那么这就是我被卡住的地方,那么将为所有 x 项目设置TreeViewItem s ItemsSource而不是拥有一组TreeViewItem,然后将各个项目放入正确的TreeViewItem

TreeView结果示例:

  • 数据仓库&lt; - 这将包含整个广告资源
    • 平台
      • 固定设备(X)
        • 固定设备A
        • 固定设备B
      • 移动设备(X)
        • 移动设备A
        • 移动设备B
  • Public&lt; - 此目录是public holding创建的用户选择设备集合
    • MyCollectionA&lt; - 保留“A”设备(集合A中的所有设备都在单个列表中
      • 固定设备(1)
        • 固定设备A
      • 移动设备(1)
        • 移动设备A
    • MyCollectionB
      • 固定设备(1)
        • 固定设备B
      • 移动设备(1)
        • 移动设备B

如您所见,我想为不同类型设置固定位置,然后将各个项目放在正确的位置。

0 个答案:

没有答案