WPF 시작하기

먼저 Windows Desktop>WPF 앱(.NET Framework) 프로젝트를 추가하세요.

WPF 앱(.NET Framework) 프로젝트
WPF 앱(.NET Framework) 프로젝트

Window 클래스

창(Window)은 시각적으로 보이는 부분과 사용자와 상호 작용에 의한 동작을 정의합니다.

시각적으로 보이는 영역은 XAML 태그를 이용하여 표현합니다.

구체적인 동작을 구현하는 부분은 C# 파일에서 작성합니다.

하나의 창에 XAML과 C# 파일은 느슨하게 연결 상태이며 C#의 코드를 “코드 숨김”이라고 부릅니다.

처음 만들어진 MainWindow.XAML은 다음과 같습니다.

<Window x:Class="Introduce_WPF_Window.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:Introduce_WPF_Window"
        mc:Ignorable="d"        
        Background="GhostWhite"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        
    </Grid>
</Window>

 

처음 만드어진 MainWindow.cs는 다음과 같습니다.

using System.Windows;

namespace Introduce_WPF_Window
{
    ///
    /// MainWindow.xaml에 대한 상호 작용 논리
    /// 
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
    }
}

Appliation 클래스

WPF 응용이 동작하기 위해서는 Application 클래스가 있어야 합니다. 프로젝트 생성 단계에서 자동으로 App 클래스가 만들어집니다.

다음은 App 클래스의 App.Xaml 부분입니다.

<Application x:Class="Introduce_WPF_Window.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:Introduce_WPF_Window"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
         
    </Application.Resources>
</Application>

Application 태그의 StartupUri 특성(Attribute, C# 문법에 속성이 별도로 있기 때문에 .NET 기술을 다루는 곳에서는 Attribute를 특성이라고 부릅니다.) 값이 시작하는 창입니다.

그리고 시작 창이 닫히면 응용도 같이 끝납니다.

다음은 코드 숨김(App.cs) 부분입니다.

using System.Windows;

namespace Introduce_WPF_Window
{
    /// <summary>
    /// App.xaml에 대한 상호 작용 논리
    /// </summary>
    public partial class App : Application
    {
    }
}