WPF 주요 기능 및 개념

00·2025년 1월 8일

WPF 개념

WPF는 Windows Presentation Foundation의 약자로, 윈도우 데스크톱 애플리케이션의 사용자 인터페이스(UI)를 만드는 데 사용되는 프레임워크다.

WPF를 사용하면 버튼, 텍스트 박스, 이미지 등 다양한 UI 요소들을 자유롭게 배치하고, 색상, 3D 그래픽, 애니메이션 효과를 추가하여 사용자에게 풍부한 경험을 제공할 수 있다. 마치 그림판이나 포토샵처럼 UI를 화려하게 디자인하고, 다양한 효과를 줄 수 있다.

WPF는 .NET의 일부이므로, C#과 같은 .NET 언어를 사용하여 개발할 수 있으며, .NET API의 다른 요소를 통합하는 애플리케이션을 빌드할 수 있다.
단, .NET은 플랫폼 간 기술이지만 WPF는 Windows에서만 실행된다.

WinForms vs WPF
WPF는 WinForms처럼 GUI(그래픽 유저 인터페이스)를 구축하기 위해 사용한다.
WinForms 만으로도 간단한 프로그램을 만들 수 있지만, 디자인을 만든 후 일일히 코딩과 연결하는 방식인 WinForms로 큰 규모의 프로그램을 만들기 어렵다.
특히 대규모 프로젝트에서 디자인과 코딩의 분업이 필수적이라고 한다. 따라서 WPF에서 디자인은 XAML로하고 코딩은 C#로 하는 것처럼, 디자인과 코딩이 분리되는 방식이 효율적일 것이다.

WPF의 주요 특징

  1. XAML 기반 UI 디자인
    WPF는 XAML(Extensible Application Markup Language, 확장형 마크업 언어)이라는 XML 기반의 마크업 언어를 사용하여 UI를 정의(선언하고 배치)합니다. XAML은 HTML과 유사한 구조를 가지고 있으며, UI 요소들을 계층적으로 구성하고 속성을 설정할 수 있습니다. XAML을 사용하면 UI 디자인과 코드를 분리할 수 있어서 개발 효율성을 높일 수 있습니다.
  2. 다양한 컨트롤
    WPF는 버튼, 텍스트 박스, 콤보 박스, 리스트 박스, 트리 뷰 등 다양한 컨트롤을 제공합니다. 이러한 컨트롤을 사용하여 사용자 인터페이스를 쉽게 구성할 수 있습니다. 또한, 사용자 정의 컨트롤을 만들어서 UI를 더욱 풍부하게 만들 수 있습니다.
  3. 데이터 바인딩
    WPF는 데이터 바인딩 기능을 제공하여 UI 요소와 데이터를 연결할 수 있습니다. 데이터 바인딩을 사용하면 데이터 변경 사항이 UI에 자동으로 반영되고, UI 변경 사항이 데이터에 자동으로 반영됩니다.
  4. 스타일 및 템플릿
    WPF는 스타일과 템플릿 기능을 제공합니다. 스타일은 컨트롤의 모양을 일관성 있게 유지하는 데 사용되고, 템플릿은 컨트롤의 구조를 변경하는 데 사용됩니다. 즉, WPF는 스타일(UI 요소들의 스타일을 지정하는 기능)을 통해 UI 요소의 모양을 일관성 있게 유지하고, 템플릿(UI 요소들의 모양을 사용자 정의 템플릿을 사용하여 변경할 수 있는 기능)을 사용하여 사용자 정의 컨트롤을 만들 수 있습니다.
  5. 그래픽 및 멀티미디어
    WPF는 2D 및 3D 그래픽, 애니메이션, 비디오, 오디오 등 다양한 멀티미디어 기능을 제공합니다. 이러한 기능을 사용하여 화려하고 인터랙티브한 UI를 만들 수 있습니다.
    (1) 해상도 독립성
    WPF는 벡터 기반 렌더링을 사용하기 때문에 해상도에 관계없이 UI가 선명하게 표시됩니다. 즉, 고해상도 모니터에서도 UI가 깨지거나 흐릿하게 보이지 않습니다. 마치 벡터 이미지를 확대해도 이미지가 깨지지 않는 것과 같은 원리입니다.
    (2) 벡터 기반 렌더링 엔진
    WPF는 DirectX를 기반으로 하는 벡터 기반 렌더링 엔진을 사용합니다. DirectX는 3D 그래픽을 처리하는 데 사용되는 기술로, WPF는 DirectX를 사용하여 UI를 렌더링합니다. 이를 통해 2D 그래픽 뿐만 아니라 3D 그래픽, 애니메이션, 특수 효과 등을 UI에 자유롭게 적용할 수 있습니다.
    (3) 최신 그래픽 하드웨어 활용
    WPF는 최신 그래픽 하드웨어를 활용하여 UI를 렌더링합니다. 따라서 그래픽 성능이 뛰어난 컴퓨터에서는 WPF 애플리케이션의 UI가 더욱 부드럽고 빠르게 표시됩니다.

