如何将wpf treeview与不同类型的嵌套对象一起使用

use*_*164 3 c# wpf treeview

我有两个课,我想在树视图中显示.

在我的主窗口中,我有一个可观察的某种类型对象的集合,称之为对象a.对象a包含另一种对象的可观察集合,对象b.每个对象b包含一个可观察的对象b集合.

例如,我可能有一些看起来像这样的东西

ListOfObjectA的

-ObjectA1

--ListOfObjectB的

---对象B

---- ListOfObjectB的

-----对象B

-ObjectA2

--ListOfObjectB的

---对象B

我的xaml应该将树视图绑定到类似的东西?

对不起,如果我没有解释好这个,我是wpf的新手.

And*_*ndy 6

RB有正确的想法.这就是WPF将模板应用于普通.NET对象的能力变得非常强大的地方.

您需要指定两个HierarchicalDataTemplates,一个用于类型的对象,另一个用于类型a的对象b.像这样的东西:

<TreeView>
    <TreeView.Resources>
        <HierarchicalDataTemplate TargetType="{x:Type local:a}">
            <!-- XAML to display objects of type a -->
        </HierarchialDataTemplate>
        <HierarchicalDataTemplate TargetType="{x:Type local:b}">
            <!-- XAML to display objects of type b -->
        </HierarchicalDataTemplate>
    </TreeView.Resources>
</TreeView>
Run Code Online (Sandbox Code Playgroud)

您需要为ItemsSource每个模板的属性指定绑定,以便WPF知道从哪里获取子对象.此外,您需要向xmlns根节点添加一个声明,指定对象所在的命名空间(local在上面的示例代码中表示).