XAML or HTML

005. System 네임스페이스(System namespace)

XAML 뽀개기

1
xmlns:sys="clr-namespace:System;assembly=mscorlib"
cs

 

XAML 다루다 보면 XAML 안에서 System 네임스페이스를 사용할 일이 간혹 있습니다. 간단한 예제 또는 빠르게 프로토타입을 만들 샘플데이타에 많이 사용됩니다.

 

1
2
3
4
5
6
7
8
9
10
<!--Resource 정의-->
<Grid.Resources>
    <sys:Char x:Key="Char">A</sys:Char>
    <sys:String x:Key="String">Charles</sys:String>
    <sys:Int32 x:Key="Int32">123456789</sys:Int32>
    <sys:Boolean x:Key="Boolean">true</sys:Boolean>
    <sys:DateTime x:Key="DateTime">2018/12/25</sys:DateTime>
    <sys:TimeSpan x:Key="TimeSpan">12:24:55</sys:TimeSpan>
    <sys:DayOfWeek x:Key="DayOfWeek">6</sys:DayOfWeek>
</Grid.Resources>
cs

 

리소스 내에 다양한 데이 타입의 샘플데이타를 추가할 있습니다. 리소스 내에서는 Key 지정이 필수입니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!--목록내 ItemsSource 정의-->
<ListBox>
    <ListBox.ItemsSource>
        <x:Array Type="{x:Type sys:Object}">
            <sys:Char>A</sys:Char>
            <sys:String>Charles</sys:String>
            <sys:Int32>123456789</sys:Int32>
            <sys:Boolean>true</sys:Boolean>
            <sys:DateTime>2018/12/25</sys:DateTime>
            <sys:TimeSpan>12:24:55</sys:TimeSpan>
            <sys:DayOfWeek>6</sys:DayOfWeek>
        </x:Array>
    </ListBox.ItemsSource>
</ListBox>
cs

 

목록형 예제를 만들 경우 빠르게 샘플데이타를 추가할 있습니다. 배열 타입으로 한데 묶어 ItemsSource 정의하기 좋습니다.

 

1
2
3
4
5
6
7
8
9
10
<!--목록내 Items 정의-->
<ListBox Grid.Column="1">
    <sys:Char>A</sys:Char>
    <sys:String>Charles</sys:String>
    <sys:Int32>123456789</sys:Int32>
    <sys:Boolean>true</sys:Boolean>
    <sys:DateTime>2018/12/25</sys:DateTime>
    <sys:TimeSpan>12:24:55</sys:TimeSpan>
    <sys:DayOfWeek>6</sys:DayOfWeek>
</ListBox>
cs

 

단순히 Item으로 바로 지정할 있어 빠르게 목록형 예제를 만들 있습니다.

 

1
2
<x:Null/>
<x:Static Member="sys:String.Empty"/>
cs

 

마지막으로 XAML 안에서 Null 빈문자열은 코드로 표현합니다. 이와 관해서는 다른 포스트에서 한번 다룰 계획입니다.

 

1
2
3
4
5
6
7
8
9
10
<!--목록내 Items 정의 : Binding Key-->
<ListBox Grid.Column="2">
    <TextBlock Text="{Binding Source={StaticResource Char}}"/>
    <TextBlock Text="{Binding Source={StaticResource String}}"/>
    <TextBlock Text="{Binding Source={StaticResource Int32}, StringFormat=전화 : \{0:(000)\-000\-0000\}}"/>
    <TextBlock Text="{Binding Source={StaticResource Boolean}}"/>
    <TextBlock Text="{Binding Source={StaticResource DateTime}, StringFormat=날짜 : {0:yyyy/MM/dd}, ConverterCulture=ko-KR}"/>
    <TextBlock Text="{Binding Source={StaticResource TimeSpan}, StringFormat=hh\\:mm}"/>
    <TextBlock Text="{Binding Source={StaticResource DayOfWeek}}"/>
</ListBox>
cs

 

이전 리소스에서 추가한 샘플데이타는 위와 같은 방법으로 사용합니다. StringFormat을 이용해 서식을 변경할 있어 매우 유용합니다. ConverterCulture는 덤입니다.

 

 

저는 실제 업무에서 디자인뷰에만 사용되는 디자인타임 데이타는 방법을 선호하지 않습니다. 저는 주로 XAML View 짝을 이루는 ViewModel.cs 이름을 따라 DesignViewModel.cs 만들어 런타임과 디자인타임 데이타를 각각 분리해 관리하는 것을 선호합니다. 위에서 알아본 간단한 방법들은 빠르게 태스트 예제 제작시 주로 사용됩니다.


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