CODE SHOP 데이터 바인딩 Data Binding 2012. 07. 08 김대열.

Slides:



Advertisements
Similar presentations
문화컨텐츠의 현지화 무역학과 / 4조 이영화 장세은 조하영 한민구 국제마케팅(N) 강명수 교수님.
Advertisements

지도교수 : 박진식 교수님 조 원 : 홍승기, 이병용, 백승준, 조근용, 조동현, 한정협, 이상하.
1 ‘ 우리나라의 주요공업 ’ - 정도웅, 주민혁, 안수진, 백경민, 엄다운, 박경찬 -.
수유부의 약물복용 시 주의점 발표자 조기성. 모유 수유의 장점 모유 수유의 장점은 ? 위장관 질환 발생감소 영아 돌연사 발생감소 아토피 질환 발생감소 정서적 안정.
똘기 : 채 익지 않은 과일. 똘기 소개 일명 발표동아리. 똘기는 발표에 대한 두려움을 가지고 있는 학우들에게 ‘ 자신감 ’ 을 키워줄 수 있도록 하자는 취지에서 만들어졌다. 평소 강의 시간보다 편안하고 자유롭게 발표해 볼 수 있는 기회를 제공함으로써 발표력 향상에 기여하는.
일 시 : (목) 장 소 : 문산종합사회복지관장) 파주시문산종합사회복지관 기관안내.
2013년도 2학기 학습튜터링 O.T.
미국의 미디어교육 신문방송학과 강진구 한인수 곽모란 이명현.
PRESENTATION 저온화상이란?
양성평등 리더만들기 조.
해외서, 국내서 요약 ‘북집’ 모바일 서비스 이용방법
공부할 내용 조상들이 살던 곳 자연과 잘 어울리는 한옥 지방에 따라 서로 다른 집의 모양 섬 지방의 집
2011년 봄학기 정보컴퓨터공학부 컴퓨터 소프트웨어 설계 및 실험
사랑, 데이트와 성적 자율성 :데이트 성폭력!!! 성폭력예방교육 전문강사 / 여성학 전공 신 순 옥.
2012사회복지현장실습 고윤지.
보건의료 인력양성의 문제점과 방안 김윤미, 전현화, 김지연, 김현정.
퇴계와 율곡의 사회사상 비교 남 일 재 동서대학교 교수/ 정치학 박사 1. 퇴계 이황과 율곡 이이의 약전(略傳)
11주 실습강의 학기, 소프트웨어 설계 및 실험(Ⅰ).
제3장 사회 복지 발달사.
대포나 미사일이 없던 옛날에는 먼 거리에 있는 적의 성을 어떻게 공격했을까?
가족상담 및 치료.
501. 군인들의 세상 502. 민정 이양과 한일회담 이선용.
쌓지 말고 해소하자 이 주휘 이 진영 전 민석 전 혜림.
2015년 하반기 소방교육 자 유 전 공 학 부 (금) 안녕하십니까 자유전공학부 행정실 입니다.
쌍용차 회생계획안을 통한 투기자본(=먹튀자본) 수강과목: 회 계 학 원론 담당교수: 박 성 환 교수님
데이터 관리의 모든 것 데이터 최적화하기 데이터 정렬하기 자동 필터와 고급 필터
2018..
2강. JAVA 프로그래밍이란?-II & 변수 JAVA 프로그램 환경설정과 실행 방법 변수란?
게임 엔진 : 프로젝트 PPT_1 참참참 김 현 원.
3주 실습강의 학기, 소프트웨어 설계 및 실험(Ⅰ).
아동복지 제9장.
서울 메트로 노조파업 수강과목 : 노사 관계론 담당교수 : 정형진 교수님
XML XSLT.
컴퓨터 활용 및 실습 Chapter 3 수식과 함수 김 정 석
XML.NET XML 검색, 수정 프로그램 작성 2010 컴퓨터공학실험(Ⅰ)
행정학과 김수민 중국 춘절의 교통문제.
강남 DataBinding 스타일 Windows 8 앱개발자라면 꼭 알아야할 개발자가 알아야할 Binding.
제13장 장애인 복지.
사회복지 법제론 /노인장기요양보험법 문은홍 조소라.
목차 INDEX 1. 회원가입 및 로그인 2. 업체정보 3. 제조검사 신청 4. 인보이스 5. 검사진행현황(현장검사 신청)
글로벌한국사 2강 - 고조선과 단군할아버지- 신화 속 역사 읽기.
Ⅰ. 가족복지 개관 가족복지론 최진령.
패시브하우스 신안산대학교 l 건축과 l 박효동, 박창준, 지예림.
정치개혁의 가능성 논의 권력구조 개편을 통하여 본 -개헌을 통한 정부형태의 변화를 중심으로 [한국정치론] 윤성이 교수님
8 기본 내장 객체.
치료 레크레이션 프로그램 (지적 장애 대상) 과 목: 학 과: 학 번: 이 름: 제 출 일 자 담 당 교 수:
게임 엔진 : 프로젝트 PPT_2 참참참 김 현 원.
노년기 발달 장안대 행정법률과 세류반 정 오 손
Drag Panel Extender 정보통신 공학부 어현승.
샘플앱 제작 안내 2016/05/18.
태국 문학 욜라다 왓짜니 싸란차나 팟차라와라이 끼따야펀 르앙다우 타니다.
쌍용자동차의 사례를 통해 본 바람직한 노사관계란?
평생 저축해도 강남 아파트 못산다 학 과 : 회계학과 1학년 B반 과 목 : 회계학원론 담당교수: 박성환 교수님
계피(CINNAMON) MADE By 김소연 안미소 조은비.
콘텐츠 디자인 황아현.
도덕과 교수-학습 모형 초등특수교육과 나성령.
▶서류관리 프로그램 1. 로그인….2 2. 서류등록 … 서류도착 서류스티커발행
경영학의 상황학파에 대해서… 경제학과 3학년 최준용 회계학과 4학년 진현빈
볼링 지도 – 학습 과정안.
워밍업 실뭉치 전달게임.
노인학대예방 교육 교육강사 시 설 장 송나겸 보성실버센터.
자연치유 행복나눔 사회적협동조합 참여 제안서
유통경영학과 하성훈 유통경영학과 김병율 기계공학과 배용진
DataScience Lab. 박사과정 김희찬 (화)
토론의 기술 3 쟁점분석과 입론.
음파성명학 최종욱.
예수꼴 예배찬양 부모, 친구 초청 추수감사예배 - 11월 19일 -.
책을 읽읍시다  탈향 진지하게 설명해드림 1303 김소희 1309박지호 1315이지수.
2016년 제1차 운영위원회 평택시건강가정 ∙다문화가족지원센터
안전문화 정착을 위한 의식 변화 금정 소방서.
Presentation transcript:

