XAML or HTML

004. StringFormat 서식 변경(Change stringformat)

XAML 뽀개기
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 속성 요소 안에서 직접 생성합니다. 예제를 위한 것이므로 권장하지 않습니다.

 



샘플 코드 : https://github.com/CharlesKwon/XamlSimplified