TreeView에서 표현하고 싶은 데이터가 단순한 리스트라면,
ViewModel에서 ObservableCollection<T> 프로퍼티를 만들고
TreeView의 ItemsSource 속성에 방금 만든 ObservableCollection<T>을 바인딩하면 된다.
가령,
ViewModel에서
public ObservableCollection<MyData> MyCollection;
라고 선언하고 객체를 생성해 둔 다음에
View에서
<TreeView ItemsSource="{Binding MyCollection}"/>
라고 하면 된다.
하지만 만약
MyCollection의 원소 타입인 MyData가 ObservableCollection<T> 이고,
이것 또한 사용자에게 보여주기 원한다면 우리는 TreeView의 depth가 2 인 모습을 구현해야 한다.
이 때 사용할 수 있는 게 ItemTemplate과 HierarchicalDataTemplate 이다.
ItemTemplate을 사용하지 않고 바로 TreeViewItem을 연속으로 사용하려 한다면
"ItemsSource를 사용하려면 항목 컬렉션이 비어 있어야 합니다"
라는 오류가 뜰 것이다.
<TreeView ItemsSource="{Binding MyData}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Path=MySecondData}">
<TreeViewItem>
<TreeViewItem.ItemTemplate>
<HierarchicalDataTemplate>
<TreeViewItem Header="{Binding MyName}"/>
</HierarchicalDataTemplate>
</TreeViewItem.ItemTemplate>
</TreeViewItem>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
'Development Experience > C#' 카테고리의 다른 글
WPF 코드 상에서 Event, Command 발생시키기 (0) | 2020.03.04 |
---|---|
Telerik RadTabbedView 에서 첫 Tab화면이 안나올 때 (0) | 2020.02.06 |
Telerik Winform에서 border의 색깔이 도저히 안 없어질때.. (0) | 2019.11.18 |
C# Memory Leak 해결 툴 (0) | 2019.10.07 |
C# Enum 을 int 로 캐스팅하는 효율적인 방법 (0) | 2019.10.02 |