DataBinding

Similar documents
C# Programming Guide - Types

thesis

MVVM 패턴의 이해

1

Interstage5 SOAP서비스 설정 가이드

어댑터뷰

ÃູÀÇÅë·Î

Orcad Capture 9.x

DocsPin_Korean.pages

Intro to Servlet, EJB, JSP, WS

ETL_project_best_practice1.ppt

PowerPoint Presentation

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

DIY 챗봇 - LangCon

The_IDA_Pro_Book

UML

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

MS-SQL SERVER 대비 기능

MAX+plus II Getting Started - 무작정따라하기

Design Issues

화해와나눔-여름호(본문)수정

화해와나눔-가을호(본문)

Microsoft PowerPoint UI-Event.Notification(1.5h).pptx

SMB_ICMP_UDP(huichang).PDF

The Self-Managing Database : Automatic Health Monitoring and Alerting

Secure Programming Lecture1 : Introduction

초보자를 위한 C# 21일 완성

11 템플릿적용 - Java Program Performance Tuning (김명호기술이사)

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

example code are examined in this stage The low pressure pressurizer reactor trip module of the Plant Protection System was programmed as subject for

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V

초보자를 위한 ASP.NET 2.0

USER GUIDE

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

Oracle Apps Day_SEM

PowerPoint Presentation

PowerPoint Template

Building Mobile AR Web Applications in HTML5 - Google IO 2012

2014밝고고운동요부르기-수정3

2005프로그램표지

untitled

PowerChute Personal Edition v3.1.0 에이전트 사용 설명서

1~10

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]

PowerPoint 프레젠테이션

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

PowerPoint 프레젠테이션

untitled

chap 5: Trees

untitled

JVM 메모리구조

untitled

Dialog Box 실행파일을 Web에 포함시키는 방법

ilist.add(new Integer(1))과 같이 사용하지 않고 ilist.add(1)과 같이 사용한 것은 자바 5.0에 추가된 기본 자료형과 해당 객체 자료 형과의 오토박싱/언박싱 기능을 사용한 것으로 오토박싱이란 자바 컴파일러가 객체를 요구하는 곳에 기본 자료형

Week13

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

강의 개요

BGP AS AS BGP AS BGP AS 65250

Social Network

2002년 2학기 자료구조

istay

adfasdfasfdasfasfadf

Microsoft PowerPoint - 2.Catalyst Switch Intrastructure Protection_이충용_V1 0.ppt [호환 모드]

교육2 ? 그림

VOL /2 Technical SmartPlant Materials - Document Management SmartPlant Materials에서 기본적인 Document를 관리하고자 할 때 필요한 세팅, 파일 업로드 방법 그리고 Path Type인 Ph

BSC Discussion 1

Mstage.PDF

SW¹é¼Ł-³¯°³Æ÷ÇÔÇ¥Áö2013

02 C h a p t e r Java

소프트웨어개발방법론

Microsoft PowerPoint - CSharp-10-예외처리

6주차.key

목순 차서 v KM의 현황 v Web2.0 의 개념 v Web2.0의 도입 사례 v Web2.0의 KM 적용방안 v 고려사항 1/29

JUNIT 실습및발표

03.Agile.key

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum

U.Tu System Application DW Service AGENDA 1. 개요 4. 솔루션 모음 1.1. 제안의 배경 및 목적 4.1. 고객정의 DW구축에 필요한 메타정보 생성 1.2. 제품 개요 4.2. 사전 변경 관리 1.3. 제품 특장점 4.3. 부품화형

untitled

MasoJava4_Dongbin.PDF

슬라이드 1

04-다시_고속철도61~80p

Microsoft PowerPoint - Java7.pptx

표준프레임워크로 구성된 컨텐츠를 솔루션에 적용하는 것에 문제가 없는지 확인

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

안드로이드기본 11 차시어댑터뷰 1 학습목표 어댑터뷰가무엇인지알수있다. 리스트뷰와스피너를사용하여데이터를출력할수있다. 2 확인해볼까? 3 어댑터뷰 1) 학습하기 어댑터뷰 - 1 -

PRO1_04E [읽기 전용]

PowerPoint 프레젠테이션

Smart Power Scope Release Informations.pages

<30312DC0CFC1A4C7A52E687770>

07 자바의 다양한 클래스.key

KYO_SCCD.PDF

