본문 바로가기

프로그래밍언어/WPF

WPF 데이터 바인딩

컨트롤 바인딩

아주 간단한 컨트롤 바인딩
<Canvas>
<TextBox Text="this is a textbox" Name="theTextBox" />
<TextBlock Canvas.Top="25" Text="{Binding ElementName=theTextBox, Path=Text}" />
</Canvas>


위와 같은 단순 바인딩은 중괄호{} 안에 binding으로 시작하여 이름, 값 쌍의 바인딩 속성을 입력하여 설정한다
ElementName은 바인딩할 컨트롤의 이름을 설정하고 path는 컨트롤의 어떤 속성 데이터를 바인딩할지를 설정하게 된다
키보드 입력에 따라 즉시 바인딩이 일어나는것을 볼 수 있다


데이터 바인딩이란?

객체, xml, 데이터베이스와 같은 저장 장소에서 데이터를 읽어와 사용자 인터페이스를 구성하는 컨트롤에 출력하는 일
데이터와 컨트롤을 묶어주는 일

데이터 바인딩을 하기 위해서는 저장장소에서 값을 읽어올 객체가 필요한데 이를 Data Source라고 한다


데이터 바인딩은 기본적으로 바인딩 대상가 소스사이의 다리 역할을 한다
대상 속성은 종속성 속성이어야 한다 UIElement 속성 대부분은 종속성 속성이며 읽기 전용 속성을 제외한 대부분의 종속성 속성은 기본적으로 데이터 바인딩을 지원한다

데이터 바인딩은 소스와 타깃이 필요하다 일반적으로 소스는 데이터이며 타깃은 컨트롤이다

XmlDataProvider를 이용한 데이터 바인딩

<?xml version="1.0" encoding="utf-8" ?>
<Colors xmlns="">
<color>blue</color>
<color>black</color>
<color>green</color>
<color>red</color>
</Colors>

<StackPanel>
<StackPanel.Resources>
<XmlDataProvider x:Key="FavoriteColors" Source="XMLFile1.xml">

</XmlDataProvider>
</StackPanel.Resources>
<TextBlock HorizontalAlignment="Center" FontWeight="Bold">
xml example
</TextBlock>
<ListBox Width="200" Height="300" ItemsSource="{Binding Source={StaticResource FavoriteColors}, XPath=/Colors/color}"></ListBox>
</StackPanel>



xml 파일 뿐만 아니라 RSS와 같은 xml 형태로 지원하는 모든 경로를 통해 데이터를 바인딩 할 수 있다

RSS를 통해 XML 데이터를 바인딩한 경우이다
<StackPanel>
<StackPanel.Resources>
<XmlDataProvider x:Key="MyRSS" Source="http://adoguy.com/RSS" />
</StackPanel.Resources>
<TextBlock HorizontalAlignment="Center" FontWeight="Bold">
XML Example
</TextBlock>
<ListBox Width="500" Height="300" ItemsSource="{Binding Source={StaticResource MyRSS}, XPath=//item/title}"></ListBox>
</StackPanel>


데이터베이스 바인딩
대부분의 어플리케이션은 데이터를 데이터베이스에 저장하고 저장된 데이터를 데이터베이스로 부터 가져와 사용자가 원하는 형태로 표현하는 역할을 담당하게 된다

데이터베이스 바인딩은 다음 이시간에....

출처: http://blog.naver.com/terrydev?Redirect=Log&logNo=60046550304





'프로그래밍언어 > WPF' 카테고리의 다른 글

컨트롤에 대해서[WPF 컨트롤]  (0) 2011.07.11
WPF 컨트롤 템플릿  (0) 2011.07.07
WPF 레이아웃  (0) 2011.06.29
WPF(기본적인 개념,아키텍쳐)[XAML이란 무었인가  (0) 2011.06.29
Lan3 WPF Study –step1  (0) 2011.03.31