728x90
반응형
728x170
■ CollectionViewSource 엘리먼트의 Source 속성을 사용하는 방법을 보여준다.
▶ Place.cs
namespace TestProject
{
/// <summary>
/// 장소
/// </summary>
public class Place
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Field
////////////////////////////////////////////////////////////////////////////////////////// Private
#region Field
/// <summary>
/// 도시명
/// </summary>
private string cityName;
/// <summary>
/// 주
/// </summary>
private string state;
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Property
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 도시명 - CityName
/// <summary>
/// 도시명
/// </summary>
public string CityName
{
get
{
return this.cityName;
}
set
{
this.cityName = value;
}
}
#endregion
#region 주 - State
/// <summary>
/// 주
/// </summary>
public string State
{
get
{
return this.state;
}
set
{
this.state = value;
}
}
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 생성자 - Place()
/// <summary>
/// 생성자
/// </summary>
public Place()
{
this.cityName = string.Empty;
this.state = string.Empty;
}
#endregion
#region 생성자 - Place(cityName, state)
/// <summary>
/// 생성자
/// </summary>
/// <param name="cityName">도시명</param>
/// <param name="state">주</param>
public Place(string cityName, string state)
{
this.cityName = cityName;
this.state = state;
}
#endregion
}
}
▶ PlaceCollection.cs
using System.Collections.ObjectModel;
namespace TestProject
{
/// <summary>
/// 장소 컬렉션
/// </summary>
public class PlaceCollection : ObservableCollection<Place>
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 생성자 - PlaceCollection()
/// <summary>
/// 생성자
/// </summary>
public PlaceCollection()
{
Add(new Place("Seattle" , "WA"));
Add(new Place("Redmond" , "WA"));
Add(new Place("Bellevue" , "WA"));
Add(new Place("Kirkland" , "WA"));
Add(new Place("Portland" , "OR"));
Add(new Place("San Francisco", "CA"));
Add(new Place("Los Angeles" , "CA"));
Add(new Place("San Diego" , "CA"));
Add(new Place("San Jose" , "CA"));
Add(new Place("Santa Ana" , "CA"));
Add(new Place("Bellingham" , "WA"));
Add(new Place("Tacoma" , "WA"));
Add(new Place("Albany" , "OR"));
}
#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:scm="clr-namespace:System.ComponentModel;assembly=WindowsBase"
xmlns:data="clr-namespace:System.Windows.Data;assembly=PresentationFramework"
xmlns:local="clr-namespace:TestProject"
Width="800"
Height="600"
Title="CollectionViewSource 엘리먼트 : Source 속성 사용하기"
FontFamily="나눔고딕코딩"
FontSize="16">
<Window.Resources>
<local:PlaceCollection x:Key="PlaceCollectionKey" />
<CollectionViewSource x:Key="PlaceCollectionViewSourceKey"
Source="{StaticResource PlaceCollectionKey}">
<CollectionViewSource.SortDescriptions>
<scm:SortDescription PropertyName="CityName" />
</CollectionViewSource.SortDescriptions>
<CollectionViewSource.GroupDescriptions>
<data:PropertyGroupDescription PropertyName="State" />
</CollectionViewSource.GroupDescriptions>
</CollectionViewSource>
<XmlDataProvider x:Key="XmlDataProviderKey" XPath="Tasks/Task">
<x:XData>
<Tasks xmlns="">
<Task Name="Groceries"
Priority="2"
Type="Home">
<Description>Pick up Groceries and Detergent</Description>
</Task>
<Task Name="Laundry"
Priority="2"
Type="Home">
<Description>Do Laundry</Description>
</Task>
<Task Name="Email"
Priority="1"
Type="Work">
<Description>Email Clients</Description>
</Task>
<Task Name="Clean"
Priority="3"
Type="Work">
<Description>Clean my office</Description>
</Task>
<Task Name="Dinner"
Priority="1"
Type="Home">
<Description>Get ready for family reunion</Description>
</Task>
<Task Name="Proposals"
Priority="2"
Type="Work">
<Description>Review new budget proposals</Description>
</Task>
</Tasks>
</x:XData>
</XmlDataProvider>
<CollectionViewSource x:Key="TaskCollectionViewSourceKey"
Source="{StaticResource XmlDataProviderKey}">
<CollectionViewSource.SortDescriptions>
<scm:SortDescription PropertyName="@Priority" />
</CollectionViewSource.SortDescriptions>
<CollectionViewSource.GroupDescriptions>
<data:PropertyGroupDescription PropertyName="@Priority" />
</CollectionViewSource.GroupDescriptions>
</CollectionViewSource>
</Window.Resources>
<Grid Margin="10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="10" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<ListBox Grid.Column="0"
DisplayMemberPath="CityName"
ItemsSource="{Binding Source={StaticResource PlaceCollectionViewSourceKey}}">
<ListBox.GroupStyle>
<x:Static Member="GroupStyle.Default" />
</ListBox.GroupStyle>
</ListBox>
<ListBox Grid.Column="2"
ItemsSource="{Binding Source={StaticResource TaskCollectionViewSourceKey}}" />
</Grid>
</Window>
728x90
반응형
그리드형(광고전용)
'C# > WPF' 카테고리의 다른 글
[C#/WPF] Button 엘리먼트 : CommandTarget 속성 사용하기 (0) | 2020.09.15 |
---|---|
[C#/WPF] KeyBinding 클래스 : 단축키 사용하기 (0) | 2020.09.15 |
[C#/WPF] Behavior<T> 클래스 : 숫자 입력 텍스트 박스 동작 사용하기 (0) | 2020.09.14 |
[C#/WPF] TextBox 클래스 : PreviewTextInput 이벤트를 사용해 3자리마다 콤마를 갖는 숫자 입력하기 (0) | 2020.09.14 |
[C#/WPF] LogicalTreeHelper 클래스 : FindLogicalNode 정적 메소드를 사용해 엘리먼트 찾기 (0) | 2020.09.14 |
[C#/WPF] BindingOperations 클래스 : ClearBinding/SetBinding 정적 메소드를 사용해 바인딩하기 (0) | 2020.09.14 |
[C#/WPF] Grid 클래스 : 자동 인덱스 설정 그리드 사용하기 (0) | 2020.09.13 |
[C#/WPF] Material 메뉴 사용하기 (0) | 2020.09.13 |
[C#/WPF] Animatable 클래스 : BeginAnimation 메소드를 사용해 공 움직이기 (0) | 2020.09.11 |
[C#/WPF] UIElement 클래스 : BeginAnimation 메소드를 사용해 애니메이션 시작하기 (0) | 2020.09.11 |
댓글을 달아 주세요