TOC

This article has been localized into Korean by the community.

WPF application:

App.xaml와의 연동

App.xaml은 어플리케이션의 선언부 시작점입니다. Visual Studio는 새로운 WPF 어플리케이션을 시작할 때 App.xaml.cs라는 Code-behind 파일을 자동으로 생성함과 동시에 이 파일도 생성합니다. 이 둘은 많은 일을 하는데, 두 개의 파일이 부분 클래스로 함께 작동하며 markup(XAML)과 Code-behind에서 모두 작업할 수 있도록 합니다.

App.xaml.cs는 WPF 윈도우즈 어플리케이션의 중심 클래스인 Application 클래스를 확장합니다. .NET은 이 클래스로 가서 명령들을 실행하고 요청한 윈도우 또는 페이지를 시작합니다. 또한 이 클래스는 어플리케이션 시작, 예기치 않은 예외 발생 등 중요한 어플리케이션 이벤트들을 주시하는 곳이기도 합니다. 다음 기회에 더 살펴보도록 하겠습니다.

App.xaml 파일에서 가장 흔하게 사용하는 형태는 어플리케이션 전반에서 사용하거나 접근하는 전역 리소스들을 정의하는 것입니다. 그 예로는 global styles가 있습니다. 이 내용은 다음에 상세하게 다룰 것 입니다.

App.xaml의 구조

새로운 어플리케이션을 만들면, 자동으로 다음과 같은 App.xaml이 생성됩니다.

<Application x:Class="WpfTutorialSamples.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="MainWindow.xaml">
    <Application.Resources>

    </Application.Resources>
</Application>

여기서 주목할 만한 중요한 부분은 StartupUri 속성입니다. 이 부분은 어플리케이션이 실행될 때 어떤 윈도우 또는 페이지로 시작하는지 정의하는 부분입니다. 이 경우에는 MainWindow.xaml가 시작됩니다. 만약 다른 윈도우를 시작점으로 사용하고 싶으면, 간단하게 이 부분만 수정하면 됩니다.

종종 당신은 언제, 어떻게 윈도우를 디스플레이 할 지에 대해서 더 많은 요구사항이 있을 수 있습니다. 그 경우에는 StartupUri 속성과 그 값을 제거한 다음에 Code-Behind에서 대신 작업하면 됩니다. 아래에서 증명해보겠습니다.

App.xaml.cs의 구조

새로운 프로젝트에서 매칭되는 App.xaml.cs 파일은 다음과 같습니다 :

using System;
using System.Collections.Generic;
using System.Windows;

namespace WpfTutorialSamples
{
	public partial class App : Application
	{

	}
}

당신은 어떻게 이 클래스가 어플리케이션 레벨의 작업을 수행하는 Application 클래스를 확장하는지 확인할 수 있습니다. 예를 들어서 Startup 이벤트를 감지하면, 수동으로 당신의 시작 윈도우를 생성할 수 있습니다.

다음은 하나의 예시입니다 :

<Application x:Class="WpfTutorialSamples.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
			 Startup="Application_Startup">
    <Application.Resources></Application.Resources>
</Application>

StartupUri를 Startup 이벤트 구독(다른 챕터에서 XAML을 통해 이벤트를 구독하는 것에 대하여 설명하겠습니다)으로 대체했습니다. Code-Behind에서 이 이벤트를 다음과 같이 사용할 수 있습니다 :

using System;
using System.Collections.Generic;
using System.Windows;

namespace WpfTutorialSamples
{
	public partial class App : Application
	{

		private void Application_Startup(object sender, StartupEventArgs e)
		{
			// Create the startup window
			MainWindow wnd = new MainWindow();
			// Do stuff here, e.g. to the window
			wnd.Title = "Something else";
			// Show the window
			wnd.Show();
		}
	}
}

단순히 StartupUri 속성을 이용하는 것에 비해 훨씬 멋진 이 예제를 통해, 시작 윈도우를 보여주기 전에 조작 가능하다는 것을 알 수 있습니다. 여기서 우리는 타이틀을 변경합니다. 이 자체가 대단하게 유용하지는 않습니다. 하지만 당신은 이벤트들을 구독할 수 있고 스플래쉬 스크린을 보여줄 수도 있습니다. 모든 컨트롤을 이용하면 다양한 가능성들이 존재합니다. 우리는 몇 가지 가능성들에 대해서 이 튜토리얼의 다음 장에서 깊게 들여다보겠습니다.