Treeview против вложенных экспандеров - PullRequest
1 голос
/ 28 сентября 2011

Редактировать 2:

Это то, что я хочу сделать только с одним древовидным изображением:

мое древовидное представление со стилем внешнего вида http://img204.imageshack.us/img204/8218/sansreju.jpg

Редактировать:

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

Оригинальный вопрос:

Я пытаюсь получить WPF Treeview, который имеет разные стили расширителей в плане уровня.

На самом деле у меня есть следующее:

просмотр списка, который содержит различные шаблоны в терминах типа ojbect с помощью селектора

<ListView Name="MyTreeView" ItemTemplateSelector="{StaticResource Selector}">

<!-- Items Template -->
<HierarchicalDataTemplate x:Key="ItemsTemplate" ItemsSource="{Binding Childrens}">
    <TextBlock Text="{Binding Name}" Margin="5,0" VerticalAlignment="Center"/>
</HierarchicalDataTemplate>

<!-- SubNode Template -->
<DataTemplate x:Key="SubNodeTemplate">
    <Expander Style="{StaticResource SubExpander}">
        <TreeView ItemsSource="{Binding Childrens}"
                  ItemTemplateSelector="{StaticResource Selector}"/>
    </Expander>
</DataTemplate>

<!-- Node Template -->
<DataTemplate x:Key="NodeTemplate">
    <Expander Style="{StaticResource MainViewExpander}">
        <ListView ItemsSource="{Binding Childrens}"
                  ItemTemplateSelector="{StaticResource Selector}"/>
    </Expander>
</DataTemplate>

И это код, который используется для объекта, используемого дляОтображение: я получил список (из IUpSlideItem) и применил его к MyTreeview.ItemsSource

Public Interface IUpSlideItem
    Property Childrens As List(Of IUpSlideItem)
    Property Name As String
End Interface

Public Class Item
    Implements IUpSlideItem

    Public Property Childrens As System.Collections.Generic.List(Of IUpSlideItem) Implements IUpSlideItem.Childrens
    Public Property Name As String Implements IUpSlideItem.Name

End Class

Public Class Node
    Implements IUpSlideItem

    Public Property Childrens As System.Collections.Generic.List(Of IUpSlideItem) Implements IUpSlideItem.Childrens
    Public Property Name As String Implements IUpSlideItem.Name

End Class

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

1 Ответ

1 голос
/ 29 сентября 2011

с помощью селектора стиля контейнера элементов вы можете получить 1 древовидную структуру с другим стилем расширителя: http://msdn.microsoft.com/fr-fr/library/system.windows.hierarchicaldatatemplate.itemcontainerstyleselector%28v=vs.90%29.aspx

редактировать: это решение работает, у меня есть идеальный TreeView сейчас

...