代码之家  ›  专栏  ›  技术社区  ›  Mark Carpenter

如何将数据集直接绑定到TreeView(具有层次结构)?

  •  0
  • Mark Carpenter  · 技术社区  · 16 年前

    <HierarchicalDataTemplate x:Key="FirstLevelTemplate" ItemTemplate="{StaticResource SecondLevelTemplate}"/>
    <HierarchicalDataTemplate x:Key="SecondLevelTemplate" ItemTemplate="{StaticResource ThirdLevelTemplate}"/>
    <HierarchicalDataTemplate x:Key="ThirdLevelTemplate" ItemTemplate="{StaticResource FourthLevelTemplate}"/>
    <DataTemplate x:Key="FourthLevelTemplate"/>
    

    需要设置什么属性来直接显示数据集中的数据?

    3 回复  |  直到 15 年前
        1
  •  1
  •   RBear    16 年前

    这个网站有一些很好的使用treeview的例子。

    BeaStollnitz

        2
  •  1
  •   Denis Troller    16 年前

    我认为你做不到。

    Treeview控件和HierarchycalDataTemplate需要对象的层次结构。数据集本质上是扁平的。

    可能有一种使用转换器的解决方案,但如果它存在的话,它可能会比在绑定之前直接重塑数据更复杂。

        3
  •  0
  •   Josh G    16 年前

    首先,将TreeView的ItemsSource设置为DataSet。

    接下来,将TreeView的ItemTemplate设置为FirstLevelTemplate。

    ItemTemplate="{StaticResource FirstLevelTemplate}"
    

    <HierarchicalDataTemplate x:Key="FirstLevelTemplate" ItemsSource="{Binding ChildItems}" ItemTemplate="{StaticResource SecondLevelTemplate}"/>
    

    更改“ChildItems”以引用数据集中包含子项的属性。对每个HierarchycalDataTemplate重复此操作。

    <DataTemplate x:Key="FourthLevelTemplate"/>
       <Border BorderThickness="1" BorderBrush="Gray" CornerRadius="3">
          <TextBlock Text="{Binding DataProperty}"
                     HorizontalAlignment="Center" VerticalAlignment="Center"/>
       </Border>
    </DataTemplate>
    

    在本例中,您将用数据字段的属性名称替换“DataProperty”。请注意,您可以添加其他控件(如TextBox、ComboBox等)来显示其他数据。