我的课程(ClassA)
包含两种不同类型的列表List of ClassBTypes
和List of ClassC
。 ClassBTypes
有自己的List of ClassB
。
我想为TreeView实现以下结构
-- ClassAName
-- -- ClassBType1Name
-- -- -- ClassB1Name
-- -- -- ClassB2Name
-- -- ClassBType2Name
-- -- -- ClassB1Name
-- -- -- ClassB2Name
-- -- ClassC1Name
-- -- ClassC2Name
我设法让树绘制ClassA
和ClassB
,但无法弄清楚如何将ClassC
添加到Tree resources
。
请检查以下源代码。
Test.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
obj添加ClassA
,我已将以下代码添加到<Window.Resources>
但是如何将其添加到treeView资源。
<HierarchicalDataTemplate x:Key="bTypeKey"
ItemsSource="{Binding Btypes}"
ItemTemplate="{StaticResource bKey}">
<TextBlock Text="{Binding Name}" />
</HierarchicalDataTemplate>