Treeview vs嵌套扩展器

时间:2011-09-28 10:04:22

标签: wpf xaml mvvm treeview expander

编辑2:

这就是我想要只用1个树视图做的事情:

my treeview with outlook style http://img204.imageshack.us/img204/8218/sansreju.jpg

修改:

我想知道如何根据级别制作具有不同扩展器样式的树视图。我目前使用嵌套扩展器。

原始问题:

我正在尝试获得一个WPF Treeview,它在级别方面具有不同的扩展器样式。

我实际拥有的是:

listview,它包含使用选择器

的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 个答案:

答案 0 :(得分:1)

通过使用项容器样式选择器,您可以拥有1个具有不同扩展器样式的树视图: http://msdn.microsoft.com/fr-fr/library/system.windows.hierarchicaldatatemplate.itemcontainerstyleselector%28v=vs.90%29.aspx

编辑:这个解决方案正常,我现在有一个完美的TreeView