CODE SHOP 데이터 바인딩 Data Binding 2012. 07. 08 김대열

INDEX 개념 바인딩 클래스 바인딩 설정 데이터 템플릿 데이터 변환 MultiBinding MultiConverter 바인딩 경로 컬렉션 바인딩 데이터 프로바이더 바인딩 데이터 유효성 INDEX

바인딩이란 UI DATA 응용 프로그램 UI와 비즈니스 논리를 서로 연결하는 프로세스. ( MSDN ) 데이터 : 객체, XML 파일, 웹 서비스, 데이터 베이스, 버튼 같은 WPF 요 소 등. 대상 요소와 데이터를 연결 하는 것. UI DATA

바인딩의 이점 코드 양의 감소. 데이터의 유연한 UI 표현 비즈니스 로직과 UI의 분리 MVVM 패턴의 기본 요소

( Dependency Property ) 구성요소 바인딩 대상 ( Target ) 바인딩 소스 ( Source ) 객체 ( Dependency Object ) 객체 ( Object ) 종속성 속성 ( Dependency Property ) 속성 ( Property ) Binding 4가지 필수 요소 대상 객체 : DependencyObject 에서 파생한 객체 대상 속성 : 종속성 속성 ( 읽기 전용 제외 ) 소스 객체 소스 속성

