1
私はクラス(ClassA)
にList of ClassBTypes
とList of ClassC
の2種類のリストを持っています。 ClassBTypes
には独自のList of ClassB
があります。私はツリービューWPF:TreeViewに異なるタイプのアイテムを複数レベルで追加
-- ClassAName
-- -- ClassBType1Name
-- -- -- ClassB1Name
-- -- -- ClassB2Name
-- -- ClassBType2Name
-- -- -- ClassB1Name
-- -- -- ClassB2Name
-- -- ClassC1Name
-- -- ClassC2Name
については、以下の構造を実現したい
私は木がClassA
とClassB
を描画するために得ることができたが、Tree resources
にClassC
を追加する方法を見つけ出すことができませんでした。
以下のソースコードを確認してください。
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コード:ClassA
OBJからClassC list
を追加する方法
<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>
、私が追加しましたコードの下に<Window.Resources>
を追加しますが、どのようにしてtreeViewリソースに追加できますか?
<HierarchicalDataTemplate x:Key="bTypeKey"
ItemsSource="{Binding Btypes}"
ItemTemplate="{StaticResource bKey}">
<TextBlock Text="{Binding Name}" />
</HierarchicalDataTemplate>
[WPF TreeView HierarchicalDataTemplate - 複数の子コレクションを持つオブジェクトへのバインディング]の可能な複製(http://stackoverflow.com/questions/1912481/wpf-treeview-hierarchicaldatatemplate-binding-to-object-with-multiple-child- co) – ASh
@ASh私は2つの異なるタイプの子どもたちとツリーを構築する必要があるので – IBRA