2. 응용 프로그램 클래스
WPF에서는 공통적인 응용 프로그램의 기능을 응용 프로그램 클래스(Application)로 캡슐화하여 제공하고 있습니다.
2.1 응용 프로그램 클래스
기본적으로 제공하는 WPF 응용 프로그램의 구조를 살펴보기 위해 프로젝트를 만들어 봅시다.
[파일] => [새로만들기] => [프로젝트]를 선택하면 새 프로젝트 창이 뜹니다. 새 프로젝트 창 내부에 프로젝트 형식 항목에서 [Visual C#] => [Windows]를 선택하고 템플릿 항목에서 [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();
}
'프로그래밍 기술 > WPF' 카테고리의 다른 글
[WPF] 4. 탐색 - 4.1.4 NavigationService 이용하기 (0) | 2016.05.24 |
---|---|
[WPF] 4. 탐색 - 4.1.3 Frame 이용하기 (1) | 2016.05.24 |
[WPF] 4. 탐색 - 4.1.2 Hyperlink 사용하여 페이지 이동 (0) | 2016.05.24 |
[WPF] 4. 탐색 - 4.1.1 Page (0) | 2016.05.24 |
[WPF] 3.4 이벤트 처리 (0) | 2016.04.19 |
[WPF] 3.3 Window 기본 속성들 (0) | 2016.04.19 |
[WPF] 3.2 Window 속성 변경하기 (0) | 2016.04.19 |
[WPF] 3.1 통합 개발 환경에서 기본적으로 제공되는 Window 태그와 소스 (0) | 2016.04.19 |
[WPF] 2.2 응용 프로그램 수명 (0) | 2016.04.19 |
[WPF] 1. WPF 개요 (0) | 2016.04.19 |