프로그래밍 기술/WPF

[WPF] 2. 응용 프로그램 클래스

언제나휴일 2016. 4. 19. 07:43
반응형

2. 응용 프로그램 클래스

 

 WPF에서는 공통적인 응용 프로그램의 기능을 응용 프로그램 클래스(Application)로 캡슐화하여 제공하고 있습니다.

 

2.1 응용 프로그램 클래스

 

 기본적으로 제공하는 WPF 응용 프로그램의 구조를 살펴보기 위해 프로젝트를 만들어 봅시다.

 

 [파일] => [새로만들기] => [프로젝트]를 선택하면 새 프로젝트 창이 뜹니다. 새 프로젝트 창 내부에 프로젝트 형식 항목에서 [Visual C#] => [Windows]를 선택하고 템플릿 항목에서 [WPF 응용 프로그램]을 선택하세요. 

WPF 응용프로그램 프로젝트 생성

[그림 2.1] WPF 응용프로그램 프로젝트 생성

  

 빌드하여 실행하면 [그림 2.2]처럼 단순화 창이 하나 뜹니다. 아주 간단한 응용 프로그램이 만들어진 것입니다.

디폴트로 만들어지는 응용 프로그램

[그림 2.2] 디폴트로 만들어지는 응용 프로그램 

 

  그리고 프로젝트의 출력 폴더(일반적으로 프로젝트 폴더\bin\Debug)에 응용 프로그램이 만들어집니다. 

[그림 2.3] 출력 폴더에 만들어진 응용 프로그램

 

 WPF 응용 프로그램은 태그를 사용하는 xaml파일과 소스 코드를 사용하는 cs파일을 사용하여 구현합니다. 그리고 MSDN에서는 xaml과 매핑하는 소스 코드 파일을 코드 숨김이라고 말하고 있습니다.

 

 디폴트로 만들어지는 프로젝트에는 두 개의 cs파일과 이들과 매핑하는 xaml 파일로 구성합니다.

 

App.xaml

<Application x:Class="FirstApplication.App"

    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

    StartupUri="Window1.xaml">

    <Application.Resources>

        

    </Application.Resources>

</Application>

 

 App.xaml에는 태그로 Application를 기반으로 파생한 App를 선언합니다. 그리고 시작하는 창을 설정하는 StartupUrl 특성을 Window1.xaml으로 설정한 상태입니다. 그리고 응용에서 사용할 수 있는 자원을 선언할 수 있는 부분이 있습니다.

 

 Application 요소에 xmlns xmlns:x 부분은 참조하는어셈블리에 정의한 형식을 사용하기 위해 필요한 부분입니다. xmlns의 특성에 값을 설정한 부분에 정의한 형식은 바로 형식명을 사용할 수 있고 xmlns:x의 특성에 값을 설정한 부분은 x:를 앞에 붙어 형식명을 사용할 수 있습니다. 이는 서로 다른 어셈블리에 같은 이름의 형식을 사용할 때 이름 충돌을 방지하기 위한 것입니다.

 

App.xaml.cs

using System.Windows;

namespace FirstApplication

{

    /// <summary>

    /// App.xaml에 대한 상호 작용 논리

    /// </summary>

    public partial class App : Application

    {

    }

}

  

 App.xaml.cs App 클래스 정의문을 보면 기반 클래스가 Application임을 알 수 있습니다.

 

 프로젝트에 보이는 소스 코드를 뒤져봐도 진입점 클래스를 찾을 수 없습니다. 프로젝트를 빌드하여 솔루션 탐색기 창툴 바의 [모든 파일 표시]를 선택하면 [obj] => [Debug] => App.g.cs 파일이 존재하는 것을 확인할 수 있습니다. 이 곳에는 응용 프로그램의 진입점 Main 메서드가 있으며 App 개체를 생성하여 초기화를 수행 후에 Run 메서드를 호출하는 것을 확인할 수 있습니다. Run 메서드는 기반 클래스인Application에서 정의되어 있습니다. 

 

public static void Main() 

{

  FirstApplication.App app = new FirstApplication.App();

  app.InitializeComponent();

  app.Run();

} 

반응형