WPF Древовидный Иерархический Шаблон данных Групповой стиль

#c# #wpf #treeview #grouping #hierarchicaldatatemplate

Вопрос:

Я изо всех сил пытался добавить групповой стиль к дочернему элементу древовидного представления внутри иерархической таблицы данных.

Вот рисунок моего древовидного изображения и то, как я хотел бы, чтобы данные были представлены. введите описание изображения здесь

У меня есть все, кроме серой границы вокруг групп внутри слоя 3. Я перепробовал несколько вещей, но ничего не вышло. Поэтому я надеюсь, что смогу найти здесь какую-то помощь.

Все слои имеют свою собственную модель представления.

  • Модель Rootviewмодель содержит наблюдаемую коллекцию объектов Layer1
  • Объект Layer1 содержит наблюдаемую коллекцию объектов Layer2
  • Объект Layer2 содержит коллекцию объектов Layer3, а также задает дескриптор группы. Элементы сгруппированы по первым 5 символам имени объектов Layer3.
  • Объект Layer3 содержит наблюдаемую коллекцию объектов Layer4

Это xaml моего древовидного представления

 <TreeView
    Name="Layer1"
    ItemsSource="{Binding Path=Layer1s, IsAsync=True}">
    <TreeView.Resources>
        <Style BasedOn="{StaticResource TreeViewItemLayer1}" TargetType="TreeViewItem">
            ...
        </Style>
    </TreeView.Resources>
    <TreeView.ItemContainerStyle>
        <Style BasedOn="{StaticResource TreeViewItemLayer1}" TargetType="{x:Type TreeViewItem}">
            ...
        </Style>
    </TreeView.ItemContainerStyle>
    <TreeView.ItemTemplate>
        <HierarchicalDataTemplate DataType="{x:Type vm:Layer1ViewModel}" ItemsSource="{Binding Path=Layer2s, IsAsync=True}">
            <Grid
                ... some xaml elements
            </Grid>
            <HierarchicalDataTemplate.ItemTemplate>
                <HierarchicalDataTemplate DataType="{x:Type vm:Layer2ViewModel}" ItemsSource="{Binding Path=Layer3CollectionView, IsAsync=True}">
                    <Grid>
                        some xaml elements
                    </Grid>
                    <HierarchicalDataTemplate.ItemTemplate>
                        <HierarchicalDataTemplate DataType="{x:Type vm:Layer2ViewModel}" ItemsSource="{Binding Path=Layer3CollectionView, IsAsync=True}">
                            <ItemsControl
                                x:Name="Layer4Items"
                                Grid.Column="1"
                                ItemsSource="{Binding Layer4s}">
                                <ItemsControl.ItemsPanel>
                                    <ItemsPanelTemplate>
                                        <WrapPanel
                                            x:Name="wrapContent"
                                            Width="350"
                                            Orientation="Horizontal" />
                                    </ItemsPanelTemplate>
                                </ItemsControl.ItemsPanel>
                                <ItemsControl.ItemTemplate>
                                    <DataTemplate DataType="{x:Type models:Layer4Model}">
                                        ... some xaml elements
                                    </DataTemplate>
                                </ItemsControl.ItemTemplate>
                            </ItemsControl>
                        </HierarchicalDataTemplate>
                    </HierarchicalDataTemplate.ItemTemplate>
                </HierarchicalDataTemplate>
            </HierarchicalDataTemplate.ItemTemplate>
        </HierarchicalDataTemplate>
    </TreeView.ItemTemplate>
</TreeView>