( Dependency Property ) 데이터 흐름 바인딩 대상 ( Target ) 바인딩 소스 ( Source ) Dependency Object One Way Object 종속성 속성 ( Dependency Property ) 속성 ( Property ) Two Way OneWayToSource OneTime OneWay : 소스가 변경될 때마다 타깃이 갱신. ( 단방향 ) TwoWay : 대상이나 소스가 변경되면 서로 갱신. ( 양방향 ) OneWayToSource : 대상이 변경될 때마다 소스가 갱신. ( OneWay 역방향 ) OneTime : 대상 속성은 바인딩 클래스가 인스턴스화 될 때, 한번만 적용되며 이 후 소스가 변경되어도 반영되지 않음.

( Dependency Property ) 소스 업데이트 시점 바인딩 대상 ( Target ) 바인딩 소스 ( Source ) Dependency Object Object 종속성 속성 ( Dependency Property ) UpdateSourceTrigger 속성 ( Property ) Two Way OneWayToSource PropertyChanged : 대상 속성이 변경되는 즉시 갱신. LostFocus : 대상 속성의 값이 변경되고 대상 요소가 포커스를 읽었 을 때 갱신. - Explicit : 사용자가 직접 갱신. ( BindingExpression.UpdateSource )

바인딩 클래스 System.Windows.Data.Binding 두 개의 속성을 이용해 채널을 연결 마크업 확장식 클래스 BindingExpression : 소스와 대상사이의 연결을 유지관리 하는 클래스 BindingOperations : 바인딩 객체들을 참조하여 조작하는 정적메소드를 제공.

바인딩 클래스 – 설정 / 제거 메소드 SetBinding : FrameworkElement, FrameworkContentElement 상속 메소드 BindingOperations.SetBinding : FrameworkElement, FrameworkContentElement 객체가 아니어도 DependencyObject 객체면 바인딩 할 수 있음. BindingOperations.ClearBinding : 한 개의 바인딩 된 속성 제거. BindingOperations.ClearAllBindings : 대상 객체가 한 개 이상의 바인딩이 되어 있을 경우 모두 제거.

바인딩 설정 소스 객체 ( Source ) 소스 속성 ( Property ) 대상 객체 ( Target ) 대상 속성 ( Dependency Property )

바인딩 설정 < ElementName > 바인딩 클래스는 Path 프로퍼티를 사용하는 생성자가 있기 때문에 명시적으로 프로퍼티를 사용하지 않을 수 있다.

바인딩 설정 < DataContext > < Source > Source 프로퍼티를 사용하려면 대상 객체가 ResourceDictionary에 리소스로 정의되어야 한다.

바인딩 설정 < RelativeSource > ElementName, Source, RelativeSource 중 하나만 설정 가능.

RelativeSource 바인딩 대상의 위치에 상대적인 위치를 지정하여 바인딩 소스를 가져오거나 설정. ( 컨트롤 템플릿에 사용하기 유용 ) { Binding RelativeSource={ RelativeSource Self } } : 소스 객체와 대상 객체가 동일 { Binding RelativeSource={ RelativeSource TemplateParent } } : 소스 객체와 대상 객체의 TemplateParent를 동일 { Binding RelativeSource={ RelativeSource FindAncestor, AncestorType={ x:Type desiredType } } } : 소스 객체와 주어진 타입에 가장 근접한 부모 객체를 동일 { Binding RelativeSource={ RelativeSource FindAncestor, AncestorLevel=n, AnsestorType={ x:Type desiredType } } } : 소스 객체와 주어진 타입에 n 번째 가까운 부모 객체와 동일 { Binding RelativeSource={ RelativeSource PreviousData } } : 소스 객체와 데이터 바인딩된 컬렉션의 이전 데이터와 동일

