HOT프로그래밍

[비트고급]다중요소UI를 바인딩하자! - ObservableCollection 본문

#include<LifeStyle>/상식넓히기

[비트고급]다중요소UI를 바인딩하자! - ObservableCollection

NetShin 2018. 4. 30. 17:38

오늘은 WPF에서 ListBox가 데이터바인딩이 어떻게 이루어지는지에 대해 배웠다
그래서 오늘도 한명의 학생으로써 블로그에 글을 끄적여본다
(제 머릿속을 정리하는 용도로 작성한거라 추후에 더 자세하게 포스팅하도록 하겠습니다)

ListBox와 같은 Collection과도 바인딩이 가능하다
정확히 말하면 ListBox가 가지고 있는 Item들의 소스가 바인딩 되어진다
즉, 내부적으로 바인딩이 가능하다는 것이다.

TextBox의 데이터 원본은 객체지만
ListBox는 여러개의 아이템을 화면에 보여주기위해 만들었기 때문에 데이터 원본은 객체들의 Collection이다 -

여기서 컬렉션의 예로는 List를 볼 수 있다.

따라서 다중요소를 가진 UI와 데이터 바인딩을 할 때에는 컬렉션 내의 각각 객체들이 동기화를 이루도록 해야한다

여기서 다중요소를 가진 UI와 데이터바인딩을 하기위해서는 도대체 어떻게 해야할까?
이를 위해 C#에서는 ObservableCollecton<T>을 제공해준다
해당형식의 컬렉션은 바인딩에서 사용하는 컬렉션인데 이것또한 [INotifyPropertyChanged]처럼
Data원본에서 변화가 있을 시에 바인딩엔진에게 알려주는 기능을 한다

즉 INotifyPropertyChanged와의 차이점은
  • INotifyPropertyChanged  : UI와 객체가 바인딩되었을 때 해당 데이터원본의 0번째 인덱스가 바뀌었단걸 알린다
  • ObservableCollection<T>: UI와 컬렉션이 바인딩되었을 때 Collection이 바뀌었단걸 알린다 
여기서 단일 요소의 UI에 선택된 데이터 원본을 보여주고싶다면
listbox의 xml에 IsSynchornizeWitCurrentItem="True"로 설정해주면
단일 요소의 UI에 선택된 데이터원본이 동기화 됩니다

여기까지 다중요소UI 바인딩에 대해서 공부해봤습니다^^


'#include<LifeStyle> > 상식넓히기' 카테고리의 다른 글

[비트고급]WPF 데이터바인딩 뽀개버리기  (0) 2018.04.27
C언어의 메모리 구조  (0) 2018.04.26
[비트고급]WPF란?  (0) 2018.04.26
Comments