안녕하세요 삽잡이입니다.
이번 시간에는 정렬, 필터링, 그룹핑에 대해서 알아보려고 합니다.
이 세가지 연산이 가장 집합 연산중에서 기본이 되는 연산입니다.
해당 연산들은 모두 View를 통해 이루어집니다.
즉, View를 가지고 논다 이겁니다.
원본을 가지고 놀면 왜 안되는지는... 아시겠지요...?
컬렉션을 View를 통해 UI에 보여줄 경우,
전부 볼 일 없이, 필요한 것만 보거나, 정렬하고 싶을 때가 있습니다.
이때, ICollectionView 인터페이스를 구현하여
원하는 View를 구현하여 바인딩 할 수 있습니다.
우선, 필터링입니다.
필터링 버튼을 눌렀을 경우,
Default View를 얻어오게 됩니다.
그리고 View에 Filter라는 속성이 null일 경우
새로운 필터를 장착하는 것이지요.
참고로 Filter는
Predicate이기 때문에, 람다식을 쓸 수 있습니다.
다음으로 정렬입니다.
해당 예제는 BCL에서 제공해주는 정렬입니다.
Default View를 얻고난 뒤에,
SortDescription을 보고 어떤 정렬 규칙도 가지고 있지 않다면,
정렬 규칙을 달겠다는 뜻입니다.
그런데, 이 방법 외에도
사용자 규칙을 사용한 정렬을 수행할 수 있습니다.
커스터마이징이라고 하지요.
사용자 정렬 정책을 사용하기 위해서는
ICollectionView를 구현한 자식 클래스인
ListCollectionView 클래스를 사용해야합니다.
컬렉션 View는 맞는데, 순서를 가지고 있는 컬렉션 View이지요.
ListCollectionView 클래스를 사용하는 이유는
해당 클래스만이 커스터마이징을 할 수 있는 정렬 규칙을 가지고 있기 때문입니다.
새로운 정렬 규칙을 달 때에는
IComperer 인터페이스를 구현한 클래스를 사용해야합니다.
즉, 제 3자를 비교하는 것이지요.
다음으로 그룹핑입니다.
보여지고 있는 목록에서
따로 따로 나누어 보기 편하게 보여주는 방식을 그룹핑이라고 합니다.
그룹이란 어떻게 모을 것인지 정해서 모아야됩니다.
WPF에서는 화면에 그 그룹별로 보여줘야하는데,
그룹 스타일을 줘야 화면상에 나타나게 됩니다.
해당 스타일은 닷넷에서 제공해주는 기본 그룹 스타일입니다.
만약, 그룹 스타일을 나이별로 나누고 싶다면
그 기중이 필요하지 않겠습니까?
이때 그 기룹 기준을 설정해주는 클래스를 정의해여 사용합니다.
아무튼... 그룹 Description을 설정하는데
PropertyGroupDescription를 생성해줍니다.
해당 예제에서는 Age가 기준이 되고,
규칙이 AgeToRangeConverter이지요.
이와 같은 방식으로 다양한 그룹핑을 만들 수 있습니다.
이번 시간은 여기까지 하도록 하겠습니다.
이상 삽잡이였습니다!
<참고 : Programming WPF : 사용자 경험(UX)을 바꾸는 기술>
'삽질의 현장 > - .NET' 카테고리의 다른 글
#123_닷넷(.NET)_ WPF_ 계층적 바인딩 (0) | 2015.12.06 |
---|---|
#122_닷넷(.NET)_ WPF_ 마스터 디테일 바인딩 (0) | 2015.12.06 |
#120_닷넷(.NET)_ WPF_ 데이터 바인딩_데이터 템플릿 (0) | 2015.12.06 |
#119_닷넷(.NET)_ WPF_ 데이터 바인딩_유효성 검사 (0) | 2015.12.06 |
#118_닷넷(.NET)_ WPF_ 데이터 바인딩_ 형식변환 (Converter) (1) | 2015.12.06 |