바인딩 고려사항 단순 프로퍼티를 소스 프로퍼티로 사용할 경우, 변경통보가 일어나지 않기 때문에 소스 객체의 속성이 변경되어도 갱신되지 않음. INotifyPropertyChanged 인터페이스를 구현하여 해결 함. 소스 프로퍼티는 닷넷 객체의 어떤 프로퍼티도 사용할 수 있지만 단순한 필드가 아닌 실제 프로퍼티여야 하며, 대상 객체의 프로퍼티는 반드시 의존 프로퍼티여야 함.

Data Template 대상 객체에 바인딩 된 데이터를 시각적으로 표현

( Dependency Property ) 데이터 변환 소스의 값을 변경하여 대상에 전달할 수 있음. 서로 다른 타입의 소스와 대상을 사용할 경우 유용함. IValueConverter 인터페이스 구현 멀티 바인딩 사용시 IMultiValueConverter 사용 바인딩 대상 ( Target ) 바인딩 소스 ( Source ) Dependency Object Object 종속성 속성 ( Dependency Property ) 속성 ( Property ) 데이터 변환

데이터 변환 바인딩 대상 ( Target ) 바인딩 소스 ( Source ) Label Slider Content Value

데이터 변환 - IValueConverter < Source -> Target > < Target -> Source >

MultiBinding 대상 객체에 여러 개의 소스를 바인딩 할 경우 사용. 입력되는 여러 타입의 데이터 처리를 위해 멀티 컨버터를 사용해야 함. 바인딩 소스 ( Source ) Object 속성 ( Property ) 바인딩 대상 ( Target ) Dependency Object 바인딩 소스 ( Source ) Object 속성 ( Property ) 종속성 속성 ( Dependency Property ) 데이터 변환 ( IMultiValueConverter ) 바인딩 소스 ( Source ) Object 속성 ( Property ) . n

MultiBinding

데이터 변환 - IMultiValueConverter

ProirityBinding 다수의 바인딩 객체를 사용한다는 점에서 MultiBinding 과 유사하나 대상 객체의 값 설정을 위해 객체들을 경쟁시킴. 바인딩의 우선순위는 목록 순서이며, 목록의 첫 번째 부터 마지막까 지 바인딩을 진행하며 성공여부 확인. 데이터 소스와 바인딩이 오래 걸릴 경우 대기하는 동안 빠른 바인딩 을 먼저 처리하여 보여줌. 우선순위가 높은 바인딩이 성공하면 현재 값으로 대체.

바인딩 경로 Path=Main.Sub : 하위속성 지정 Path=Index[0] : 인덱서 적용, 중첩가능 Path=Name[First, Last] : 인덱서, 하위 속성 Path=/ : 소스가 컬렉션 뷰인 경우 현재 항목지정 Path=/Root/Sub : 속성 이름과 슬래시를 결합하여 컬렉션 속성을 이동 Path=“[(sys:Int32)42, (sys:Int32)24]” : 매개변수 형식은 괄호 안에 지정 마침표(.) 경로는 현재 소스와 바인딩 Text={ Binding }은 Text={ Binding Path=. } 와 같음.

컬렉션 바인딩 일반적으로 ItemsControl의 ItemsSource 속성과 바인딩. ListBox, ListView, TreeView 등. IEnumerable 인터페이스를 구현한 컬렉션 변경 알림을 위해서는 INotifyCollectionChanged 인터페이스 구현 ( 삽입, 삭제 ) ObservableCollection<T> : INotifyCollectionChanged 인터페이스를 기본으로 구현한 클래스

