728x90
728x170
■ 마스터/상세 데이터를 바인딩하는 방법을 보여준다.
▶ Team.cs
namespace TestProject
{
/// <summary>
/// 팀
/// </summary>
public class Team
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Property
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 팀명 - Name
/// <summary>
/// 팀명
/// </summary>
public string Name { get; }
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 생성자 - Team(name)
/// <summary>
/// 생성자
/// </summary>
/// <param name="name">팀명</param>
public Team(string name)
{
Name = name;
}
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 문자열 구하기 - ToString()
/// <summary>
/// 문자열 구하기
/// </summary>
/// <returns>문자열</returns>
public override string ToString() => Name;
#endregion
}
}
▶ TeamCollection.cs
using System.Collections.ObjectModel;
namespace TestProject
{
/// <summary>
/// 팀 컬렉션
/// </summary>
public class TeamCollection : ObservableCollection<Team>
{
}
}
▶ Division.cs
namespace TestProject
{
/// <summary>
/// 부문
/// </summary>
public class Division
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Property
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 부문명 - Name
/// <summary>
/// 부문명
/// </summary>
public string Name { get; }
#endregion
#region 팀 컬렉션 - TeamCollection
/// <summary>
/// 팀 컬렉션
/// </summary>
public TeamCollection TeamCollection { get; }
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 생성자 - Division(name)
/// <summary>
/// 생성자
/// </summary>
/// <param name="name">부문명</param>
public Division(string name)
{
Name = name;
TeamCollection = new TeamCollection();
}
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 문자열 구하기 - ToString()
/// <summary>
/// 문자열 구하기
/// </summary>
/// <returns>문자열</returns>
public override string ToString() => Name;
#endregion
}
}
▶ DivisionCollection.cs
using System.Collections.ObjectModel;
namespace TestProject
{
/// <summary>
/// 부문 컬렉션
/// </summary>
public class DivisionCollection : ObservableCollection<Division>
{
}
}
▶ League.cs
namespace TestProject
{
/// <summary>
/// 리그
/// </summary>
public class League
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Property
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 리그명 - Name
/// <summary>
/// 리그명
/// </summary>
public string Name { get; }
#endregion
#region 부문 컬렉션 - DivisionCollection
/// <summary>
/// 부문 컬렉션
/// </summary>
public DivisionCollection DivisionCollection { get; }
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 생성자 - League(name)
/// <summary>
/// 생성자
/// </summary>
/// <param name="name">리그명</param>
public League(string name)
{
Name = name;
DivisionCollection = new DivisionCollection();
}
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 문자열 구하기 - ToString()
/// <summary>
/// 문자열 구하기
/// </summary>
/// <returns>문자열</returns>
public override string ToString() => Name;
#endregion
}
}
▶ LeagueCollection.cs
using System.Collections.ObjectModel;
namespace TestProject
{
/// <summary>
/// 리그 컬렉션
/// </summary>
public class LeagueCollection : ObservableCollection<League>
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 생성자 - LeagueCollection()
/// <summary>
/// 생성자
/// </summary>
public LeagueCollection()
{
League league;
Division division;
Add(league = new League("League A"));
league.DivisionCollection.Add(division = new Division("Division A"));
division.TeamCollection.Add(new Team("Team I" ));
division.TeamCollection.Add(new Team("Team II" ));
division.TeamCollection.Add(new Team("Team III"));
division.TeamCollection.Add(new Team("Team IV" ));
division.TeamCollection.Add(new Team("Team V" ));
league.DivisionCollection.Add(division = new Division("Division B"));
division.TeamCollection.Add(new Team("Team Blue" ));
division.TeamCollection.Add(new Team("Team Red" ));
division.TeamCollection.Add(new Team("Team Yellow"));
division.TeamCollection.Add(new Team("Team Green" ));
division.TeamCollection.Add(new Team("Team Orange"));
league.DivisionCollection.Add(division = new Division("Division C"));
division.TeamCollection.Add(new Team("Team East" ));
division.TeamCollection.Add(new Team("Team West" ));
division.TeamCollection.Add(new Team("Team North"));
division.TeamCollection.Add(new Team("Team South"));
Add(league = new League("League B"));
league.DivisionCollection.Add(division = new Division("Division A"));
division.TeamCollection.Add(new Team("Team 1"));
division.TeamCollection.Add(new Team("Team 2"));
division.TeamCollection.Add(new Team("Team 3"));
division.TeamCollection.Add(new Team("Team 4"));
division.TeamCollection.Add(new Team("Team 5"));
league.DivisionCollection.Add(division = new Division("Division B"));
division.TeamCollection.Add(new Team("Team Diamond"));
division.TeamCollection.Add(new Team("Team Heart" ));
division.TeamCollection.Add(new Team("Team Club" ));
division.TeamCollection.Add(new Team("Team Spade" ));
league.DivisionCollection.Add(division = new Division("Division C"));
division.TeamCollection.Add(new Team("Team Alpha" ));
division.TeamCollection.Add(new Team("Team Beta" ));
division.TeamCollection.Add(new Team("Team Gamma" ));
division.TeamCollection.Add(new Team("Team Delta" ));
division.TeamCollection.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:local="clr-namespace:TestProject"
Width="800"
Height="600"
Title="TestProject"
FontFamily="나눔고딕코딩"
FontSize="16">
<Window.Resources>
<local:LeagueCollection x:Key="LeagueCollectionKey" />
</Window.Resources>
<Grid
Margin="10"
DataContext="{Binding Source={StaticResource LeagueCollectionKey}}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="10" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="10" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0">My Soccer Leagues</Label>
<ListBox Grid.Row="1" Grid.Column="0"
IsSynchronizedWithCurrentItem="true"
ItemsSource="{Binding}" />
<Label Grid.Row="0" Grid.Column="2"
Content="{Binding Path=Name}" />
<ListBox Grid.Row="1" Grid.Column="2"
IsSynchronizedWithCurrentItem="true"
ItemsSource="{Binding Path=DivisionCollection}" />
<Label Grid.Row="0" Grid.Column="4"
Content="{Binding Path=DivisionCollection/Name}" />
<ListBox Grid.Row="1" Grid.Column="4"
ItemsSource="{Binding Path=DivisionCollection/TeamCollection}" />
</Grid>
</Window>
728x90
그리드형(광고전용)
'C# > WPF' 카테고리의 다른 글
[C#/WPF] XmlNamespaceMapping 엘리먼트 : XML 네임스페이스 바인딩하기 (0) | 2023.03.05 |
---|---|
[C#/WPF] CollectionView 클래스 : GroupDescriptions 속성을 사용해 그룹핑 설정하기 (0) | 2023.03.05 |
[C#/WPF] Binding 태그 확장/MultiBinding 엘리먼트 : StringFormat 속성을 사용해 문자열 포맷 설정하기 (0) | 2023.03.04 |
[C#/WPF] PriorityBinding 엘리먼트 : 우선 순위 바인딩 사용하기 (0) | 2023.03.04 |
[C#/WPF] 마스터/상세 XML 데이터 바인딩하기 (0) | 2023.03.02 |
[C#/WPF] ListCollectionView 클래스 : 데이터 탐색/정렬 및 필터 설정하기 (0) | 2023.02.28 |
[C#/WPF] MultiBinding 엘리먼트 : Converter 속성에서 IMultiValueConverter 인터페이스 구현 객체를 사용해 바인딩하기 (0) | 2023.02.28 |
[C#/WPF] XmlDataProvider 엘리먼트 : XPath 속성을 사용해 XML 데이터 사용하기 (0) | 2023.02.28 |
[C#/WPF] CollectionViewSource 엘리먼트 : SortDescriptions/GroupDescriptions 속성을 사용해 데이터 정렬 및 그룹 설정하기 (0) | 2023.02.28 |
[C#/WPF] CompositeCollection 엘리먼트 : 다수 컬렉션과 항목을 하나의 목록으로 만들기 (0) | 2023.02.25 |