1 | xmlns:sys="clr-namespace:System;assembly=mscorlib" | cs |
1 2 3 4 | <Grid.Resources> <sys:String x:Key="HelloName">Charles</sys:String> <sys:DateTime x:Key="Today">12/25/2018</sys:DateTime> </Grid.Resources> | cs |
예제에 필요한 문자열 하나와 DateTime 타입의 리소스를 정의합니다. 데이타 타입 사용을 위해 네임스페이스를 추가합니다.
1 2 | <TextBlock Text="{Binding Source={StaticResource HelloName}}"/> <TextBlock Text="{Binding Source={StaticResource Today}}"/> | cs |
1 2 | <TextBlock Text="{Binding Source={StaticResource HelloName}, StringFormat=Hello {0}!!}"/> <TextBlock Text="{Binding Source={StaticResource Today}, StringFormat=오늘 날짜 : {0:yyyy/MM/dd}}"/> | cs |
StringFormat 속성을 정의해 간단한 문자열을 조합하거나 DateTime 타입의 서식을 빠르게 변경할 수 있습니다. 예제에 사용된 타입 이외 타입에도 사용 가능합니다.
1 2 3 4 5 6 | public class Person { public string Name { get; set; } public int Age { get; set; } } | cs |
다음 멀티바인딩 예제를 위해 Person 클래스를 추가합니다. 멀티바인딩 환경에서도 StringFormat을 정의할 수 있습니다.
1 2 3 | <Grid.Resources> <local:Person x:Key="PersonResource" Name="찰스" Age="22"/> </Grid.Resources> | cs |
추가한 Person 클래스를 리소스에 추가합니다.
1 2 3 4 5 6 7 8 | <TextBlock DataContext="{Binding Source={StaticResource PersonResource}}"> <TextBlock.Text> <MultiBinding StringFormat="Name : {0} / Age : {1}"> <Binding Path="Name"/> <Binding Path="Age"/> </MultiBinding> </TextBlock.Text> </TextBlock> | cs |
리소스는 DataContext 속성에 바인딩 문법으로 사용할 수 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 | <TextBlock> <TextBlock.DataContext> <local:Person Name="Charles" Age="33"/> </TextBlock.DataContext> <TextBlock.Text> <MultiBinding StringFormat="Name : {0} / Age : {1}"> <Binding Path="Name"/> <Binding Path="Age"/> </MultiBinding> </TextBlock.Text> </TextBlock> | cs |
리소스를 사용하지 않는 방법으로 DataContext 속성 요소 안에서 직접 생성합니다. 예제를 위한 것이므로 권장하지 않습니다.
'XAML 뽀개기' 카테고리의 다른 글
006. 클래스와 데이타템플릿(Class & DataTemplate) (0) | 2018.01.16 |
---|---|
005. System 네임스페이스(System namespace) (0) | 2018.01.16 |
004. StringFormat 서식 변경(Change stringformat) (0) | 2018.01.16 |
003. 문자열 공백 유지(Preserve white spaces) (0) | 2018.01.16 |
002. 프로시저 코드 삽입(Embed procedural code) (0) | 2018.01.16 |
001. 중괄호 문자열 표시(Escape Bracket) (0) | 2018.01.16 |