실버라이트의 데이터 바인딩은 XAML 파일의 컨트롤과 비하인드 파일의 로직을 연결하는 역할을 한다.
덕분에 XAML 의 컨트롤과 비하인드의 로직이 분리되어 협업이 수월해진다.
풀어 쓰자면 디자이너가 XAML의 컨트롤에 이름을 지정하면 개발자는 비하인드 파일의 로직에서
그 이름을 이용해 컨트롤에 접근하고 값을 넣는다. 이렇게 되면 디자이너는 고정된 컨트롤의 이름을
사용해야 하고 개발자는 값이 변경될 때 마다 컨트롤에 접근해 값을 변경해야 한다.
하지만, 데이터 바인딩을 이용하면 컨트롤에 지정된 이름을 부여하지 않아도 되고,
컨트롤의 값이 변경될 때마다 일일이 값을 변경하지 않아도 된다. 데이터 바인딩이 컨트롤과 로직을
연결해 주기 때문이다.
보통 XAML의 컨트롤의 바인딩 타겟이라 하고 클래스는 바인딩 소스라 한다.
코드에서 살펴보자.
MainPage.xaml 의 내용
Mainpage.xaml 의 25~27라인을 살펴보면 TextBlock 컨트롤의 Text 프로퍼티에 바인딩이 설정되어 있다.
이와 같이 작성한 것을 데이터 바인딩 마크업 확장식이라 한다.
형식은 <컨트롤명 프로퍼티명="{Binding 클래스 프로퍼티명}"/> 형식이며, 프로퍼티명에는 반드시 의존속성이 와야 한다.
바인딩 소스의 속성은 상관이 없지만 바인딩 타겟의 속성은 반드시 의존 속성이어야 한다.
UserModel.cs 의 내용
UserModel.cs에서 사용자 정보를 나타내는 클래스를 작성하였다.
UserModel 클래스의 프로퍼티 구성이다.
UserDataGenerator.cs 의 내용
UserDataGenerator.cs 에서는 유저 정보를 표현하는 클래스를 작성하였다. 일반적으로 DB에서 정보를
가져오게 되지만 간단히 컬렉션 타입으로 정의하였다.
간단히 살펴보면 21라인에서 유저 정보를 담기위해 리스트를 초기화하고, 23라인에서 UserModel클래스 인스턴스를 생성한다.
userModel 객체의 프로퍼티에 값을 할당하는게 24~26라인이다. 27라인에서 리스트에 userModel 객체를 추가해주고 있다.
40라인까지 3개의 유저 데이터를 리스트에 추가한다.
43~49라인에서 GetUserData()라는 메서드를 통해 랜덤으로 유저 정보를 가져온다.
MainPage.xaml.cs 의 내용
MainPage.xaml.cs 에서는 유저 정보를 화면에 뿌려주는 코드를 작성하였다.
17라인에서 UserDataGenerator 클래스 인스턴스를 생성하고 23라인에서 가져오기 버튼의 클릭 이벤트 핸들러를
설정했다. 26~31라인까지 클릭 이벤트 핸들러를 구현한다.
31라인이 데이터 바인딩 엔진에 의해 newModel 객체의 프로퍼티가 TextBlock 의 프로퍼티에 바인딩 되는 것이다.
그림으로 보면 아래와 같다고 볼수 있다.
위의 소스에서 this.DataContext = newModel; 이부분이 UserModel 클래스의
각 프로퍼티 값들을 UserControl 의 DataContext로 넘기는 것이다. 그러면 데이터 바인딩 엔진에 의해 UserControl의
하위 컨트롤부터 DataContext속성을 뒤져 값을 할당하게 된다.
- 실버라이트 3 학습중
'【Develope】 > 【Silverlight】' 카테고리의 다른 글
| 데이터 바인딩의 이해 (0) | 2012/01/04 |
|---|---|
| Trigger & Action (0) | 2011/12/07 |
| 이벤트 핸들러 작성 (0) | 2011/12/06 |
| 실버라이트 기반 ArcGIS app. 개발시 만나는 error (0) | 2010/10/15 |