맨위로가기

윈도우 프레젠테이션 파운데이션

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

윈도우 프레젠테이션 파운데이션(WPF)은 마이크로소프트에서 개발한 사용자 인터페이스 프레임워크로, 데스크톱 응용 프로그램의 그래픽 사용자 인터페이스를 구축하는 데 사용된다. Direct3D를 통해 고속의 그래픽을 제공하며, 데이터 바인딩, XAML을 사용한 UI 구성, 템플릿 및 스타일을 지원한다. WPF는 XAML 기반으로 UI를 구성하며, Win32 및 윈도우 폼과의 상호 운용성을 제공한다. WPF는 비주얼 스튜디오, 익스프레션 블렌드, 익스프레션 디자인과 같은 개발 도구를 통해 개발할 수 있으며, 실버라이트, Avalonia, OpenSilver, UWP 등 여러 기술에 영향을 미쳤다.

더 읽어볼만한 페이지

  • 닷넷 프레임워크 - 파워셸
    파워셸은 마이크로소프트에서 개발한 작업 자동화 솔루션으로, 명령줄 셸과 스크립트 언어의 기능을 결합하여 윈도우 시스템 관리를 위해 설계되었으며, .NET 프레임워크 기반의 객체 지향적 특징을 갖고 다양한 플랫폼에서 자동화 스크립트 작성 및 실행, 시스템 구성 관리 등에 활용된다.
  • 닷넷 프레임워크 - 유니버설 윈도우 플랫폼
    유니버설 윈도우 플랫폼(UWP)은 마이크로소프트에서 개발한 애플리케이션 모델로, Windows 10, 11 등 다양한 기기에서 실행되는 앱 개발을 위한 통합 플랫폼이며, Visual Studio를 통해 개발되고 XAML Islands를 통해 기존 WinAPI 기반 애플리케이션에서도 활용 가능하다.
  • 마이크로소프트 윈도우 멀티미디어 기술 - 윈도우 디스플레이 드라이버 모델
    윈도우 비스타부터 도입된 윈도우 디스플레이 드라이버 모델(WDDM)은 성능 향상, 안정성, 새로운 기술 지원을 목표로 개발된 디스플레이 드라이버 아키텍처로, 가상화된 비디오 메모리, GPU 스케줄링, 프로세스 간 Direct3D 표면 공유, 향상된 오류 허용성 등의 특징을 가지며 데스크톱 윈도우 관리자(DWM)를 통한 합성 데스크톱 환경 구현에 필수적이다.
  • 마이크로소프트 윈도우 멀티미디어 기술 - 윈도우 미디어 플레이어
    윈도우 미디어 플레이어는 마이크로소프트에서 개발하여 윈도우 운영 체제에서 오디오, 비디오, 이미지 파일을 재생하는 데 사용되는 미디어 플레이어 응용 프로그램으로, 초기 버전은 '미디어 플레이어'라는 이름으로 출시되어 다양한 기능 추가 및 플랫폼 확장을 거쳤으나 현재는 대부분 지원이 중단되었고, 유럽 연합 경쟁법 위반 사건으로 인해 없는 버전도 출시되었다.
  • 윈도우 비스타 - 퍼블 플레이스
    퍼블 플레이스는 짝맞추기, 손과 눈의 협응력, 암호 해독 등 다양한 종류의 세 가지 미니 게임(퍼블 페어스, 컴피 케이크, 퍼블 숍)으로 구성된 게임 모음집이다.
  • 윈도우 비스타 - 윈도우 디스플레이 드라이버 모델
    윈도우 비스타부터 도입된 윈도우 디스플레이 드라이버 모델(WDDM)은 성능 향상, 안정성, 새로운 기술 지원을 목표로 개발된 디스플레이 드라이버 아키텍처로, 가상화된 비디오 메모리, GPU 스케줄링, 프로세스 간 Direct3D 표면 공유, 향상된 오류 허용성 등의 특징을 가지며 데스크톱 윈도우 관리자(DWM)를 통한 합성 데스크톱 환경 구현에 필수적이다.
윈도우 프레젠테이션 파운데이션 - [IT 관련 정보]에 관한 문서
개요
종류소프트웨어 프레임워크
개발사마이크로소프트
최신 안정화 버전v8.0.5
최신 안정화 버전 출시일2024년 5월 14일
프로그래밍 언어C#, C++, C
운영 체제마이크로소프트 윈도우
플랫폼.NET Framework, .NET
라이선스MIT 라이선스
웹사이트공식 웹사이트

2. 역사

