728x90
반응형
728x170
■ HierarchicalDataTemplate 엘리먼트를 사용하는 기본적인 방법을 보여준다.
▶ League.cs
using System.Collections.Generic;
namespace TestProject
{
/// <summary>
/// 리그
/// </summary>
public class League
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Field
////////////////////////////////////////////////////////////////////////////////////////// Private
#region Field
/// <summary>
/// 명칭
/// </summary>
private string name;
/// <summary>
/// 디비전 리스트
/// </summary>
private List<Division> divisionList;
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Property
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 명칭 - Name
/// <summary>
/// 명칭
/// </summary>
public string Name
{
get
{
return this.name;
}
}
#endregion
#region 디비전 리스트 - DivisionList
/// <summary>
/// 디비전 리스트
/// </summary>
public List<Division> DivisionList
{
get
{
return this.divisionList;
}
}
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 생성자 - League(name)
/// <summary>
/// 생성자
/// </summary>
/// <param name="name">명칭</param>
public League(string name)
{
this.name = name;
this.divisionList = new List<Division>();
}
#endregion
}
}
▶ Division.cs
using System.Collections.Generic;
namespace TestProject
{
/// <summary>
/// 디비전
/// </summary>
public class Division
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Field
////////////////////////////////////////////////////////////////////////////////////////// Private
#region Field
/// <summary>
/// 명칭
/// </summary>
private string name;
/// <summary>
/// 팀 리스트
/// </summary>
private List<Team> teamList;
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Property
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 명칭 - Name
/// <summary>
/// 명칭
/// </summary>
public string Name
{
get
{
return this.name;
}
}
#endregion
#region 팀 리스트 - TeamList
/// <summary>
/// 팀 리스트
/// </summary>
public List<Team> TeamList
{
get
{
return this.teamList;
}
}
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 생성자 - Division(name)
/// <summary>
/// 생성자
/// </summary>
/// <param name="name">명칭</param>
public Division(string name)
{
this.name = name;
this.teamList = new List<Team>();
}
#endregion
}
}
▶ Team.cs
namespace TestProject
{
/// <summary>
/// 팀
/// </summary>
public class Team
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Field
////////////////////////////////////////////////////////////////////////////////////////// Private
#region Field
/// <summary>
/// 명칭
/// </summary>
private string name;
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Property
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 명칭 - Name
/// <summary>
/// 명칭
/// </summary>
public string Name
{
get
{
return this.name;
}
}
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 생성자 - Team(name)
/// <summary>
/// 생성자
/// </summary>
/// <param name="name">명칭</param>
public Team(string name)
{
this.name = name;
}
#endregion
}
}
▶ LeagueList.cs
using System.Collections.Generic;
namespace TestProject
{
/// <summary>
/// 리그 리스트
/// </summary>
public class LeagueList : List<League>
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Property
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 인덱서 - this[name]
/// <summary>
/// 인덱서
/// </summary>
/// <param name="name">명칭</param>
/// <returns>리그</returns>
public League this[string name]
{
get
{
foreach(League league in this)
{
if(league.Name == name)
{
return league;
}
}
return null;
}
}
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 생성자 - LeagueList()
/// <summary>
/// 생성자
/// </summary>
public LeagueList()
{
League leauge;
Division division;
Add(leauge = new League("League A"));
leauge.DivisionList.Add((division = new Division("Division A")));
division.TeamList.Add(new Team("Team I" ));
division.TeamList.Add(new Team("Team II" ));
division.TeamList.Add(new Team("Team III"));
division.TeamList.Add(new Team("Team IV" ));
division.TeamList.Add(new Team("Team V" ));
leauge.DivisionList.Add((division = new Division("Division B")));
division.TeamList.Add(new Team("Team Blue" ));
division.TeamList.Add(new Team("Team Red" ));
division.TeamList.Add(new Team("Team Yellow"));
division.TeamList.Add(new Team("Team Green" ));
division.TeamList.Add(new Team("Team Orange"));
leauge.DivisionList.Add((division = new Division("Division C")));
division.TeamList.Add(new Team("Team East" ));
division.TeamList.Add(new Team("Team West" ));
division.TeamList.Add(new Team("Team North"));
division.TeamList.Add(new Team("Team South"));
Add(leauge = new League("League B"));
leauge.DivisionList.Add((division = new Division("Division A")));
division.TeamList.Add(new Team("Team 1"));
division.TeamList.Add(new Team("Team 2"));
division.TeamList.Add(new Team("Team 3"));
division.TeamList.Add(new Team("Team 4"));
division.TeamList.Add(new Team("Team 5"));
leauge.DivisionList.Add((division = new Division("Division B")));
division.TeamList.Add(new Team("Team Diamond"));
division.TeamList.Add(new Team("Team Heart" ));
division.TeamList.Add(new Team("Team Club" ));
division.TeamList.Add(new Team("Team Spade" ));
leauge.DivisionList.Add((division = new Division("Division C")));
division.TeamList.Add(new Team("Team Alpha" ));
division.TeamList.Add(new Team("Team Beta" ));
division.TeamList.Add(new Team("Team Gamma" ));
division.TeamList.Add(new Team("Team Delta" ));
division.TeamList.Add(new Team("Team Epsilon"));
}
#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:src="clr-namespace:TestProject"
Width="800"
Height="600"
Title="HierarchicalDataTemplate 엘리먼트 사용하기"
FontFamily="나눔고딕코딩"
FontSize="16">
<Window.Resources>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="Padding" Value="5" />
</Style>
</Window.Resources>
<DockPanel>
<DockPanel.Resources>
<src:LeagueList x:Key="LeagueListKey" />
<HierarchicalDataTemplate DataType="{x:Type src:League}"
ItemsSource="{Binding Path=DivisionList}">
<TextBlock Text="{Binding Path=Name}" />
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type src:Division}"
ItemsSource="{Binding Path=TeamList}">
<TextBlock Text="{Binding Path=Name}" />
</HierarchicalDataTemplate>
<DataTemplate DataType="{x:Type src:Team}">
<TextBlock Text="{Binding Path=Name}" />
</DataTemplate>
</DockPanel.Resources>
<Menu Name="menu" DockPanel.Dock="Top"
Padding="5"
FontFamily="나눔고딕코딩"
FontSize="16">
<MenuItem Header="축구 리그"
ItemsSource="{Binding Source={StaticResource LeagueListKey}}" />
</Menu>
<TreeView
Margin="10"
Padding="10">
<TreeViewItem
Header="축구 리그"
ItemsSource="{Binding Source={StaticResource LeagueListKey}}" />
</TreeView>
</DockPanel>
</Window>
728x90
반응형
그리드형(광고전용)
'C# > WPF' 카테고리의 다른 글
[C#/WPF] Adorner 클래스 : 단순 어도너 사용하기 (0) | 2020.07.27 |
---|---|
[C#/WPF] Adorner 클래스 : 크기 조정 어도너 사용하기 (0) | 2020.07.27 |
[C#/WPF] AccessText 클래스 : 액세스 텍스트 사용하기 (0) | 2020.07.27 |
[C#/WPF] DrawingVisual 클래스 : 비주얼 자식 추가하기 (0) | 2020.07.27 |
[C#/WPF] 마우스 드래그로 사각형 그리기 (0) | 2020.07.22 |
[C#/WPF] TreeView 엘리먼트 사용하기 (0) | 2020.07.21 |
[C#/WPF] TreeViewItem 클래스 : 트리 뷰 구하기 (0) | 2020.07.21 |
[C#/WPF] Behavior<T> 클래스 : 마우스 왼쪽 버튼 컨텍스트 메뉴 지원 동작 사용하기 (0) | 2020.07.21 |
[C#/WPF] Behavior<T> 클래스 : 리스트 박스 선택 동작 사용하기 (0) | 2020.07.21 |
[C#/WPF] Thumb 클래스 : 객체 이동하기/크기 조정하기/회전하기 (0) | 2020.07.19 |
댓글을 달아 주세요