[Silverlight] Element to Element Binding
2009. 11. 17. 08:21ㆍWEB/Silverlight
Silverlight 3에서 새로 추가된 기능 중 하나가 바로 이 Element to Element Bidning입니다. 이 기능은 특정 Element의 속성 값을 다른 Element에서 Binding을 통해 사용할 수 있도록 하는 기능입니다. 다음의 예제를 본다면 쉽게 이해하실 수 있습니다.
예제
위의 예제를 보시면 CheckBox Control이 TextBox Control을 활성화 시키고, TextBox Control의 내용이 TextBlock의 크기나 색을 변화시키는 것을 확인하실 수 있습니다.
위 예제는 C#코드를 이용하지 않고 모두 Element To Element Binding를 이용한 예제입니다. 이 기능을 CodeBehind에서 C#으로 구현하기 위해서는 보통 컨트롤별로 Event를 생성하고 수십줄의 코드를 작성해야하지만 Element To Element Binding를 이용하면 아래 소스 처럼 간편하게 직관적으로 코드를 작성하실 수 있습니다.소스코드
<StackPanel x:Name="LayoutRoot"> <StackPanel Orientation="Horizontal"> <CheckBox x:Name="chkEnable" Content="입력하기" /> <TextBlock Text=" 텍스트 크기 입력 : " FontWeight="Bold" /> <TextBox x:Name="tbxAmount" IsEnabled="{Binding IsChecked, ElementName=chkEnable}" Width="100" /> <TextBlock Text=" 텍스트 색 입력 : " FontWeight="Bold" /> <TextBox x:Name="tbxColor" IsEnabled="{Binding IsChecked, ElementName=chkEnable} Width="100" /> </StackPanel> <Border BorderBrush="Silver" BorderThickness="3"> <TextBlock FontSize="{Binding Text, ElementName=tbxAmount}" Foreground="{Binding Text, ElementName=tbxColor}" Text="텍스트 크기" /> </Border> </StackPanel>
위의 코드에서 TextBox와 TextBlock의 각 부분에 존재하는 모든 Binding 구문이 Element To Element Binding을 사용하고 있습니다. 소스처럼 {Binding Property명, ElementName=Element명}으로 간단하게 Element To Element Binding를 사용하실 수 있습니다.
이 기능은 DataGrid에서 DataTemplate내부의 컨트롤이 부모 DataGrid를 참조할 수 없다는 제약이 있습니다. 이 문제는 공개적으로 Issue이며 언젠가는 꼭 수정되리라 믿고 있습니다.
'WEB > Silverlight' 카테고리의 다른 글
[Silverlight] Custom Control 작성법 (0) | 2010.05.21 |
---|---|
[Silverlight] 'ServiceReferences.ClientConfig'을(를) 열 수 없습니다. (0) | 2010.04.15 |
[Silverlight] Create CheckBoxList in Silverlight (0) | 2009.11.16 |
[Silverlight] Textbox 돋보기 기능 Behavior (0) | 2009.11.06 |
[Silverlight] Font Family 변경하기 (0) | 2009.11.06 |