윈도우 프레젠테이션 파운데이션(WPF)은 XML 기반 언어인 XAML을 사용하여 인터페이스 요소를 정의하고 연결하며, C#을 사용하여 프로그램 동작을 정의한다.[3] WPF 응용 프로그램은 독립 실행형 데스크톱 프로그램으로 배포된다.

WPF는 2D/3D 렌더링, 고정 및 적응형 문서, 타이포그래피, 벡터 그래픽, 런타임 애니메이션, 사전 렌더링된 미디어 등 다양한 사용자 인터페이스 요소를 지원한다. 이러한 요소는 다양한 이벤트, 사용자 상호 작용 및 데이터 바인딩을 기반으로 연결하고 조작할 수 있다.[4]

WPF 런타임 라이브러리는 Windows Vista 및 Windows Server 2008 이후 모든 버전의 마이크로소프트 윈도우에 포함되어 있다.[5][6]

2. 1. 개발 배경

WPF 이전의 윈도우 응용 프로그램 개발에서는 사용자 인터페이스를 구현하기 위해 GDI/GDI+, DirectX Graphics(Direct3D 등), DirectX Audio(DirectSound 등), 윈도우 멀티미디어 API, DirectShow와 같은 개별적인 Windows API를 사용해야 했다.[3] 이는 개발 복잡성을 높이고, 일관성 없는 UI를 초래하는 원인이 되었다.

2. 2. .NET Framework 통합

.NET 프레임워크 3.0은 윈도우 비스타에 프리 인스톨되어 있으며, 윈도우 XP SP2 및 윈도우 서버 2003에서도 사용할 수 있다.[6] 윈도우 7에는 .NET 프레임워크 3.5 SP1이 프리 인스톨되어 있다. WPF의 버전 번호는 포함된 .NET 프레임워크의 버전과 동등하게 취급되는 경우가 많다. (.NET 3.0에서 동작하는 것은 WPF 3.0, .NET 3.5/3.5 SP1에서 기능 확장된 것은 WPF 3.5, .NET 4에서 기능 확장된 것은 WPF 4)

윈도우 8에는 .NET 4.5, 윈도우 8.1에는 .NET 4.5.1, 윈도우 10에는 .NET 4.6, 윈도우 11에는 .NET 4.8이 프리 인스톨되어 있어 WPF 4.5 이후 버전을 표준적으로 사용할 수 있다. 그러나 .NET 3.5 이전의 컴포넌트는 기본적으로 활성화되어 있지 않기 때문에 WPF 3.0/3.5 응용 프로그램을 동작시키기 위해서는 명시적인 설치가 필요하다.

2. 3. 오픈 소스 전환

2018년 12월 4일 마이크로소프트는 GitHub에서 WPF를 오픈 소스 프로젝트로 출시한다고 발표했다. 이는 MIT 라이선스로 출시되었다. 윈도우 프레젠테이션 파운데이션은 .NET 소프트웨어 프레임워크를 대상으로 하는 프로젝트에 사용할 수 있게 되었지만, 시스템은 크로스 플랫폼이 아니며 여전히 윈도우에서만 사용할 수 있다.[7][8]

3. 주요 특징

WPF는 XML 기반 언어인 XAML을 사용하여 다양한 인터페이스 요소를 정의하고 연결하며, 프로그램 동작은 C#을 사용하여 정의한다.[3] WPF 응용 프로그램은 독립 실행형 데스크톱 프로그램으로 배포된다.

Visual Studio 2022에서 기본적인 윈도우 프레젠테이션 파운데이션(WPF) UI 응용 프로그램을 개발하는 스크린샷. XAML은 레이아웃을 정의하는 데 사용되고 C#은 대화형 동작을 정의하는 데 사용됩니다.


WPF는 2D/3D 렌더링, 고정 및 적응형 문서, 타이포그래피, 벡터 그래픽, 런타임 애니메이션, 사전 렌더링된 미디어 등 다양한 일반적인 사용자 인터페이스 요소를 지원한다. 이러한 요소는 다양한 이벤트, 사용자 상호 작용 및 데이터 바인딩을 기반으로 연결하고 조작할 수 있다.[4]

WPF 런타임 라이브러리는 Windows Vista 및 Windows Server 2008 이후 모든 버전의 마이크로소프트 윈도우에 포함되어 있다.[5][6]