ICT03_UX Guide DIP 1605

Week3

final_thesis

PowerPoint 프레젠테이션

PowerPoint Presentation

untitled

자바 프로그래밍

PowerPoint 프레젠테이션

목 차

Transcription:

DataBinding lifeisforu@naver.com 최도경

이문서는 MSDN 의내용에대한요약을중심으로작성되었습니다. Data Binding Overview. Markup Extensions and WPF XAML.

What Is Data Binding UI 와 business logic 사이의연결을설정하는 process 이다. Binding 이올바르게설정되면 data 는적절한통지를제공한다.

DataBindingLab sample 첨부한 DataBindingLab.zip 을 download 하여 DataBindingLab.cspro j 를열어라. 이 UI 는 auction item 의 list 를보여준다. 이문서는이 sample 을기반으로하고있다.

Basic Concepts 어떠한요소를 binding 하고있는지와 data source 의속성이어떤지를무시하면, binding 은아래그림과같은 model 을따른다.

Basic Concepts( cont ) Data binding 은기본적으로 binding target 과 binding souce 간의가교역할을한다. 보통각 binding 은 4 개의요소로구성된다 : binding target, target property, binding source, binding source 에서의 path. Target property 는 dependency property 여야만한다. Binding source 는 custom CLR object 여야한다는제약을가지고있지는않다. WPF data binding 은 CLR object 와 XML 형식의 data 를지원한다.

Data Flow 이전그림에서 binding 의 data 흐름이어떻게될것인가를결정할수있다. Binding object 의 Mode property 를설정함으로써이를제어한다.

Data Flow( cont ) Mode 는다음과같은값을가질수있다. OneWay : Source property 가 target property 를자동으로갱신한다. 그러나반대는허용하지않는다. 대부분이 OneWay binding 이다. TwoWay : Source property 가 target property 를자동으로갱신하고, 반대도자동으로수행된다. OneWayToSource : 이는 OneWay 의반대이다. Target property 가 source property 를자동으로갱신한다.

Data Flow( cont ) ( OneWay 와 TwoWay 에대해 )Source 의변경을검출하기위해서는, source 가 INotifyProeprtyChanged 와같은적절한 property 변경통지메커니즘을구핸해야한다. How to : Implement Property Change Notification.

Source Update TwoWay 나 OneWayToSource 는 target property 의변경을듣고, 이를 source 에전달한다. UpdateSourceTrigger property 를통해그시점을조정한다.

Source Update( cont ) UpdateSourceTrigger 는다음과같은값을가질수있다. PropertyChanged : target property 가변경되자마자 source 를갱신한다. LostFocus : target property 가 focus 를잃었을때새로운값으로 source 를갱신한다. Explicit : 사용자가명시적으로 UpdateSource() 라는 method 를호출할때 source 를갱신한다.

Source Update( cont ) UpdateSourceTrigger 의예. UpdateSourceTrigger value When the Source Value Get s Updated LostFocus (default fortext Box.Text) When the TextBox control loses focus Example Scenario for TextB ox A TextBox that is associate d with validation logic (see Data Validation section) PropertyChanged Explicit As you type into thetextbo x When the application calls UpdateSource TextBox controls in a chat room window TextBox controls in an edit able form (updates the sou rce values only when the u ser clicks the submit butto n)

XAML Specific Markup Extension Binding 은 markup 확장이다. 이때문에 markup 확장이무엇인지알필요가있다. 필요성 : Attribute 의 value 는문자열만을받기때문에기능을보완할필요가있다. 그래서 curly brace( {} ) 를사용해이를확장한다.

XAML Specific Markup Extension( cont ) XAML 지정 markup 확장은 x: 라는 prefix 를사용한다. x:type 은 named type 을위한 Type object 를제공한다. 이는 style 이나 template 에서주로사용된다. x:type Markup Extension 을참조하라. x:static 은 static value 를생산한다. Target property 의 value 의 type 으로직접지정되지않지만그 type 에대해평가될수있는 valuetype code entity 로부터오는값이다. x:static Markup Extension 을참조하라.

XAML Specific Markup Extension( cont ) x:null 은 property 의값으로 null 을지정한다. 이는 attribute 나 property element value 로도사용될수있다. x:null Markup Extension 을참조하라. x:array 는 XAML 구문에서일반적인 array 를생성할수있도록지원한다. x:array Markup Extension 을참조하라.

