728x90
반응형
728x170
■ HierarchicalDataTemplate 엘리먼트의 DataType 속성을 사용해 트리를 만드는 방법을 보여준다.
▶ Sample.cs
using System.Collections.ObjectModel;
namespace TestProject
{
/// <summary>
/// 샘플
/// </summary>
public class Sample
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Field
////////////////////////////////////////////////////////////////////////////////////////// Private
#region Field
/// <summary>
/// 자식 컬렉션
/// </summary>
private ObservableCollection<string> childCollection = new ObservableCollection<string>();
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Property
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 명칭 - Name
/// <summary>
/// 명칭
/// </summary>
public string Name { get; set; }
#endregion
#region 자식 컬렉션 - ChildCollection
/// <summary>
/// 자식 컬렉션
/// </summary>
public ObservableCollection<string> ChildCollection
{
get
{
return this.childCollection;
}
}
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 생성자 - Sample()
/// <summary>
/// 생성자
/// </summary>
public Sample()
{
for(int i = 0; i < 10; ++i)
{
ChildCollection.Add($"하위 샘플 {i}");
}
}
#endregion
}
}
▶ SampleCollection.cs
using System.Collections.ObjectModel;
namespace TestProject
{
/// <summary>
/// 샘플 컬렉션
/// </summary>
public class SampleCollection : ObservableCollection<Sample>
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 생성자 - SampleCollection()
/// <summary>
/// 생성자
/// </summary>
public SampleCollection()
{
for(int i = 0; i < 100; ++i)
{
Sample sample = new Sample();
sample.Name = "샘플 " + i.ToString();
Add(sample);
}
}
#endregion
}
}
▶ MainWindow.xaml
<Window x:Class="TestProject.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:TestProject"
Width="800"
Height="600"
Title="TestProject"
FontFamily="나눔고딕코딩"
FontSize="16">
<Window.Resources>
<local:SampleCollection x:Key="SampleCollectionKey" />
<HierarchicalDataTemplate DataType="{x:Type local:Sample}"
ItemsSource="{Binding Path=ChildCollection}">
<TextBlock Text="{Binding Path=Name}" />
<HierarchicalDataTemplate.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" />
</DataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
<HierarchicalDataTemplate.ItemContainerStyle>
<Style TargetType="TreeViewItem">
<Setter Property="Foreground" Value="Navy" />
</Style>
</HierarchicalDataTemplate.ItemContainerStyle>
</HierarchicalDataTemplate>
</Window.Resources>
<TreeView
Margin="10"
ItemsSource="{Binding Source={StaticResource SampleCollectionKey}}">
<TreeView.ItemContainerStyle>
<Style TargetType="TreeViewItem">
<Setter Property="Foreground" Value="Green" />
<Setter Property="IsExpanded" Value="True" />
</Style>
</TreeView.ItemContainerStyle>
</TreeView>
</Window>
※ TreeView 엘리먼트에 아래 첨부 속성을 설정하면 테스트시 오류가 발생해서 프로그램이 비정상 종료된다.
VirtualizingStackPanel.IsVirtualizing="True"
VirtualizingStackPanel.VirtualizationMode="Recycling"
728x90
반응형
그리드형(광고전용)
'C# > WPF' 카테고리의 다른 글
[C#/WPF] ControlTemplate 엘리먼트 : Calendar 엘리먼트 정의하기 (0) | 2023.01.22 |
---|---|
[C#/WPF] ControlTemplate 엘리먼트 : 비주얼 상태와 트리거를 사용해 Button 엘리먼트 정의하기 (0) | 2023.01.22 |
[C#/WPF] Control 클래스 : 사용자 지정 가능한 모양을 가진 컨트롤 만들기 (0) | 2023.01.21 |
[C#/WPF] Application 클래스 : LoadComponent 정적 메소드를 사용해 리소스 딕셔너리 구하기 (0) | 2023.01.21 |
[C#/WPF] ControlTemplate 엘리먼트 : 마우스 위치시 배경색이 변경되는 Button 엘리먼트 정의하기 (0) | 2023.01.20 |
[C#/WPF] ToolTipService 엘리먼트 : 툴팁 표시하기 (0) | 2023.01.19 |
[C#/WPF] ToolTip 엘리먼트 : Placement/PlacementRectangle 속성 사용하기 (0) | 2023.01.19 |
[C#/WPF] ToolBar 엘리먼트 : 내부 컨트롤 스타일 설정하기 (0) | 2023.01.19 |
[C#/WPF] ToolBar 엘리먼트 : OverflowMode 첨부 속성 사용하기 (0) | 2023.01.18 |
[C#/WPF] TextBox 엘리먼트 : ContextMenu 속성을 사용해 커스텀 컨텍스트 메뉴 만들기 (0) | 2023.01.18 |
댓글을 달아 주세요