2018년 12월 4일, 마이크로소프트는 WPF를 MIT 라이선스로 [https://github.com/dotnet/wpf GitHub]에서 오픈 소스 프로젝트로 출시한다고 발표했다. 윈도우 프레젠테이션 파운데이션은 .NET 소프트웨어 프레임워크를 대상으로 하는 프로젝트에 사용할 수 있게 되었지만, 크로스 플랫폼이 아니며 여전히 윈도우에서만 사용할 수 있다.[7][8]

WPF는 다음과 같은 특징을 가진다.

  • 그래픽: Direct3D를 기반으로 하며, 벡터 그래픽을 지원하여 품질 저하나 픽셀화 없이 크기를 조정할 수 있다.[12][13]
  • 데이터 바인딩: 사용자 인터페이스 요소와 프로그램의 객체 모델 간의 변경 사항을 전파하는 기술이다.[14] UI에서 소스로, 소스에서 UI로, 또는 양방향으로 데이터 바인딩 방향을 구성할 수 있다.[14]
  • UI 구성 (XAML): XML 기반의 XAML을 사용하여 UI를 선언적으로 작성하며, C#, VB.NET 등의 .NET 계열 언어로 이벤트 핸들러 등을 작성한다.[3] XAML을 사용하면 UI 디자인과 프로그래밍 로직을 분리할 수 있어 개발 효율성을 높일 수 있다.
  • 텍스트 및 문서: 페이지로 구성된 문서를 기본적으로 지원하며, OpenType, TrueType 등 다양한 텍스트 렌더링 기능을 포함한다.[19][20]
  • 입력: 마우스와 키보드 입력을 지원하며, 스타일러스 펜을 사용한 입력에도 대응한다.[56] 윈도우 7 이상에서는 멀티 터치 입력도 지원한다.[27]
  • 상호 운용성: Win32윈도우 폼과의 상호 운용이 가능하다.[25]

3. 1. 그래픽스

WPF는 벡터 및 래스터 이미지, 오디오, 비디오를 포함한 대부분의 최신 미디어 형식을 지원하며 2D 및 3D 렌더링을 모두 지원한다.[9] 또한 HLSL 픽셀 셰이더와 같은 시각적 요소에 대한 그래픽 효과와 블러 및 그림자 효과와 같은 내장 효과를 구현하는 것을 지원한다.[10][11]

WPF는 주로 벡터 그래픽에 의존하므로, 대부분의 컨트롤과 요소를 품질 저하나 픽셀화 없이 크기를 조정할 수 있다.[12][13]

  • Direct3D를 통해 그림으로써 그래픽 하드웨어상의 GPU에 드로잉 처리의 일부를 맡길 수 있게 된다. 이는 ( GDI / GDI+에서 문제로 꼽히던) CPU의 부하를 줄이는 것으로 이어진다.
  • 벡터 그래픽스를 지원하여 손실 없는 확대 축소를 가능하게 한다.
  • 3D 모델의 렌더링 및 상호 작용을 지원한다. `Viewport3D`와 같은 WPF 프레임워크 자체에 내장된 기능 외에, `D3DImage`와 같은 Direct3D 상호 운용성도 갖추고 있다.
  • 고 DPI 환경을 표준 지원한다(System DPI Aware). Per-Monitor DPI Aware는 .NET 4.6.2 및 Windows 10 Anniversary Update 이후 환경에서 이용 가능하다.

3. 1. 1. 렌더링 티어

모든 그래픽은 Direct3D를 통해 그려진다.

또한 가능하다면 GPU에 의한 하드웨어 가속이 사용된다.

WPF에서는 그래픽스 하드웨어(그래픽 카드/그래픽스 칩)의 DirectX(Direct3D) 지원 수준에 따라 GPU 가속 유무가 결정된다.[52]

WPF 3.5까지는 아래와 같다.

렌더링 티어GPU 가속DirectX 버전
0GPU 가속 없음DirectX 7.0 미만
1일부 GPU 가속 있음DirectX 7.0 이상, DirectX 9.0 미만
2대부분의 기능이 GPU 가속을 사용DirectX 9.0 이상(VRAM 탑재량 120MB 이상, 정점 셰이더 2.0 이상 등)



WPF 4 이후에는 아래와 같이 변경되었다.[53]

렌더링 티어GPU 가속DirectX 버전
0GPU 가속 없음DirectX 9.0 미만
1몇몇 기능은 GPU 가속을 사용DirectX 9.0 이상
2대부분의 기능이 GPU 가속을 사용DirectX 9.0 이상(VRAM 탑재량 120MB 이상, 정점 셰이더 2.0 이상 등)


3. 2. 데이터 바인딩

WPF는 사용자 인터페이스 요소와 프로그램의 객체 모델 간의 변경 사항을 전파하는 데이터 바인딩 기술을 사용한다.[14] 예를 들어, XAML에 정의된 텍스트 블록은 C# 객체에 저장된 문자열 속성에 내용의 ''바인딩''을 할 수 있다.

데이터 바인딩이 발생하는 방향은 구성 가능하다. UI에서 소스로 (예: 텍스트 상자에 입력된 텍스트가 코드의 바인딩된 문자열 속성으로 전파되는 경우), 소스에서 UI로 (예: 시각적 시계가 코드에 저장된 현재 시간을 표시하도록 업데이트되는 경우), 또는 양방향으로 정의할 수 있다.[14]

데이터 바인딩은 타입에 제한이 없으며, 구조체, 클래스, 또는 컬렉션을 바인딩하는 것이 가능하다. 변환기를 사용하여 바인딩 중에 사용되는 값과 타입을 변환할 수 있다. 예를 들어, 텍스트 상자를 시스템 시간 DateTime 속성에 바인딩하지만, 변환기를 사용하여 시간을 형식화된 날짜 및 시간 형식의 현지화된 날짜 문자열로 표시할 수 있다.[14]

기본 제공 컨트롤의 대부분의 속성은 데이터 바인딩할 수 있으며, 사용자 지정 컨트롤은 종속성 속성을 정의하여 바인딩 가능한 속성을 만들 수 있다.[14][15]

WPF 개발자를 위해 마이크로소프트가 권장하는 아키텍처 패턴인 MVVM은 데이터 바인딩에 크게 의존한다.[16] WPF는 다음과 같은 세 종류의 데이터 바인딩을 지원한다.

  • one time: 클라이언트는 서버 상의 업데이트를 무시한다.
  • one way: 클라이언트는 데이터에 대해 쓰기 금지 권한을 갖는다.
  • two way: 클라이언트는 읽기 및 쓰기 권한을 모두 갖는다.

3. 3. UI 구성 (XAML)

XAML은 XML을 기반으로 하는 마크업 언어로, 윈도우 프레젠테이션 파운데이션(WPF)에서 UI를 기술하는 데 사용된다.[3] 이벤트 핸들러 등은 C# 또는 VB.NET 등의 .NET 계열 언어로 작성된다.[3] XAML을 사용하면 UI 디자인과 프로그래밍 로직을 분리할 수 있어 개발 효율성을 높일 수 있다.

WPF는 다음과 같은 UI 구성 요소를 제공한다.

  • 버튼, 메뉴, 리스트 박스 등과 같은 기본적인 내장 컨트롤이 제공된다.
  • 사용자 정의 템플릿을 통해 UI 요소의 기능을 확장하거나 외관을 커스터마이징할 수 있다.
  • XAML 확장 구문(바인딩 마크업 확장[55])을 사용한 데이터 바인딩을 통해, 코드 비하인드를 작성하지 않고도 데이터 소스 또는 사용자 인터페이스 변경의 반영 및 연동을 실현할 수 있다.


XAML을 사용하지 않고 C#, VB.NET, C++/CLI 등의 .NET 언어를 사용하여 UI를 코드 베이스로 조립하는 것도 가능하지만, IDE에 탑재된 XAML 에디터 및 XAML 디자이너를 이용하여 XAML 기반으로 UI를 기술하는 편이 직관적이고 효율적으로 계층 구조를 구축할 수 있다.

다음은 대화형 Hello, World! 프로그램 예시이다.

'''MainWindow.xaml:'''

```xml


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

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

Title="MainWindow" Height="200" Width="300">















```

'''MainWindow.xaml.cs:'''

```c#

using System.Windows;

namespace WpfExample

{

public partial class MainWindow : Window

{

public MainWindow()

{

InitializeComponent();

}

private void SubmitButton_Click(object sender, RoutedEventArgs e)

{

var name = this.NameInputTextBox.Text;

this.ResultTextBlock.Text = $"Hello {name}!";

}

}

}

```

위의 예에서 `MainWindow`라는 UI 요소는 내장 `Window` 클래스의 하위 클래스로 선언된다. XAML 파일은 레이아웃을 정의하며, 이 예에서는 컨트롤의 수직 모음, 사용자에게 지침을 제공하는 텍스트 블록, 사용자가 이름을 입력하는 텍스트 상자, 제출 버튼 및 결과 텍스트 블록으로 구성된다. 버튼을 클릭하면 `SubmitButton_Click` 메서드가 호출되는데, 이는 `.xaml.cs` 파일에 정의되어 있다. 이 함수는 최종 텍스트 블록을 업데이트하여 사용자에게 인사를 건네고 제출된 이름으로 주소를 지정하는 메시지를 포함한다.

3. 4. 텍스트 및 문서

WPF는 페이지로 구성된 문서를 기본적으로 지원한다. 고정 레이아웃 문서를 읽기 위한 DocumentViewer 클래스를 제공한다. FlowDocumentReader 클래스는 페이지별 보기 또는 스크롤 가능한 보기와 같은 다양한 보기 모드를 제공하며, 보기 영역의 크기가 조정되면 텍스트를 재배치한다. 이는 XML Paper Specification 및 Open Packaging Conventions를 모두 지원한다.[19]

WPF는 OpenType, TrueType, OpenType CFF(Compact Font Format) 글꼴을 포함한 여러 텍스트 렌더링 기능을 포함한다. 이는 WPF가 합자, 구식 숫자, 스와시 변형, 분수, 위첨자 및 아래첨자, 소문자, 루비 문자, 글리프 대체, 여러 기준선, 커닝을 포함한 광범위한 텍스트 기능을 지원할 수 있음을 의미한다.[20]

WPF는 유니코드로 텍스트를 처리하며, 시스템 로캘과 같은 전역 설정과 독립적으로 텍스트를 처리한다. 또한 글꼴 이름과 독립적으로 쓰기 방향(가로 대 세로)을 처리하고, 단일 언어 글꼴 그룹을 사용하여 복합 글꼴에서 국제 글꼴을 구축하고, 복합 글꼴을 포함할 수 있도록 대체 메커니즘이 제공된다. 글꼴 연결 및 글꼴 대체 정보는 복합 글꼴 기술을 사용하여 이식 가능한 XML 파일에 저장된다.[21]

WPF 텍스트 엔진은 내장된 맞춤법 검사도 지원한다. 또한 자동 줄 간격, 향상된 국제 텍스트, 언어 기반 줄 바꿈, 하이픈 넣기 및 양쪽 맞춤, 비트맵 효과, 변환, 그림자, 흐림 효과, 글로우, 회전 등과 같은 텍스트 효과와 같은 기능도 지원한다. 애니메이션 텍스트도 지원되며, 이는 애니메이션 글리프뿐만 아니라 텍스트의 위치, 크기, 색상 및 불투명도의 실시간 변경을 의미한다.

WPF 텍스트 렌더링은 서브 픽셀 위치 지정, 자연 진행 너비, Y 방향 안티 앨리어싱, 하드웨어 가속 텍스트 렌더링, 비디오 메모리에 미리 렌더링된 텍스트의 공격적인 캐싱과 같은 ClearType 기술의 발전을 활용한다.[22] ClearType은 이전 WPF 3.x 애플리케이션에서는 끌 수 없다.[23]

3. 5. 입력

WPF는 마우스와 키보드 입력을 지원하며, `System.Windows.Controls.InkCanvas`를 통해 스타일러스 펜을 사용한 입력에도 대응한다[56]。WPF 4 이후는 Windows Forms에서는 표준적으로 지원되지 않는 Windows 터치 API (멀티 터치)에 대한 래퍼를 제공한다[57]윈도우 잉크를 사용한 펜 컴퓨팅[26], 윈도우 7 이상에서 멀티 터치 입력을 지원한다.[27]

3. 6. 상호 운용성

WPF는 Win32(네이티브 코드)와의 상호 운용 기능을 제공한다. Win32 코드 내에서 WPF를 이용하는 것(예: `HwndHost` 클래스의 합성, 어셈블리의 구성 요소 개체 모델 공개 등)도, WPF에서 Win32 코드를 이용하는 것(예: `HwndHost` 클래스의 상속, `D3DImage` 클래스 등)도 가능하다.[25]

윈도우 폼과의 상호 운용도 가능하다(`ElementHost`, `WindowsFormsHost` 클래스). WPF UI에 배치된 Win32 또는 윈도우 폼에 의한 레거시 UI 컨트롤은 GPU 가속이 적용되지 않으므로(GDI/GDI+에 의해 렌더링) 주의해야 한다.[24]

4. 개발 도구

마이크로소프트 비주얼 스튜디오는 XAML 편집기와 WPF 시각적 디자이너를 제공한다.[41] 비주얼 스튜디오 2008 이전에는 코드명 Cider인 WPF 디자이너 애드인이 WPF 윈도, 페이지 및 사용자 정의 컨트롤을 생성하기 위한 최초의 WYSIWYG 편집기였다. 이는 WPF의 초기 릴리스를 위해 ''.NET Framework 3.0 CTP용 비주얼 스튜디오 2005 확장''으로 비주얼 스튜디오 2005에서 사용할 수 있었다.[42]

마이크로소프트 익스프레션 블렌드는 2D 및 3D 그래픽, 텍스트 및 양식 콘텐츠를 사용하여 WPF 애플리케이션을 제작하기 위한 아트보드를 제공하는 디자이너 중심 도구이다. 이 도구는 다른 도구로 내보낼 수 있는 XAML을 생성하며, 마이크로소프트 비주얼 스튜디오와 솔루션(.sln 파일) 및 프로젝트 형식(csproj, vbproj)을 공유한다.

마이크로소프트 익스프레션 디자인은 XAML로 내보내기 위한 비트맵 및 2D 벡터 그래픽 도구이다.

5. WPF 응용 프로그램 예시

WPF는 데스크톱의 윈도 응용 프로그램을 위한 차세대 그래픽 API로 고안되었다. 다음은 WPF로 작성된 마이크로소프트 자사 제품 또는 다른 서드 파티 회사의 주류 응용 프로그램이다.


  • 마이크로소프트 익스프레션 디자인
  • 마이크로소프트 익스프레션 블렌드
  • 야후! 메신저
  • 노키아 뮤직 PC 베타
  • 클리어 오피스 스프레드시트
  • MuvUnder Cover: The Album Art Sleuth


WPF에서 화면 및 기타 UI 요소는 XAML 파일과 확장자가 `.xaml.cs`인 관련 C# 파일의 쌍으로 정의되며, 종종 "코드 비하인드"라고 한다. XAML 파일은 선언적으로 UI 요소의 레이아웃, 내용 및 기타 속성을 정의하는 반면, C# 파일은 상호 작용을 위한 코드 진입점의 노출을 허용한다.[3]

대화형 Hello, World! 프로그램의 기본 예는 다음과 같이 만들 수 있다.

'''MainWindow.xaml:'''

```xml


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

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

Title="MainWindow" Height="200" Width="300">















```

'''MainWindow.xaml.cs:'''

```c#

using System.Windows;

namespace WpfExample

{

public partial class MainWindow : Window

{

public MainWindow()

{

InitializeComponent();

}

private void SubmitButton_Click(object sender, RoutedEventArgs e)

{

var name = this.NameInputTextBox.Text;

this.ResultTextBlock.Text = $"Hello {name}!";

}

}

}

```

위의 예에서 `MainWindow`라는 UI 요소는 내장 `Window` 클래스의 하위 클래스로 선언된다. XAML 파일은 레이아웃을 정의하며, 이 예에서는 컨트롤의 수직 모음이다. 사용자에게 지침을 제공하는 텍스트 블록, 사용자가 이름을 입력하는 텍스트 상자, 제출 버튼 및 결과 텍스트 블록이다. 버튼을 클릭하면 `SubmitButton_Click` 메서드가 호출되는데, 이는 `.xaml.cs` 파일에 정의되어 있다. 이 함수는 최종 텍스트 블록을 업데이트하여 사용자에게 인사를 건네고 제출된 이름으로 주소를 지정하는 메시지를 포함한다.

WPF를 사용하여 제작된 애플리케이션의 예시인 비주얼 스튜디오


WPF는 마이크로소프트의 주력 IDE비주얼 스튜디오 개발에 사용되었으며, 마이크로소프트 익스프레션 블렌드 개발에도 사용되었다.[33]

6. 유사 기술

WPF와 그 레이아웃 언어인 XAML은 여러 다른 UI 프레임워크에 영향을 미쳤다.

2018년에 오픈 소스가 된 후 WPF는 포크되어 Avalonia 프로젝트로 이어졌다. 이는 MIT 라이선스 하에 배포되는 오픈 소스 .NET 크로스 플랫폼 XAML 기반 UI 프레임워크이다. WPF는 윈도우용으로만 설계되었지만, Avalonia는 웹( WebAssembly를 통해), MacOS, 안드로이드, iOS, 리눅스용 빌드도 지원한다. Avalonia의 이름은 WPF의 개발 중 코드명("Avalon")을 참조하며, "WPF의 정신적 후계자"로 자신을 홍보한다.[36] Avalonia는 현재 유니티, 깃허브, 젯브레인스에서 제작한 도구에 사용되고 있다.[37]

OpenSilver는 WPF 솔루션을 웹으로 마이그레이션하는 것을 용이하게 하기 위해 설계된 또 다른 프레임워크이다. WebAssembly를 활용하면 플러그인 없이도 WPF 애플리케이션을 최신 웹 브라우저에서 실행할 수 있다. MIT 라이선스 하에 배포되는 OpenSilver는 WPF와의 호환성을 우선시하며 WPF 적용 범위를 개선하기 위해 기능 세트를 지속적으로 확장하고 있다. 2024년 12월 10일에 출시된 OpenSilver 3.1은[38] WPF 적용 범위에 몇 가지 주요 개선 사항을 추가하여 개발 로드맵의 핵심 목표의 일환으로 WPF 호환성에 대한 약속을 강화했다.

WPF를 위해 처음 설계된 XAML은 UWP[39]와 같이 다른 유사한 마이크로소프트 개발 UI 라이브러리에 채택되었다. UWP는 윈도우 10, 윈도우 11, Xbox One, Xbox Series S/X 애플리케이션용으로 설계되었으며, .NET MAUI (이전의 Xamarin.Forms)는 크로스 플랫폼 네이티브 안드로이드 및 iOS 앱을 제작하기 위해 설계되었다.[40]

XAML 패밀리로서, 몇 가지 WPF 유사 기술이 마이크로소프트에 의해 개발되고 있다.

6. 1. 실버라이트 (Silverlight)

마이크로소프트에서 어도비 플래시의 경쟁 기술로 개발되었다. 실버라이트는 주로 브라우저 상에서의 실행을 상정하고 있는 반면, WPF는 보다 클라이언트 PC 환경에 밀착한 독립 실행형 기술이다. 또한, 실버라이트에서 사용되는 .NET Framework는 기본적으로 .NET Compact Framework와 같은 기능 제한 서브 세트이지만, WPF에서 사용되는 .NET Framework는 윈도우 PC 환경용 풀 세트라는 점도 다르다.[34][35]

6. 2. Windows 스토어 앱 (Windows Store App)

윈도우 8/Windows RT에 도입된 Windows 스토어 앱(WinRT 앱, Modern UI 애플리케이션)은 WPF와 마찬가지로 XAML로 사용자 인터페이스 요소를 기술하며, WPF와 유사한 프로그래밍 모델을 제공한다.[39] C#, VB.NET과 같은 매니지드 언어뿐만 아니라, 네이티브 언어(C++)에서도 이용할 수 있다는 점이 특징이다. 윈도우 10에서 Windows 스토어 앱의 후계로 도입된 UWP 애플리케이션도 기본적으로는 동일하다.

6. 3. 유니버설 윈도우 플랫폼 (UWP)

윈도우 10에서 Windows 스토어 앱의 후계로 도입된 유니버설 윈도우 플랫폼(UWP) 애플리케이션도 기본적으로 XAML을 사용하며, WPF와 유사한 프로그래밍 모델을 제공한다.[39]

참조

[1] 웹사이트 v8.0.5 https://github.com/d[...] 2023-05-14
[2] 웹사이트 What is Windows Presentation Foundation - WPF .NET https://learn.micros[...] 2023-06-02
[3] 웹사이트 XAML Overview (WPF) http://msdn.microsof[...] 2018-03-31
[4] 서적 Programming WPF: Building Windows UI with Windows Presentation Foundation https://books.google[...] "O'Reilly Media, Inc." 2007
[5] 웹사이트 Mailbag: What version of the .NET Framework is included in what version of the OS? https://learn.micros[...] 2007-03-14
[6] 웹사이트 .NET Framework & Windows OS versions - .NET Framework https://learn.micros[...] 2024-04-24
[7] 웹사이트 Microsoft Open Sources WPF, WinForms, and WinUI https://www.infoq.co[...] 2018-12-04
[8] 웹사이트 Announcing WPF, WinForms, and WinUI are going Open Source https://www.hanselma[...] 2018-12-04
[9] 문서 Graphics and Multimedia http://msdn.microsof[...] Msdn.Microsoft.com 2013-08-29
[10] 웹사이트 Effect Class (System.Windows.Media.Effects) https://learn.micros[...]
[11] 웹사이트 4. How WPF and Silverlight Use Shaders - HLSL and Pixel Shaders for XAML Developers [Book] https://www.oreilly.[...]
[12] 웹사이트 Introducing Windows Presentation Foundation http://msdn.microsof[...] 2010-05-11
[13] 웹사이트 What's New in WPF 3.5? Here's Fifteen Cool Features... http://blogs.msdn.co[...] 2007-10-14
[14] 웹사이트 Data binding overview - WPF .NET https://learn.micros[...] 2023-09-02
[15] 웹사이트 Dependency properties overview - WPF .NET https://learn.micros[...] 2022-06-28
[16] 웹사이트 Patterns - WPF Apps With The Model-View-ViewModel Design Pattern https://learn.micros[...] 2016-12-08
[17] 웹사이트 Styles and templates - WPF .NET https://learn.micros[...] 2023-03-03
[18] 웹사이트 Animation Overview - WPF .NET Framework https://learn.micros[...] 2022-03-17
[19] 웹사이트 Documents Overview - WPF .NET Framework https://learn.micros[...] 2023-02-06
[20] 웹사이트 OpenType Font Features - WPF .NET Framework https://learn.micros[...] 2022-08-18
[21] 웹사이트 Typography in Windows Presentation Foundation http://msdn.microsof[...] 2006-11-03
[22] 웹사이트 ClearType Overview http://msdn.microsof[...] 2018-03-31
[23] 웹사이트 Disable Antialiasing http://social.msdn.m[...] 2018-03-31
[24] 웹사이트 WindowsFormsHost.EnableWindowsFormsInterop Method (System.Windows.Forms.Integration) https://learn.micros[...]
[25] 웹사이트 Platform Invoke (P/Invoke) - .NET https://learn.micros[...] 2024-05-10
[26] 웹사이트 Digital ink - Windows Forms and COM vs. WPF https://learn.micros[...]
[27] 웹사이트 MSDN Magazine: UI Frontiers - Multi-Touch Manipulation Events in WPF https://learn.micros[...]
[28] 웹사이트 UI Automation Overview http://msdn.microsof[...] 2018-03-31
[29] 서적 Pro WPF in VB 2010: Windows Presentation Foundation in .NET 4 https://books.google[...] Apress 2010
[30] 서적 https://courses.cs.duke.edu/compsci308/spring24/readings/larman_model_view_separation.pdf Applying UML and Patterns: An introduction to Object-Oriented Analysis and Design and the Unified Process
[31] 웹사이트 FAQ about XBAP supportability https://learn.micros[...]
[32] 웹사이트 IE9 - XBAPs Disabled in the Internet Zone https://learn.micros[...] 2011-03-09
[33] 웹사이트 WPF in Visual Studio 2010 - Part 1 : Introduction https://devblogs.mic[...] 2010-02-16
[34] 웹사이트 Moving to HTML5 Premium Media https://blogs.window[...] 2015-07-02
[35] 웹사이트 Silverlight 5 - Microsoft Lifecycle https://learn.micros[...]
[36] 웹사이트 Avalonia UI - Cross-Platform UI Framework for .NET http://www.avaloniau[...] 2024-05-16
[37] 웹사이트 Avalonia UI - Showcase https://avaloniaui.n[...] 2024-05-23
[38] 웹사이트 OpenSilver 3.1 Unveils Drag-and-Drop XAML Designer for VS Code https://visualstudio[...] Visual Studio Magazine 2024-12-10
[39] 웹사이트 XAML platform - UWP applications https://learn.micros[...] 2022-10-20
[40] 웹사이트 XAML - .NET MAUI https://learn.micros[...] 2023-07-25
[41] 웹사이트 A Tour of WPF in Visual Studio 2008 https://www.codeguru[...] 2009-04-06
[42] 웹사이트 Download details: Microsoft Visual Studio Code Name "Orcas" Community Technology Preview - WinFX™ Development Tools http://www.microsoft[...] 2006-04-15
[43] 웹사이트 Compile an app - WPF .NET Framework https://learn.micros[...] 2022-08-18
[44] 웹사이트 Beta Experience - Avalon https://www.microsof[...]
[45] 웹사이트 WPF(Windows Presentation Foundation)+XAML入門 前編 (1/4):CodeZine(コードジン) https://codezine.jp/[...]
[46] 웹사이트 DirectX 8.0 の紹介 https://docs.microso[...]
[47] 웹사이트 オーディオのリファレンス https://docs.microso[...]
[48] 웹사이트 Windows 11、10、8.1、8 に .NET Framework 3.5 をインストールする - .NET Framework https://learn.micros[...]
[49] 웹사이트 アプリの高DPI(High DPI)対応について 第2回 ~ アプリケーションの高DPIへの対応レベル ~ https://learn.micros[...] 2014-07-24
[50] 웹사이트 Announcing .NET Framework 4.6.2 {{!}} .NET Blog https://devblogs.mic[...]
[51] 웹사이트 .NET Framework 4.6.2 を発表 https://docs.microso[...]
[52] 웹사이트 Graphics Rendering Tiers https://docs.microso[...]
[53] 웹사이트 Graphics Rendering Tiers https://docs.microso[...]
[54] 웹사이트 Windows Presentation Foundation XAML ブラウザ アプリケーションの概要 https://docs.microso[...]
[55] 웹사이트 バインディングのマークアップ拡張機能 https://docs.microso[...]
[56] 문서 デジタル インクを収集する - WPF .NET Framework | Microsoft Docs https://docs.microso[...]
[57] 문서 チュートリアル: 初めてのタッチ アプリケーションの作成 - WPF .NET Framework | Microsoft Docs https://docs.microso[...]
[58] 웹사이트 WPF UIを使ったVisual Studio 2010のスクリーンショットが初披露 https://www.infoq.co[...]
[59] URL http://www.microsoft[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com