WPF Specific Markup Extension WPF 는다음과같은 markup 확장을제공한다. StaticResoruce 는이미정의된 resource 의값을 property 에제공한다. 이는 XAML load time 에평가된다. StaticResource Markup Extension 을참조하라. DynamicResource 는 runtime 에 resource 에대한참조를설정하도록지연된값을 property 의 value 에제공한다. DynamicResource Markup Extension 을참조하라.

WPF Specific Markup Extension( cont ) Binding 은 property 에값을 bounding 하는 data 를제공한다. 이는 runtime 에수행된다. 이 markup 확장은좀복잡하다. 왜냐하면 data binding 을위한 inline 구문들을가능하게했기때문이다. Binding Markup Extension 을참조하라. RelativeSource 는 Binding 을위한정보를제공한다. Runtime object tree 에서의관계를찾아갈수있도록해준다. RelativeSource Markup Extension 을참조하라.

WPF Specific Markup Extension( cont ) TemplateBinding 은 control template 이 class 의 object-model-defined property 로부터가져오는 templated property 를위한값을사용할수있도록해준다. TemplateBinding Markup Extension 과 Styling with ControlTemplate Sample 을참조하라. 그외에도몇개의 extension 들이있다 : ColorConvertedBitmap, ComponentResourceKey, ThemeDictionary 등.

Creating a Binding Bindnig 을만들기위해서는 Binding object 를사용해야한다. XAML 의 markup 확장을사용할수도있다.

Create a Binding : Specifying the Binding Source 예제에서 DataContext 의 binding source 로 mydatasource 라는 key 를가진 static resource 를 binding 했다. DataContext 는자식 object element 에전파된다. 그러므로 Path 로 ColorName 을지정한다는것은 MyData.ColorName 을사용한다는의미이다.

Creating a Binding : Specifying the Binding Source( cont ) 그렇지않으면다음과같이직접 Source 를지정해주어야만한다. 여러가지방법으로 source 를지정할수있는데, 이는 HowTo : Speicfy the Binding Source 를참조하라.

Creating a Binding : Specifying the Path to Value Source 에는 object 가지정되기때문에, 구체적인 property 를지정하고싶다면 Path 를지정해야한다. XML data 를지정할때는 XPath 를지정할수있다. 구체적인구문은 Path 와 XPath 를참조하라. {Binding} 이라고만쓰면 parent 로부터상속된 DataContext 를사용하겠다는의미이다.

Data Conversion Binding target 과 binding source 의 type 이일치하지않을때 converter 를사용해값이호환되도록만들수있다. CreateBinding section 에서 "Red" 를지정했는데, Background 에값이제대로할당된다. 이는 Brush type 인데 String type 을넣어도동작하는이유는 converter 가지정되어있기때문이다. 예제같은경우에는 default converter 를사용하고있다.

Binding to Collections 보통 collection 을 data 로받는 control 들은 ItemsControl 을상속하고있다. 예를들면 ListBox, ListView, TreeView 등이있다. ItemsCollection 은 ItemsSource property 를가진다.

Binding to Collections 일반 property 들의경우에는 INotifyPropertyChanged 를구현해서 source update 를수행했으나, collection 을위한 property 같은경우에는 INotifyCollectionChanged 를구현하게된다. INotifyCollectionChanged 를구현해놓은것이 ObservableCollection< T > 이다.

Data Conversion( cont ) 만약 default converter 가없다면 custom converter 를만들어야한다. Converter 는 IValueConverter interface 를구현한다.

Example : DateConverter String 과 DateTime 의값을 converting 하기위한 converter.

Example : DateConverter( cont ) XAML 에서다음과같이 converter 를 static resource 로만든다. 그다음 data 를 binding 할때 Converter 를지정한다.

Data Validation 입력한 data 가옳은지판단해야하는경우가있다. 이때 validation rule 을지정할수있다. ValidationRules 를참조하라.

Data Validation( cont ) Validation rule 을지정하려면 ValidationRule class 를상속해 Validate() method 를구현한다.

Data Validation( cont ) 물론만약 bindnig source 가 dependency property 라면 CoerceValue callback 을사용해도된다.

Excercise 회의실예약을위한 program 을구현하라. List 에서 item 을선택해서삭제를할수있어야한다. 회의시간이겹치면 message box 를출력하며제출에실패해야한다.