컬렉션 뷰 컬렉션을 바인딩 시 기본 뷰가 대상과 소스 사이에 암시적으로 추가. ICollectionView는 기본 컬렉션의 자체 변경없이 정렬, 그룹핑, 필터링, 탐색 기능을 사용할 수 있는 바인딩 소스 컬렉션의 최상위 계층. 현재 항목에 대한 포인터 유지 관리. CollectionViewSource.GetDefalutView 메소드로 컬렉션의 기본 뷰를 반환

컬렉션 뷰 - 정렬 ICollectionView 인터페이스의 SortDescriptions 프로퍼티 사용 동시에 여러 프로퍼티 정렬 가능. ( 목록 순으로 우선순위 설정 ) ListSortDirection 열거형으로 방향 설정 SortDescriptions.Clear 로 제거

컬렉션 뷰 - 그룹핑 ICollectionView 인터페이스의 GropDescriptions 프로퍼티 사용. PropertyGroupDescription 객체를 추가 ( 밸류 컨버터를 사용하여 그룹핑 값 변경 가능 ) 즉시 렌더링 되지 않기 때문에 ItemsControl의 GroupStyle 프로퍼티 정의 ( HeaderTemplate ) GroupStyle.Default 프로퍼티 사용 가능 데이터 템플릿 생성 시 CollectionViewGroup 객체가 데이터 컨텍스트 로 연결됨.

컬렉션 뷰 - 필터링 데이터에서 조건을 기준으로 하위집합만 표시 Predicate<object> 타입의 Filter 프로퍼티 사용. Predicate<object> 는 object 를 매개변수로 받고 boolean 을 반환하 는 델리게이트 결과가 true 이면 보이고 false 이면 감춤.

컬렉션 뷰 - 탐색 ICollectionView 의 CurrentItem 프로퍼티와 CureentPostion 프로퍼티 및 CurrentItem 변경 메소드가 있음. Selector 컨트롤의 IsSynchronizedWithCurrentItem 프로퍼티가 true 인 경우만 변경

사용자 지정 뷰 CollectionViewSource 동일한 컬렉션에서 새로운 뷰를 생성하여 선택적으로 대상에 적용할 수 있음.

사용자 지정 뷰

사용자 지정 뷰

데이터 프로바이더 XmlDataProvider ObjectDataProvider

XmlDataProvider XML 이 어느 곳에 있든 데이터 바인딩할 수 있는 쉬운 방법 제공 Source 프로퍼티로 로컬파일, 인터넷 리소스 등 어느 곳이든 참조 XPath와 Path 동시 사용 가능

XmlDataProvider

ObjectDataProvider 닷넷 객체를 데이터 소스로 사용. 파라미터를 받는 생성자에서 소스 객체를 선언하는 것으로도 인스턴 스를 만들 수 있음. 소스 객체의 메소드에 바인딩 가능. 생성자, 메소드에 파라미터 전달.

ObjectDataProvider 리소스 사용 타입 지정 생성자 파라미터 메소드 메소드 파라미터

비동기 데이터 바인딩 바인딩 클래스의 IsAsync 프로퍼티 데이터 프로바이더의 IsAsynchronous 프로퍼티 IsAsynchronous = true : 백그라운드 스레드에서 소스 생성 IsAsync = true :백그라운드 스레드에서 소스 프로퍼티 호출 기본적으로 XmlDataProvider는 true, ObjectDataProvider는 false

바인딩 데이터 유효성 데이터가 대상에서 소스로 전달 될 경우 사용 ( TwoWay, OneWayToSource ) 바인딩 클래스의 ValidationRules 프로퍼티 사용. 두 가지의 형식의 기본제공 ValidationRule 객체이용 ( ExceptionValidationRule, DataErrorValidationRule ) 사용자 검증규칙을 이용.

바인딩 데이터 유효성

바인딩 데이터 유효성

유효성 UI 변경 Validation.ErrorTemplate 프로퍼티 Validation.HasError 프로퍼티

유효성 UI 변경

참고 MSDN : http://msdn.microsoft.com/ko-kr/library/ms752347.asp 에덤 네이선의 WPF 언리쉬드

Q & A

Thank you