WPF의 장점

  • 화려하고 유연한 UI 디자인: XAML을 사용하여 다양한 UI 요소를 자유롭게 배치하고, 스타일과 템플릿을 사용하여 UI 요소의 모양을 사용자 정의할 수 있습니다.
  • 개발 생산성 향상: XAML을 사용하여 UI 디자인과 코드를 분리하고, 데이터 바인딩을 사용하여 UI와 데이터를 연결함으로써 개발 생산성을 높일 수 있습니다.
  • 높은 성능: WPF는 하드웨어 가속을 사용하여 UI를 렌더링하므로, 높은 성능을 제공합니다.
  • 다양한 기능: WPF는 2D 및 3D 그래픽, 애니메이션, 비디오, 오디오 등 다양한 기능을 제공합니다.

WPF의 활용

WPF는 다양한 윈도우 데스크톱 애플리케이션을 만드는 데 사용됩니다.

  • 업무용 애플리케이션: ERP, CRM, 회계 프로그램 등
  • 멀티미디어 애플리케이션: 이미지 뷰어, 비디오 플레이어, 게임 등
  • 데이터 시각화 도구: 차트, 그래프 등

WPF는 윈도우 데스크톱 애플리케이션 개발을 위한 강력하고 유연한 프레임워크입니다. XAML, 데이터 바인딩, 스타일, 템플릿, 그래픽, 멀티미디어 등 다양한 기능을 제공하여 화려하고 인터랙티브한 UI를 만들 수 있습니다.


WPF 애플리케이션 제작 단계
WPF 프로그램을 만들려면 다음과 같은 단계를 거칩니다.

  1. Visual Studio와 같은 개발 도구를 사용하여 WPF 프로젝트를 생성합니다.
  2. XAML을 사용하여 UI를 디자인합니다.
  3. C#과 같은 프로그래밍 언어를 사용하여 UI의 동작을 구현합니다.
  4. 프로그램을 빌드하고 실행합니다.

System.Windows 네임스페이스에 있는 .NET 형식의 하위 집합
WPF는 System.Windows 네임스페이스에 있는 .NET 형식들을 기반(클래스 인스턴스화, 프로퍼티 설정, 호출 메서드, 이벤트 처리)으로 하지만, '종속성 속성'이나 '라우트된 이벤트'와 같은 프로그래밍 구문이 추가되어 있습니다.

UI 디자인과 코드 분리(Markup and code-behind)
WPF는 웹 개발할 때처럼 화면 디자인과 코드를 분리해서 개발할 수 있도록 해줍니다.
화면 디자인은 XAML이라는 언어를 사용하고, 코드는 C#과 같은 언어를 사용합니다.
이렇게 디자인과 코드를 분리하면 이점이 있습니다.

  1. 개발 및 유지보수 비용 절감: 디자인과 코드가 섞여 있으면 수정할 때 어려움이 많습니다. 분리하면 각 부분을 독립적으로 수정할 수 있어서 편리합니다.
  2. 효율적인 협업: 디자이너는 XAML로 디자인하고, 개발자는 C#으로 코드를 작성하면서 '동시에 작업'할 수 있습니다.
  3. 쉬운 글로벌화: 다른 언어로 애플리케이션을 번역하기 쉬워집니다.

XAML을 사용하면 윈도우 애플리케이션의 UI를 쉽게 디자인할 수 있고, C# 코드를 사용하여 애플리케이션의 기능을 구현할 수 있습니다.

이처럼 WPF는 디자인과 코드를 분리하여 개발할 수 있도록 지원하여 생산성을 높여줍니다.


Markup
XAML(Extensible Application Markup Language, 확장형 마크업 언어)은 애플리케이션의 모양을 선언적으로 구현하는 XML 기반 마크업 언어입니다. XAML은 일반적으로 창, 대화 상자, 페이지 및 사용자 컨트롤을 정의하고 이를 컨트롤, 모양 및 그래픽으로 채우는 데 사용됩니다.
XAML은 XML 기반이므로, XAML를 사용하여 구성하는 UI는 중첩된 요소의 계층 구조로 조립되며, 이를 요소 트리(element tree)라고 합니다. 요소 트리(element tree)는 UI를 만들고 관리하는 논리적이고 직관적인 방법을 제공합니다.
HTML과 유사한 면이 있는데, HTML에서는 등 정해진 태그만을 사용하는 반면에, XML은 개인이 직접 만든 태그를 사용합니다. 다만, <></>로 태크를 열고 닫는 점은 동일합니다.

Code-behind
애플리케이션의 주요 동작은 사용자 상호작용에 응답하는 기능을 구현하는 것입니다. 예를 들어 메뉴나 버튼을 클릭하고 응답으로 비즈니스 로직과 데이터 액세스 로직을 호출합니다. WPF에서 이 동작은 마크업과 연결된 코드로 구현됩니다. 이러한 유형의 코드를 코드 비하인드라고 합니다.

참조

0개의 댓글