들어가기에 앞서서 우선 데이터에 대해서 정리하겠습니다.
WPF에서는 일반적으로 데이터라는 용어를 임의의 닷넷 객체를 설명할 때 사용합니다.
데이터 바인딩이란 이런 임의의 닷넷 객체를 함께 묶어주는 것이라고 할 수 있습니다.
이제부터 그 묶어주는 방법과 종류에 대해서 알아 보도록 합시다.
목차로는
첫 번째 장에서는 기본적인 데이터 바인딩의 개념에 대해서 살펴 보겠고
두 번째 장에서는 바인딩의 특징 중 하나인 방향성에 대해서
세 번째 장에서는 바인딩의 UpdateSourceTrigger 의 속성에 대해서
마지막으로 간단한 예제들을 통해서 확인해 보는 순서로 진행 하겠습니다.
1. 데이터 바인딩의 개념:
앞에서 바인딩이란 임의의 닷넷 객체를 묶어주는 작업이라 했습니다.
예로 들면, XML 파일, 웹서비스, 데이터 베이스 등 입니다.
이러한 데이터를 읽어와 사용자 인터페이스를 구성하고 있는 컨트롤에
출력시키는 작업이 데이터 바인딩이라 할 수 있습니다.
다른 말로 말하자면, UI 컨트롤과 비즈니스 객체(ValueObject)를
어떻게 맵핑 시켜줄 것인가를 정의해 주는 것입니다.
데이터 바인딩은 Window phone 7 에서 사용하는 실버라이트에서도
동일하게 쓰이는 기술 입니다만, 지난번에 알아보았던 MVC 패턴 즉
View와 Model을 분리해 놓고 데이터를 연결 시키는 개념과 비슷한 개념입니다.
정식 용어로 조금 바꾸어 보자면, 바인딩의 대상이 되는 컨트롤을
Dependency Object라고 합니다. 그리고 Dependency Property는 바인딩 대상의 값입니다.
예를 들어 TextBox.Value Button.Value등이 Dependency Property에 해당합니다.
바인딩에 데이터를 제공하는 데이터 소스가 Binding Source이고,
그 안에 실제 값을 저장하는 것이 Property 입니다.
데이터 바인딩이 이루어지기 위해서는 다음과 같은 세가지 구성 요소가 필요합니다.
데이터 원본(ValueObject), UI 컨트롤, 바인딩 시점 입니다.
첫 번째 데이터 아이템은 저장 장소에 저장된 데이터를 읽어오는 역할을 수행하는 객체가 필요한데요, 이를 데이터 원본(소스) 라고 합니다.
두 번째 UI 컨트롤은 사용자 인터페이스에 데이터를 출력시킬 위치 입니다.
세 번째 바인딩은 데이터 아이템의 데이터를 컨트롤에 적용시키는 시점입니다.
이에 대해서는 다음 장에서 설명 드리겠습니다.
2. 데이터 바인딩의 모델
WPF에서 제공하는 데이터 바인딩의 특징 중 하나는 방향성을 가지고 있다는 것입니다.
■One Way: Binding Source에서 반영된 데이터를 UI에 반영하되 UI에서 그 내용을 바꿔도 자동으로 Binding Source에 반영 되지 않는다.
■ Two Way: Binding Source에 데이터가 변경되면 UI에 반영되고, 반대로 UI에서 데이터를 변경하면 Binding Source에 반영된다.
■ One way to source: UI에서 변경된 데이터가 Binding Source에 반영된다. 반대로 Binding Source의 데이터는 UI에 반영되지 않는다.
■ One Time: 읽기 전용 데이터 바인딩 모델 입니다. Binding Source에 저장된 데이터를 최초로 읽어 들여 UI에 출력시킨 상태에서 Binding Source에 정보가 수정 되었다면, UI에 수정된 내용이 출력되지 않고, 최초의 데이터만 유지하고 있는 경우 입니다.
■ Default: 컨트롤 속성의 기본값으로 Two Way 바인딩이 사용되지만, 대부분의 다른 속성이 기본 값으로는 One Way(단방향) 바인딩이 사용됩니다.
앞에서 데이터 바인딩이 UI와 바인딩 소스간에 데이터를 교환해서 반영하는 개념이라고 했습니다. 이를 위해서는 방향성에 맞게 언제 데이터가 변경 되었는지를 인지 해야 합니다.
즉 바인딩 소스의 데이터가 바뀐 것을 UI가 인지해야 바뀐 데이터를 읽어와서 화면에 표시할 수 있는데요. 데이터가 업데이트된 시점이 언제인지를 인지할 수 있는 것이 이벤트 입니다.
UpdatateSourceTrigger 라는 바인딩의Property를 이용하여 언제 바인딩 소스에 데이터를 업데이트 할지 정의합니다.
원본의 업데이트 시점을 정의하는 바인딩 속성인 UpdateSourceTrigger의 프로퍼티의 종류에는 3가지 정도가 있는데요.
첫 번째 UpdatateSourceTrigger의 속성을 Explicit로 설정해 주면 코드에서BindingExpression.UpdateSource 메서드를 호출하지 않는 한 원본이 업데이트되지 않습니다.
두 번째 LostFocus로 설정(TextBox 컨트롤의 기본값)은 포커스가 대상 컨트롤 밖으로 이동하면 원본이 업데이트됨을 나타냅니다.
세 번째 PropertyChanged 값은 대상 컨트롤의 바인딩된 속성이 변경될 때마다 원본이 업데이트됨을 나타냅니다. 이 설정은 바인딩이 발생하는 시점을 지시할 때 유용합니다.
예제는 아래있는 문서에서 확인해 주시기 바랍니다.
이상으로 마치겠습니다. 감사합니다.
DataBinding.docx-> 예제자료 입니다.
첫댓글 예제 자료 등록 했습니다. ~~
기다려왔습니다~~~감사합니다~ㅋ
오오 예제 자료!! 감사합니다~~
형 옆에 있는데 1:!개인지도 부탁요~~