Использование HierarcicalDataTemplates в сочетании с шаблонами элементов управления TreeViewItem

Добрый день,

Мне трудно понять, как создать шаблон для следующий макет элемента TreeView: TreeView Item Layout Mockup

У меня есть несколько элементов, SearchList, который содержит коллекцию Search, которая содержит коллекцию DataSet (вроде как, но это не относится к делу). У меня возникают трудности с оформлением каждого уровня узла так, как я хочу.Я использую MVVM, а для свойства TreeViews ItemsSource установлено значение ObservableCollection из SearchListViewModels, которое, в свою очередь, содержит мои объекты на всем протяжении дерева объектов.

Я могу успешно стилизовать SearchList HierarchicalDataTemplate, чтобы отображать их правильно. Я зацикливаюсь на стилях узлов SearchTerm. Я хочу, чтобы наборы данных были представлены в виде панели обтекания или однородной сетки (я еще не решил) справа от области содержимого SearchTerm. Я изменил шаблон элемента управления TreeViewItem, чтобы он вел себя именно так, как я думаю), однако, если я установил его в свойстве ItemContainerStyle в Search HierarchicalDataTemplate, он ничего не сделает. Все, что отображается, - это контент для поиска.

Мой измененный шаблон TreeViewItem

<Style TargetType="{x:Type TreeViewItem}" x:Key="AlteredTreeViewItem">
    <Setter Property="HorizontalContentAlignment"
        Value="Stretch" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type TreeViewItem}">
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="Auto"
                            MinWidth="19" />
                        <ColumnDefinition Width="0.414*" />
                        <ColumnDefinition Width="0.586*"/>
                    </Grid.ColumnDefinitions>
                    <Border x:Name="Bd" HorizontalAlignment="Stretch"
                        Grid.Column="1" Grid.ColumnSpan="1" Background="#7F058956">
                        <ContentPresenter x:Name="PART_Header" Margin="10,0" />
                    </Border>
                    <WrapPanel x:Name="ItemsHost"
                        Grid.Column="2" IsItemsHost="True"/>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

Мой шаблон иерархических данных поиска

    <HierarchicalDataTemplate DataType="{x:Type local:SearchViewModel}"  ItemsSource="{Binding MySearch.Custodians}" ItemContainerStyle="{StaticResource AlteredTreeViewItem}">
        <TextBlock Text="{Binding MySearch.SearchName}" Foreground="Black" FontFamily="Arial" FontSize="16"/>
    </HierarchicalDataTemplate>

Наверняка у других были элементы, стилизованные по-разному, И дочерние элементы располагались по-разному. Есть ли у кого-нибудь такой опыт, кто мог бы мне помочь?

6
задан CodeWarrior 3 November 2011 в 00:58
поделиться