WPF 树视图,每个深度具有不同的集合

本文关键字:集合 深度 视图 WPF | 更新日期: 2023-09-27 18:33:30

我是WPF的新手,需要你的帮助。我遵循了许多教程,但没有任何效果。

我有两个可观察列表 L1 和 L2 要绑定,我想存档:深度 1 - 第一个列表和每个子列表 2.

  • L1.1
    • L2.1
    • L2.2
    • L2.3
  • L1.2
    • L2.1
    • L2.2
    • L2.3
  • L1.3
    • L2.1
    • L2.2
    • L2.3

更新 16.02.07 - 16:44

我的第一次尝试:

        <TreeView Grid.Column="1" HorizontalAlignment="Stretch"   VerticalAlignment="Stretch" Grid.Row="1" Margin="10" ItemsSource="{Binding orderCities}">
        <TreeView.Resources>
            <DataTemplate DataType="{x:Type model:city}">
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="{Binding name}" />
                </StackPanel>
            </DataTemplate>
            <HierarchicalDataTemplate ItemsSource="{Binding products}" DataType="{x:Type model:Product}">
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="{Binding name}" />
                </StackPanel>
            </HierarchicalDataTemplate>
        </TreeView.Resources>
    </TreeView>
我的

第二次尝试:定义两个数据模板如何处理我的类型:

<UserControl.Resources>
    <HierarchicalDataTemplate DataType="{ x:TypeExtension model:city }" ItemsSource="{Binding orderCities}">
        <StackPanel>
            <TextBlock Text="{Binding name}" />
            <!-- Here embed Product Type (Dont know how)-->
        </StackPanel>
    </HierarchicalDataTemplate>
    <HierarchicalDataTemplate DataType="{ x:TypeExtension model:Product }" ItemsSource="{Binding products}">
        <StackPanel Orientation="Horizontal">
            <TextBlock Text="{Binding name}" />
            <TextBlock Text=" - " />
            <TextBox Text="1" />
        </StackPanel>
    </HierarchicalDataTemplate>
</UserControl.Resources>

并测试两个模板并获得正确的设计。

<TreeView ItemsSource="{Binding orderCities}" />
<TreeView ItemsSource="{Binding orderCities}" />

WPF 树视图,每个深度具有不同的集合

树视图本身在这里无法帮助您。您必须实际创建要显示的数据,即树视图不会"乘以"两个列表。

当然,第一个列表中的每个元素都可以在其子属性中返回第二个列表的相同实例。你可能想看看这篇代码项目文章,它相当古老,但很好地介绍了如何使用 wpf 树视图。