gpt4 book ai didi

c# - WPF:将具有不同类型项目的多个级别添加到 TreeView

转载 作者:行者123 更新时间:2023-12-04 17:58:56 24 4
gpt4 key购买 nike

我有一个类(ClassA)包含两种不同类型的列表,List of ClassBTypesList of ClassC . ClassBTypes有自己的List of ClassB .

我想为 TreeView 实现以下结构

-- ClassAName   
-- -- ClassBType1Name
-- -- -- ClassB1Name
-- -- -- ClassB2Name
-- -- ClassBType2Name
-- -- -- ClassB1Name
-- -- -- ClassB2Name
-- -- ClassC1Name
-- -- ClassC2Name

我设法让树绘制了 ClassAClassB , 但不知道如何添加 ClassCTree resources .
请检查以下源代码。

测试.xaml.cs

public partial class Test : Window {    
InitializeComponent();
var a = new List<ClassA>{new ClassA(), new ClassA()};
treeView.ItemsSource = a;
}

C# 类:

public class ClassA{    
// initiate obj
public string Name {get; set;}
public List<ClassBTypes> Btypes {get; set;}
public List<ClassC> C {get; set;}
}
public class ClassBTypes{
public string Name {get; set;}
public List<ClassB> B {get; set;}
}
public class ClassB{
public string Name {get; set;}
}
public class ClassC{
public string Name {get; set;}
}

xaml 代码:

<Window.Resources>
<DataTemplate x:Key="aKey">
<TextBlock Text="{Binding Name}"></TextBlock>
</DataTemplate>
<HierarchicalDataTemplate x:Key="bKey"
ItemsSource="{Binding B}"
ItemTemplate="{StaticResource aKey}">
<TextBlock Text="{Binding Name}" />
</HierarchicalDataTemplate>
<HierarchicalDataTemplate x:Key="bTypeKey"
ItemsSource="{Binding Btypes}"
ItemTemplate="{StaticResource bKey}">
<TextBlock Text="{Binding Name}" />
</HierarchicalDataTemplate>
</Window.Resources>
.....
<Grid>
<TreeView Name="treeView" ItemTemplate="{StaticResource bTypeKey}" />
</Grid>

如何添加 ClassC list来自 ClassA obj,我已将以下代码添加到 <Window.Resources>但是如何将它添加到 treeView 资源中。

<HierarchicalDataTemplate x:Key="bTypeKey"
ItemsSource="{Binding Btypes}"
ItemTemplate="{StaticResource bKey}">
<TextBlock Text="{Binding Name}" />
</HierarchicalDataTemplate>

最佳答案

我通过将两种类型的列表组合到 CompositeCollection 来解决这个问题.
检查这个answer了解更多详情。

关于c# - WPF:将具有不同类型项目的多个级别添加到 TreeView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37816258/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com