개발하는 두더지

[C/C++/C#/UWP] XAML파일을 CS 코드로 대체하기 본문

C,C++

[C/C++/C#/UWP] XAML파일을 CS 코드로 대체하기

덜지 2017. 1. 25. 18:17

엘리먼트나 컨트롤을 항상 XAML에서 인스턴스화할 필요는 없습니다. 대신 코드에서 만들 수 있는데 

특별히 동일한 유형의 개체를 많이 만들어야 할 때 유용합니다. ( 루프순환이 없기때문)

XAML 편집기가 아닌 CS 코드 파일에서 직접 텍스트블럭을 생성해보도록 하겠습니다.



Grid 에 x;Name 속성만 사용합니다. 코드에서 사용할 Key 입니다.

MainPage.xaml

1
2
3
    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" x:Name="contentGrid">
        
    </Grid>
cs



아래 기본 코드에서부터 시작하겠습니다.

MainPage.xaml.cs

1
2
3
4
5
6
7
8
9
10
   public sealed partial class MainPage : Page
    {
        public MainPage()
        {
            this.InitializeComponent();
        }
 
    }
 
 
cs



this.InitializeComponent(); 아래에 다음 코드를 작성합니다.

1
2
3
4
5
6
7
8
9
TextBlock txtblk = new TextBlock();
txtblk.Text = "Hello, Windows 10!";
txtblk.FontFamily = new FontFamily("Times New Roman");
txtblk.FontSize = 96;
txtblk.FontStyle = FontStyle.Italic;
txtblk.Foreground = new SolidColorBrush(Colors.Yellow);
txtblk.HorizontalAlignment = HorizontalAlignment.Center;
txtblk.VerticalAlignment = VerticalAlignment.Center;
contentGrid.Children.Add(txtblk);
cs


MainPage  생성자에서 InitializeComponent 호출 후에 코드를 삽입하는 것에 주목!
InitializeComponent 보다 먼저 TextBlock을 만들수는 있지만, InitializeComponent 후에 Grid에 추가를 해야합니다.
그 호출 이전에는 Grid가 존재하지 않기 때문입니다.


결과




다른 방식으로 TextBlock 만들기

객체 생성시 속성값으로 설정
1
2
3
4
5
6
7
8
9
10
11
            //2
            TextBlock txtblk = new TextBlock
            {
                Text = "Hello, Windows 10!",
                FontFamily = new FontFamily("Times New Roman"),
                FontSize = 96,
                FontStyle = FontStyle.Italic,
                Foreground = new SolidColorBrush(Colors.Yellow),
                HorizontalAlignment = HorizontalAlignment.Center,
                VerticalAlignment = VerticalAlignment.Center
            };
cs


Page 태그에서 XAML의 폰트 관련 속성을 설정하는 방법을 코드로 설정
1
2
3
4
5
6
7
8
9
10
11
            // Page 태그에서 XAML의 폰트속성을 설정하고, TextBlock에서 속성이 상속
            this.FontFamily = new FontFamily("Times New Roman");
            this.FontSize = 96;
            this.FontStyle = FontStyle.Italic;
            this.Foreground = new SolidColorBrush(Colors.Yellow);
            TextBlock txtblk = new TextBlock
            {
                Text = "Hello, Windows 10!",
                HorizontalAlignment = HorizontalAlignment.Center,
                VerticalAlignment = VerticalAlignment.Center
            };
cs



















Comments