WPF질문 입니다.
대략 다음과 같은 XML구조를 Deserialize 했습니다.
Group노드가 중첩된 XML 형태 입니다.
<?xml version="1.0" encoding="UTF-8"?>
<root>
<group name="Group1">
<process name="Process1">
<item name="item1"/>
<item name="item2"/>
<item name="item3"/>
</process>
<process name="Process2">
<item name="item1"/>
<item name="item2"/>
<item name="item3"/>
</process>
</group>
<group name="Group2">
<process name="Process2">
<item name="item1"/>
<item name="item2"/>
</process>
<!--group 안에 group 중첩-->
<group name="Group2_1">
<process name="Process2">
<item name="item1"/>
<item name="item2"/>
</process>
<!--group 안에 또 group안에 group 중첩-->
<group name="Group2_1_1">
<process name="Process2">
<item name="item1"/>
<item name="item2"/>
</process>
</group>
</group>
</group>
<group name="Group3">
<process name="Process2">
<item name="item1"/>
<item name="item2"/>
</process>
<!--group 안에 group 중첩-->
<group name="Group3_1">
<process name="Process2">
<item name="item1"/>
<item name="item2"/>
</process>
</group>
</group>
</root>
Deserialize 하기 위해 다음과 같이 클래스를 구현했습니다.
public class Root
{
public List<Group>? Groups { get; set; }
}
public class Group
{
[XmlAttribute("name")]
public string? Name { get; set; }
[XmlElement("process")]
public List<Process>? Processes { get; set; }
/// <summary>
/// 중첩 그룹
/// </summary>
[XmlElement("group")]
public List<Group>? NestedGroup { get; set; }
}
public class Process
{
[XmlAttribute("name")]
public string? Name { get; set; }
[XmlElement("item")]
public List<Item>? Items { get; set; }
}
public class Item
{
[XmlAttribute("name")]
public string? Name { get; set; }
}
트리뷰로 표현하기 위해
<!--Root Group node (1 Depth)-->
<HierarchicalDataTemplate DataType="{x:Type model:Group}" ItemsSource="{Binding NestedGroup}">
<!--Group1 node-->
<TextBlock Foreground="Green" Text="{Binding Name}" />
<!--2 Depth Group node-->
<HierarchicalDataTemplate.ItemTemplate>
<HierarchicalDataTemplate DataType="{x:Type model:Group}" ItemsSource="{Binding NestedGroup}">
<!--Group2 node-->
<TextBlock Foreground="Blue" Text="{Binding Name}" />
<!--3 Depth Group node-->
<HierarchicalDataTemplate.ItemTemplate>
<HierarchicalDataTemplate DataType="{x:Type model:Group}" ItemsSource="{Binding Processes}">
<!--Group3 node-->
<TextBlock Foreground="Aquamarine" Text="{Binding Name}" />
<!--Process items-->
<HierarchicalDataTemplate.ItemTemplate>
<HierarchicalDataTemplate DataType="{x:Type model:Process}" ItemsSource="{Binding Items}">
<!--Process node info-->
<TextBlock Foreground="Red" Text="{Binding Name}" />
<!--Item items-->
<HierarchicalDataTemplate.ItemTemplate>
<DataTemplate DataType="{x:Type model:Item}">
<!--Item node info-->
<TextBlock Foreground="Chocolate" Text="{Binding Name}" />
</DataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
<TreeView Grid.Row="1"
ItemsSource="{Binding Root.Groups}" />
요로케 다소 복잡한 HierarchicalDataTemplate 구조가 나왔습니다.
복잡한건 둘째 치고 잘 나오길 바랬는데
뎁스 3레벨의 노드들만 표시되고,
나머지는 표시가 안되고 있는 상황 입니다.
HierarchicalDataTemplate 구조가 뎁스3 까지 표현 되어 그 이하 레벨에 있는 노드들은 아예 표시가 안되고 있는데 HierarchicalDataTemplate 구조를 어떻게 표현 해야 할까요 ?