윈도 프리젠테이션 파운데이션

Windows Presentation Foundation
WPF(Windows Presentation Foundation)
원본 작성자마이크로소프트
개발자.NET 파운데이션
초기 릴리즈2006년 11월 21일; 15년(2006-11-21)
안정적 해제
v6.0.2 / 2022년 2월 9일; 30일(2022-02-09)[1]
리포지토리
기록 위치C#, C++, C
운영 체제마이크로소프트 윈도
플랫폼.NET Framework, .네트
유형소프트웨어 프레임워크
면허증MIT 라이선스
웹사이트docs.microsoft.com/en-us/dotnet/framework/wpf/index

WPF(Windows Presentation Foundation, WPF)는 Windows 기반 애플리케이션에서 사용자 인터페이스를 렌더링하기 위해 마이크로소프트가 원래 개발한 무료 오픈 소스 그래픽 서브시스템(WinForms와 유사함)이다.이전에 "Avalon"으로 알려진 WPF는 의 일부로 처음 출시되었다.2006년 NET Framework 3.0.WPF는 DirectX를 사용하며 빌딩 애플리케이션에 일관된 프로그래밍 모델을 제공하려고 시도한다.그것은 사용자 인터페이스를 비즈니스 로직으로부터 분리하고, XULSVG에서 구현되는 것과 같은 유사한 XML 지향 객체 모델과 유사하다.[2]

개요

dot net three point zero windows stack diagram
서브시스템은 의 일부분이다.NET Framework 3.0.

WPF는 XML 기반 언어인 XAML을 사용하여 다양한 인터페이스 요소를 정의하고 연결한다.[3]WPF 애플리케이션은 독립형 데스크톱 프로그램으로 배치되거나 웹사이트에 내장된 오브젝트로 호스팅될 수 있다.WPF는 2D/3D 렌더링, 고정 및 적응 문서, 타이포그래피, 벡터 그래픽, 런타임 애니메이션, 사전 렌더링 미디어 등 다수의 공통 사용자 인터페이스 요소를 통합하는 것을 목표로 한다.그런 다음 이러한 요소들은 다양한 이벤트, 사용자 상호작용 및 데이터 바인딩에 기초하여 연결되고 조작될 수 있다.[4]

WPF 런타임 라이브러리Windows VistaWindows Server 2008 이후 모든 버전의 Microsoft Windows에 포함되어 있다.Windows XP SP2/SP3 및 Windows Server 2003 사용자는 필요한 라이브러리를 선택적으로 설치할 수 있다.[5][6]

Microsoft SilverlightAdobe Flash에 버금가는 내장 웹 컨트롤을 제공하기 위해 WPF의 하위 집합인 기능을 제공했으며, Silverlight 5 이후 Silverlight에서 3D 런타임 렌더링을 지원해왔다.[7]

마이크로소프트는 2018년 12월 4일 마이크로소프트 커넥트 행사에서 GitHub에 대한 오픈소스 프로젝트로 WPF를 출시했다고 발표했다.그것은 MIT 라이선스에 따라 출시된다.Windows Presentation Foundation은 을 대상으로 하는 프로젝트에 사용할 수 있게 되었다.그러나, NET 소프트웨어 프레임워크는 교차 플랫폼이 아니며 여전히 Windows에서만 사용할 수 있다.[8][9]

특징들

다이렉트3D

창과 같은 바탕 화면 항목을 포함한 그래픽은 Direct3D를 사용하여 렌더링된다.이를 통해 GDI의 광범위한 지원 및 획일적인 제어 테마를 비용으로 보다 복잡한 그래픽과 사용자 정의 테마를 표시할 수 있다.윈도우는 일부 그래픽 작업을 GPU로 오프로딩할 수 있다. 이것은 컴퓨터의 CPU의 작업량을 줄인다. GPU는 병렬 픽셀 계산에 최적화되어 있다.이는 넷북 시장처럼 GPU가 반드시 강하지 않은 시장에서 호환성이 떨어지는 비용을 감수하고 스크린 리프레시 속도를 높이는 경향이 있다.

WPF가 벡터 그래픽을 강조함에 따라 대부분의 컨트롤과 요소를 품질이나 픽셀화 손실 없이 확장할 수 있어 접근성이 높아진다.Silverlight를 제외하고 Direct3D 통합을 통해 3D 렌더링을 간소화할 수 있다.또한 인터랙티브 2D 콘텐츠는 기본적으로 3D 표면에 덧씌울 수 있다.[10][11]

데이터 바인딩

  • WPF는 애플리케이션 개발자들이 애플리케이션 내에서 데이터를 바인딩하고 조작할 수 있도록 데이터 서비스 세트를 내장하고 있다.다음과 같은 네 가지 유형의 데이터 바인딩을 지원한다.
    1. 한 번: 클라이언트가 서버의 업데이트를 무시하는 경우.
    2. 한 가지 방법: 클라이언트가 데이터에 대한 읽기 전용 액세스 권한을 가지는 경우.
    3. 두 가지 방법: 클라이언트가 서버에서 데이터를 읽고 쓸 수 있는 위치
    4. 소스에 대한 한 가지 방법: 클라이언트가 데이터에 대한 쓰기 전용 액세스 권한을 가지고 있는 경우
  • LINQ - XML을 포함한 LINQ 쿼리는 데이터 바인딩을 위한 데이터 원본 역할도 할 수 있다.[11]
  • 자료의 제본은 그 자료의 제시와 아무런 관계가 없다.WPF는 데이터 표시를 제어하기 위한 데이터 템플릿을 제공한다.
  • 버튼, 메뉴, 그리드 및 목록 상자 등의 항목을 포함하는 내장형 제어장치 세트가 WPF의 일부로 제공된다.
  • 종속성 속성을 행동 또는 부착 속성에 추가하여 사용자 정의 바인딩 속성을 추가할 수 있다.
  • WPF에서 강력한 개념은 제어장치를 외관으로부터 논리적으로 분리하는 것이다.
    • 조정기의 템플릿을 오버라이드하여 시각적 외관을 완전히 변경할 수 있다.
    • 제어장치는 다른 제어장치나 레이아웃을 포함할 수 있으며, 구성물에 대한 높은 수준의 제어를 가능하게 한다.
  • 보존 모드 그래픽 기능.디스플레이에 재인쇄가 항상 필요한 것은 아니다.

미디어 서비스

  • WPF는 벡터 및 래스터 이미지, 오디오 및 비디오와 같은 공통 미디어 요소와 사용자 인터페이스를 구축하기 위한 통합 시스템을 제공한다.WPF는 애니메이션 시스템과 2D/3D 렌더링 시스템도 제공한다.[12]
  • WPF는 브러시, 펜, 기하학 및 변환의 내장 세트와 함께 2D 그래픽에 대한 형상 원형을 제공한다.
  • WPF의 3D 기능은 Direct3D가 제공하는 전체 기능 세트의 하위 집합이다.그러나 WPF는 사용자 인터페이스, 문서 및 미디어와 같은 다른 기능과의 긴밀한 통합을 제공한다.이를 통해 3D 사용자 인터페이스, 3D 문서 또는 3D 미디어를 보유할 수 있다.
  • BMP, JPEG, PNG, TIFF, Windows Media Photo, GIF, ICON 등 가장 일반적인 이미지 형식에 대한 지원이 있다.
  • WPF는 기본적으로 WMV, MPEG 및 일부 AVI 파일을 지원하지만, 그 아래에서 Windows Media Player를 실행하기 때문에 WPF는 이를 위해 설치된 모든 코덱을 사용할 수 있다.

템플릿

  • WPF에서 당신은 요소의 모양을 직접, 그것의 특성을 통해 또는 템플릿이나 스타일로 간접적으로 정의할 수 있다.가장 간단한 스타일은 단일 속성 속성으로 UI 요소에 적용할 수 있는 속성 설정의 조합이다.템플릿은 WPF 애플리케이션의 일부에 대한 대체 UI를 정의하기 위한 메커니즘이다.WPF(ControlTemplate, DataTemplate, 계층적 데이터Template, ItemsPanelTemplate)에는 몇 가지 템플릿 유형이 있다.

제어 템플릿

  • WPF의 모든 UI 제어의 기초는 새로운 구성 모델이다.모든 조정기는 하나 이상의 '시각'으로 구성된다.이러한 시각적 하위 요소는 WPF에 의해 계층적 시각적 트리로 변화되고 결국 GPU에 의해 렌더링된다. WPF 컨트롤은 표준 윈도우 컨트롤을 위한 래퍼가 아니기 때문에 제어기의 정상적인 동작에 영향을 주지 않고 그들의 UI를 근본적으로 변경할 수 있다.
  • WPF의 모든 조정기에는 시각 트리를 정의하는 기본 '템플릿'이 있다.기본 템플릿은 제어 작성자에 의해 작성되며 다른 개발자와 설계자가 대체할 수 있다.대체 UI는 ControlTemplate 내에 배치된다.

데이터 템플릿

  • WPF는 유연한 데이터 바인딩 시스템을 갖추고 있다.UI 요소는 기본 데이터 모델의 데이터로 채워지고 동기화될 수 있다.WPF는 바인딩된 데이터에 대해 간단한 텍스트를 표시하는 대신 데이터 템플릿(에 대해 교체 가능한 UI)을 적용할 수 있다.시각적 트리로 렌더링하기 전에 NET 유형).

애니메이션

  • WPF는 프레임 기반 접근 방식과 대조적으로 시간 기반 애니메이션을 지원한다.이것은 애니메이션의 속도를 시스템의 작동 방식과 분리시킨다.
  • WPF는 타이머를 통한 낮은 수준의 애니메이션과 애니메이션 클래스를 통한 높은 수준의 애니메이션 추상화를 지원한다.
    • 모든 WPF 요소 속성은 종속 속성으로 등록되는 한 애니메이션화될 수 있다.
    • 애니메이션 클래스는 에 기반을 두고 있다.애니메이션할 속성 유형.예를 들어, 요소의 색 변경은 ColorAnimation 클래스로 하고 요소의 너비(이중으로 입력)를 애니메이션으로 하는 것은 DoubleAnimation 클래스로 한다.
  • 애니메이션은 스토리보드로 묶을 수 있다.
    • 스토리보드는 애니메이션을 시작, 중지, 일시 중지 및 다른 방법으로 조작하는 주요 방법이다.
  • 애니메이션은 사용자 행동을 포함한 외부 이벤트에 의해 촉발될 수 있다.[13]
  • 씬(scene) 다시 그리기가 시간 트리거됨.[13]
  • 프레젠테이션 타이머는 WPF에 의해 초기화 및 관리된다.[13]
  • 애니메이션 효과는 XAML 마크업에서 직접 액세스할 수 있는 개체별 기준으로 정의할 수 있다.[13]

이미징

  • WPF는 기본적으로 개발자가 특정 이미지 파일 형식에 대한 이미지 코덱을 작성할 수 있도록 WIC(Windows Imaging Component) 코드와 API에 액세스할 수 있다.

영향들

  • WPF 3.0은 비주얼에 적용되는 래스터 효과인 비트맵 효과(BitmapEffect 클래스)를 제공한다.이러한 래스터 효과는 GPU에 의해 가속된 하드웨어가 아닌 CPU에서 수행되는 비주얼의 관리되지 않는 코드와 강제 렌더링으로 기록된다. 비트맵 효과는 에서 더 이상 사용되지 않았다.NET 3.5 SP 1
  • .NET Framework 3.5 SP1은 시각에 적용할 수 있는 픽셀 셰이더 2.0 효과인 Effect 클래스를 추가하여 모든 렌더링을 GPU에 유지할 수 있도록 한다.
  • Effect 클래스는 확장 가능하여 응용 프로그램이 자체 쉐이더 효과를 지정할 수 있다.
  • Effect 클래스, 의 .NET 3.5 SP1과 4.0은 BlurEffect와 DropShadowEffect라는 두 가지 기본 제공 효과를 제공한다.이전에 더 이상 사용되지 않는 BitmapEffect 클래스에서 제공하는 OuterGlowBitmapEffect, EmbossBitmapEffect 및 BevelBitmapEffect에 대한 직접 교체가 없다.그러나 이펙트 클래스로 동일한 결과를 얻을 수 있는 다른 방법이 있다.예를 들어 개발자는 ShadowDepth가 0으로 설정된 DropShadowEffect를 사용하여 외부 광선 효과를 얻을 수 있다.
  • BitmapEffect 클래스가 에서 더 이상 사용되지 않는 것으로 표시되었지만.Net Framework 3.5 SP1은 여전히 사용이 허용되었고 이러한 효과는 여전히 올바르게 렌더링될 것이다..Net Framework 4.0에서 BitmapEffect 클래스는 효과적으로 사용되지 않았다. BitmapEffect를 참조하는 코드는 여전히 오류 없이 빌드되지만 실제로 렌더링되는 효과는 없다.

문서.

  • WPF는 기본적으로 페이지 지정 문서를 지원한다.그것은 다음을 제공한다.DocumentViewer고정 레이아웃 문서를 읽기 위한 클래스.FlowDocumentReader클래스는 페이지별 또는 스크롤 가능과 같은 다양한 보기 모드를 제공하며 보기 영역의 크기가 조정될 경우 텍스트를 다시 낮춘다.
  • Native는 XML 용지 사양 문서를 기본적으로 지원한다.
  • 개방형 포장 규칙을 사용한 페이지 지정 문서 읽기 및 쓰기 지원.

텍스트

  • WPF에는 GDI에서는 사용할 수 없었던 다수의 텍스트 렌더링 기능이 포함되어 있다.오픈타입, 트루타입, 오픈타입(Compact Font Format) 글꼴을 지원하는 최초의 마이크로소프트 프로그래밍 인터페이스다.
  • OpenType 타이포그래픽 기능 지원:
  • WPF는 유니코드에서 텍스트를 처리하고, 시스템 로케일 등 글로벌 설정과 무관하게 텍스트를 처리한다.또한 글꼴 이름과 무관하게 쓰기 방향(수평 대 수직)을 처리할 수 있도록 예비 메커니즘이 제공되며, 복합 글꼴로부터 국제 글꼴을 구축하고, 단일 언어 글꼴 그룹을 사용하며, 복합 글꼴을 내장한다.폰트 링크와 폰트 폴백 정보는 복합 폰트 기술을 이용하여 휴대용 XML 파일에 저장된다.[14]XML 파일은 확장자를 가지고 있다.컴포지트퐁.
  • 또한 WPF 텍스트 엔진은 내장 철자 검사를 지원한다.또한 자동 선 간격, 강화된 국제 텍스트, 언어 유도 선 끊기, 하이픈화 및 정당화, 비트맵 효과, 변환, 그림자, 흐릿, 야광, 회전 등의 텍스트 효과 등의 기능도 지원한다.애니메이션 텍스트도 지원되며, 이는 애니메이션 글리프뿐만 아니라 텍스트의 위치, 크기, 색상 및 불투명도의 실시간 변화를 가리킨다.
  • WPF 텍스트 렌더링은 비디오 메모리에서 사전 렌더링된 텍스트의 공격적 캐싱뿐만 아니라 서브픽셀 위치설정, 자연진행 폭, Y방향 안티앨리어싱, 하드웨어 가속 텍스트 렌더링과 같은 ClearType 기술의 진보를 활용한다.[15]기존 WPF 3.x 애플리케이션에서는 ClearType을 끌 수 없다.[16]GDI나 GDI+의 ClearType과 달리 WPF ClearType은 글리프를 픽셀에 수평으로 스냅하지 않아 일부 사용자가 싫어하는 대비가 상실된다.[17]텍스트 렌더링 엔진은 WPF 4.0에서 다시 작성되어 이 문제를 수정하였다.[18]
  • 글리프 캐시 범위는 비디오 카드에 따라 달라진다.DirectX 10 카드는 폰트 글리프를 비디오 메모리에 캐싱한 다음 컴포지션(문자 글리프를 정확한 순서로 조립, 정확한 간격을 두고 구성), 알파 블렌딩(알리에이징 방지 적용), RGB 블렌딩(ClearType의 서브픽셀 컬러 계산)을 전체적으로 하드웨어에서 수행할 수 있다.즉, 원래 글리프만 폰트당 1회 비디오 메모리에 저장하면 된다(Microsoft는 이를 위해 폰트당 2MB의 비디오 메모리가 필요할 것으로 추정함). 그리고 비디오를 포함한 다른 그래픽 위에 안티앨리어싱 텍스트의 표시와 같은 다른 작업도 CPU 부분에 대한 계산 노력 없이 수행할 수 있다. DirectX 9 cards는 알파 블렌딩 글리프만 메모리에 캐시할 수 있으므로 이를 비디오 카드에 전달하기 전에 CPU가 글리프 구성과 알파 블렌딩을 처리해야 한다.부분적으로 렌더링된 이러한 글리프를 캐싱하려면 훨씬 더 많은 메모리가 필요하다(Microsoft는 프로세스당 5MB로 추정).DirectX 9를 지원하지 않는 카드는 하드웨어 가속 텍스트 렌더링 기능이 없다.

상호운용성

  • Windows Forms는 또한 의 사용을 통해서도 가능하다.ElementHost그리고WindowsFormsHost

개발자는 WinForms를 사용할 수 있도록 WPF C# 코드에서 다음을 실행한다.

시스템.창문들형식. 통합.WindowsFormsHost.사용 가능WindowsFormsinterop();

대체입력

  • WPF는 디지털 잉크 관련 기능을 지원한다.
  • WPF 4.0은 윈도 7 이상에서 멀티 터치 입력을 지원한다.

접근성

  • WPF는 개발자들이 접근 가능한 인터페이스를 만들 수 있도록 Microsoft UI Automation을 지원한다.
  • 또한 이 API를 통해 자동화된 테스트 스크립트가 UI와 상호 작용할 수 있다.[19]

XAML

웹개발을 위한 마크업 언어의 성공에 따라, WPF는 XML을 기반으로 하는 eXtensible Application Markup Language(XAML, /zzmm/l/)를 도입한다. XAML은 애플리케이션 사용자 인터페이스 개발의 보다 효율적인 방법으로 설계된다.[20]XAML이 WPF에 제공하는 구체적인 이점은 XAML이 완전히 선언적인 언어라는 점에서 개발자(또는 설계자)가 절차적 프로그래밍을 사용하지 않고 구성요소의 동작과 통합을 기술할 수 있다.XAML에서 애플리케이션 전체가 완전히 구축되는 경우는 드물지만, XAML의 도입으로 애플리케이션 설계자가 애플리케이션 개발 주기에 보다 효과적으로 기여할 수 있게 되었다.XAML을 사용하여 사용자 인터페이스를 개발하면 모델과 뷰의 분리가 가능해져 좋은 아키텍처 원리로 여겨진다.XAML에서 요소와 속성은 기본 API의 클래스와 속성에 매핑된다.

웹 개발에서와 마찬가지로 레이아웃과 특정 테마가 모두 마크업(markup)에 잘 맞지만 XAML은 어느 쪽에도 필요하지 않다.실제로 WPF의 모든 요소는 로 코딩될 수 있다.NET 언어(C#, VB).NET. XAML 코드는 궁극적으로 동일한 방식으로 관리되는 어셈블리로 컴파일될 수 있다.NET 언어는.

건축

WPF 아키텍처.파란색 원소는 윈도우 구성품이고, 갈색 원소는 WPF 구성품이다.

WPF의 아키텍처는 관리 코드네이티브 코드 구성요소를 모두 포함한다.다만 노출된 공용 API는 관리 코드를 통해서만 이용할 수 있다.WPF의 대다수가 관리 코드인 반면, WPF 애플리케이션을 렌더링하는 구성 엔진은 기본 구성 요소다.MIL(Media Integration Layer)로 명명되고milcore.dll. DirectX와 직접 인터페이스하여 2D 및 3D 표면의 기본 지원, 보다 높은 레벨의 애니메이션 구성물을 노출하기 위한 표면의 타이머 제어 콘텐츠 조작, WPF 애플리케이션의 개별 요소를 애플리케이션의 UI를 나타내는 최종 3D "scene"로 합성하여 렌더링한다.스크린으로[21][22]데스크톱 관리자는 또한 데스크톱 및 창 구성에 MIL을 사용한다.[23]미디어 코덱도 관리되지 않는 코드로 구현되며, 다음과 같이 배송된다.windowscodecs.dll.[21] 관리 대상 환경에서 PresentationCore(PresentationCore)는presentationcore.dll)는 MIL에 대한 관리형 포장지를 제공하며, 재산의 설정자와 소비자 사이의 종속성을 알고 있는 재산 시스템, 을 이용하여 메시지 발송 시스템을 포함한 [21]WPF에 대한 핵심 서비스를 구현한다.DispatcherUI 요소의 측정과 같은 레이아웃 시스템을 구현할 수 있는 전문 이벤트 시스템과 서비스를 구현하는 것을 목표로 한다.[22]프레젠테이션프레임워크(PresentationFramework)presentationframework.dll)은 레이아웃, 시간 기록, 스토리보드 기반 애니메이션 및 데이터 바인딩을 포함한 최종 사용자 프레젠테이션 기능을 구현한다.[22]

WPF는 다음으로부터 상속받은 물체에 대한 재산 시스템을 노출한다.DependencyObject는 속성의 소비자들 사이의 의존성을 인식하고 속성의 변화에 근거한 행동을 촉발할 수 있다.속성은 결과에 대해 평가하는 특정 표현식인 하드 코딩된 값이나 식일 수 있다.그러나 초기 릴리스에서는 지원되는 표현식 집합이 닫힌다.[22]속성 값은 상위 개체에서도 상속될 수 있다.WPF 속성은 일부 요소의 속성이 변경될 때마다 바인딩 동작을 호출하는 변경 알림을 지원한다.사용자 정의 동작은 WPF 개체 집합에 걸쳐 속성 변경 알림을 전파하는 데 사용될 수 있다.이것은 배치 시스템에 의해 속성 변경에 대한 레이아웃의 재계산을 촉발하기 위해 사용되며, 따라서 색상과 위치 설정에서 애니메이션 요소에 이르기까지 거의 모든 것을 특성을 설정함으로써 달성할 수 있는 WPF의 선언적 프로그래밍 스타일을 노출한다.[22]이를 통해 키워드와 속성을 WPF 등급과 속성에 직접 바인딩하여 선언 마크업 언어인 XAML로 WPF 애플리케이션을 작성할 수 있다.[24]

WPF 애플리케이션의 인터페이스 요소는 다음 등급으로 유지된다.Visual물건들비주얼 개체는 MIL(미디어 통합 계층)에 의해 유지되는 컴포지션 트리에 대한 관리 인터페이스를 제공한다.WPF의 각 요소는 하나 이상의 구성 노드를 생성하고 트리에 추가한다.컴포지션 노드에는 다른 시각적 속성과 함께 클리핑 및 변환 지침과 같은 렌더링 지침이 포함되어 있다.따라서 전체 애플리케이션은 시스템 메모리의 버퍼에 저장되는 컴포지션 노드의 모음으로 표현된다.주기적으로 MIL은 트리를 걷고 각 노드에서 렌더링 지침을 실행하므로 각 요소를 DirectX 표면으로 합성하여 화면에 렌더링된다.MIL은 화면 뒤쪽에서 전면으로 모든 구성요소가 렌더링되는 화가의 알고리즘을 사용해 슬라이드 등 복잡한 효과를 쉽게 얻을 수 있다.이 렌더링 프로세스는 GPU를 사용하여 하드웨어를 가속한다.[22] 컴포지션 트리는 MIL에 의해 캐시되어 리테이닝 모드 그래픽을 생성하므로 컴포지션 트리의 변경사항은 MIL에 점진적으로 MIL에 전달하면 된다.이것은 또한 스크린 재인쇄를 관리하는 응용 프로그램도 자유롭게 한다; MIL은 필요한 모든 정보를 가지고 있기 때문에 그것 자체를 할 수 있다.애니메이션은 구성 트리에 대한 시간 트리거 변경으로 구현될 수 있다.사용자가 볼 수 있는 측면에서 애니메이션을 선언적으로 지정하고, 속성을 통해 애니메이션 효과를 일부 요소에 설정하고 기간을 지정한다.Code-back은 트리의 특정 노드를 업데이트하며Visual지정된 시간 간격의 중간 상태와 요소의 최종 상태를 모두 나타내는 객체.MIL은 구성요소에 대한 변경사항을 자동으로 렌더링한다.[25]모든 WPF 애플리케이션은 UI 관리를 위한 스레드와 렌더링 및 재인인을 처리하기 위한 백그라운드 스레드의 두 가지 스레드로 시작한다.[26]렌더링 및 재인쇄는 개발자 개입 없이 WPF가 자체적으로 관리한다.UI 스레드는 (예를 들어) 디스패처(Dispatcher)를 포함하고 있다.DispatcherObject() 수행이 필요한 UI 작업의 대기열을 유지 관리한다(트리로서).Visual우선순위별로 정렬된 객체.레이아웃에 영향을 미치는 속성 변경을 포함한 UI 이벤트와 제기된 사용자 상호 작용 이벤트는 이벤트 핸들러를 호출하는 디스패처(Dispatcher)에 대기한다.Microsoft는 새 콘텐츠가 백그라운드 스레드에서 생성되거나 검색되는 동안 이벤트 핸들러에게 응용 프로그램 응답성을 위한 새 콘텐츠만 반영하도록 속성을 업데이트할 것을 권장한다.[26]렌더 스레드는 시각적 트리의 복사본을 집어들고 트리를 걸어 볼 수 있는 구성요소를 계산하여 Direct3D 표면으로 렌더링한다.렌더 스레드는 시각적 트리도 캐싱하므로 트리에 대한 변경 사항만 전달하면 변경된 픽셀만 업데이트된다.WPF는 확장 가능한 배치 모델을 지원한다.레이아웃은 두 단계로 나뉜다.측정하고 정렬하십시오.Measure 단계는 모든 요소를 반복적으로 호출하고 그들이 취할 크기를 결정한다.정렬 단계에서 하위 요소는 부모가 재귀적으로 배열하여 사용 중인 레이아웃 모듈의 레이아웃 알고리즘을 호출한다.[22][27]

도구들

Windows Presentation Foundation 응용 프로그램을 개발하기 위해 많은 개발 도구를 사용할 수 있다.

마이크로소프트 도구

  • 마이크로소프트 비주얼 스튜디오는 비주얼 스튜디오 2008을 시작으로 XAML 에디터와 WPF 비주얼 디자이너의 조합이 담긴 개발자 중심의 IDE이다.
  • Visual Studio 2008 이전에 WPF 디자이너 추가 기능, 코드명 사이다는 WYSIWYG 편집기의 원래 릴리스로 WPF 창, 페이지 및 사용자 컨트롤을 생성하였다.의 Visual Studio 2005 확장 버전으로서 Visual Studio 2005에서 사용 가능했다.WPF의 초기 출시를 위한 NET Framework 3.0 CTP.[28]
  • 마이크로소프트 Visual Studio Express 2008 이상 버전, 특히 Visual C# Express 및 Visual Basic Express도 WPF 디자이너가 통합되어 있다.
  • 마이크로소프트 블렌드는 2D와 3D 그래픽, 텍스트, 양식 콘텐츠로 WPF 애플리케이션 제작을 위한 아트보드를 제공하는 디자이너 중심의 툴이다.다른 툴로 내보낼 수 있는 XAML을 생성하고 마이크로소프트 비주얼 스튜디오와 함께 솔루션(sln 파일)과 프로젝트 형식(csproj, vbproj)을 공유한다.
  • Microsoft Expression DesignXAML로 내보내기 위한 비트맵 및 2D 벡터 그래픽 도구다.
  • XAMLPad는 에 포함된 경량 공구.NET Framework SDK.분할 화면 UI 레이아웃을 사용하여 XAML 파일을 생성하고 렌더링할 수 있다.또한 패널에서 마크업을 트리뷰로 볼 수 있다.

타사 도구

  • 오픈 소스인 SharpDevelop.NET IDE는 WPF 애플리케이션 설계 능력을 포함한다.비주얼 스튜디오의 자유로운 대안이다.[29]
  • PowerBuilder .NET by Sybase는 PowerBuilder 코드, 그래픽 객체를 XAML로 변환하고 애플리케이션을 WPF 타겟으로 전개할 수 있는 4GL 툴이다.[30]
  • Essential Studio for WPF by Syncfusion은 아름다운 고성능 LOB(Line of Business) WPF 애플리케이션을 구축하기 위한 100개가 넘는 현대식 WPF UI 컨트롤로 구성된 패키지다.[31]

배치

WPF의 구축 모델은 독립형XAML 브라우저 응용 프로그램(XBAP, 발음 "ex-bap") 맛을 모두 제공한다.두 가지 유형의 애플리케이션을 구축하기 위한 프로그래밍 모델은 유사하다.

독립 실행형 애플리케이션은 ClickOnce 또는 MSI(윈도우즈 Installer)와 같은 소프트웨어를 사용하여 컴퓨터에 로컬로 설치된 애플리케이션이며 데스크톱에서 실행되는 애플리케이션이다.독립 실행형 응용프로그램은 완전한 신뢰로 간주되며 컴퓨터의 리소스에 대한 완전한 액세스를 가지고 있다.

XAML Browser Applications(XAML Browser Applications)는 웹 브라우저 내에서 호스팅되는 프로그램이다..NET4 XBAP 이전 애플리케이션은 부분 신뢰 샌드박스 환경에서 실행되며, 컴퓨터의 리소스에 대한 전체 액세스 권한이 주어지지 않으며 모든 WPF 기능을 사용할 수 있는 것은 아니다.호스트 환경은 악의적인 애플리케이션으로부터 컴퓨터를 보호하기 위한 것이다.XBAP는 에서 완전히 신뢰할 수 있는 애플리케이션으로 실행될 수 있다.NET 4: 컴퓨터 리소스에 대한 전체 액세스 가능.HTML 페이지에서 XBAP를 시작하거나 그 반대로 시작해도 매끄럽다(보안 또는 설치 프롬프트가 없음).브라우저에서 실행 중인 응용프로그램에 대한 인식을 얻지만, 실제로 브라우저와는 다른 프로세스 외 실행 파일에서 실행된다.

인터넷 익스플로러

개봉일 현재NET Framework 3.0, XBAP는 IE에서만 실행된다.

Firefox 지원

의 발표와 함께.NET Framework 3.5 SP1, XBAP도 포함된 확장을 사용하여 Mozilla Firefox에서 실행된다.2009년 10월 16일, 모질라는 마이크로소프트와 합의하여 원격으로 이용할 수 있는 심각한 보안 취약성 때문에 Firefox 플러그인과 확장을 추가 차단 목록에 추가했다.[32]이틀 후, 그 블록은 제거되었다.윈도우즈 7에서는 Firefox 플러그인이 기본적으로 실행되지 않는다.[33]의 재설치.NET Framework 3.5 SP1은 플러그인을 설치하고 Firefox에 XBAP 애플리케이션 지원을 추가한다.[34]또는 작동하는 Windows XP/Vista 설치에서 Mozilla Firefox의 플러그인 디렉토리로 플러그인 DLL을 하드 복사하면 XBAP 애플리케이션에 대한 지원도 복원된다.[34]WPF 플러그인 DLL은 프레임워크 버전에 따라 다음 디렉터리에 위치한다.

3.5 [SP1]
C:\Windows\Microsoft.NET\Framework\v3.5\WPF\NPWF.dll
4.0
C:\Windows\Microsoft.NET\Framework\WPF\NPWF.dll

마이크로소프트 실버라이트

Silverlight (codenamed WPF/E) is a deprecated cross-browser browser plugin which contained WPF-based technology (including XAML)[35] that provided features such as video, vector graphics, and animations to multiple operating systems including Windows 7, Windows Vista, Windows XP, and Mac OS X. Microsoft sanctioned a limited number of third-party develo특정 Linux 배포를 위해 포트에서 작업하도록 pers.[36]구체적으로는 모질라 파이어폭스, Internet Explorer 6 이상, 구글 크롬 42 이하, 애플 사파리 등의 애드온으로 제공되었다.

.NET 마이크로 프레임워크

.NET Micro Framework는 XAML에 대한 지원은 없지만 WPF에 기반한 GUI 객체 모델을 포함한다.

참조

  1. ^ "v6.0.2". github.com. 2022-02-09. Retrieved 2022-02-19.
  2. ^ Nathan, Adam (2006). Windows Presentation Foundation Unleashed. Pearson Education. ISBN 9780132715621.
  3. ^ dotnet-bot. "XAML Overview (WPF)". msdn.microsoft.com. Retrieved 31 March 2018.
  4. ^ Sells, Chris; Griffiths, Ian (2007). Programming WPF: Building Windows UI with Windows Presentation Foundation. "O'Reilly Media, Inc.". ISBN 9780596554798.
  5. ^ ".NET". Microsoft. Retrieved 31 March 2018.
  6. ^ "Microsoft .NET Framework 3.0 Download". microsoft.com. Retrieved 31 March 2018.
  7. ^ Silverlight 학습 리소스.Silverlight.net.2013-08-29에 검색됨.
  8. ^ Martin, Jeff (4 December 2018). "Microsoft Open Sources WPF, WinForms, and WinUI". InfoQ. Retrieved 2018-12-06.
  9. ^ Hanselman, Scott (4 December 2018). "Announcing WPF, WinForms, and WinUI are going Open Source". Retrieved 2018-12-06.
  10. ^ "Introducing Windows Presentation Foundation". msdn.microsoft.com. Retrieved 31 March 2018.
  11. ^ a b "What's New in WPF 3.5? Here's Fifteen Cool Features..." Retrieved 2007-10-14.
  12. ^ 그래픽멀티미디어.Msdn.Microsoft.com.2013-08-29에 검색됨.
  13. ^ a b c d "Animation overview". MSDN. Retrieved 2007-10-14.
  14. ^ "Typography in Windows Presentation Foundation". msdn.microsoft.com. Retrieved 31 March 2018.
  15. ^ dotnet-bot. "ClearType Overview". msdn.microsoft.com. Retrieved 31 March 2018.
  16. ^ "Disable Antialiasing". social.msdn.microsoft.com. Retrieved 31 March 2018.
  17. ^ "My first thoughts on WPF with VS 2008 RTM and a few questions". social.msdn.microsoft.com. Retrieved 31 March 2018.
  18. ^ WPF 4(VS 2010 및 .NET 4.0 시리즈) - ScottGu의 블로그.Weblogs.asp.net.2013-08-29에 검색됨.
  19. ^ Xansky. "UI Automation Overview". msdn.microsoft.com. Retrieved 31 March 2018.
  20. ^ MacDonald, Matthew (2010). Pro WPF in VB 2010: Windows Presentation Foundation in .NET 4. Apress. ISBN 9781430272403.
  21. ^ a b c Chris Anderson. "MIL information". Retrieved 2007-10-14.
  22. ^ a b c d e f g "WPF Architecture". MSDN. Retrieved 2007-10-14.
  23. ^ Schechter, Greg (June 9, 2006). "How underlying WPF concepts and technology are being used in the DWM". MSDN Blogs. Microsoft. Retrieved 2015-07-27.
  24. ^ "Create a WPF application in Visual Studio". docs.microsoft.com.
  25. ^ "WPF Architecture". docs.microsoft.com.
  26. ^ a b "Threading Model". MSDN. Retrieved 2007-10-14.
  27. ^ "The Layout System". MSDN. Retrieved 2007-10-14.
  28. ^ http://www.microsoft.com/en-au/download/details.aspx?id=23072에서 검색됨.
  29. ^ christophw@icsharpcode.net, Christoph Wille -. "SharpDevelop @ic#code". icsharpcode.net. Retrieved 31 March 2018.
  30. ^ Rich Application Development Tool/Declarative Programming Environment PowerBuilder - Sybase Inc.Sybase.com.2013-08-29에 검색됨.
  31. ^ "WPF controls for your modern Desktop Apps Syncfusion". www.syncfusion.com. Retrieved 2021-02-17.
  32. ^ "NET Framework Assistant Blocked to Disarm Security Vulnerability". Retrieved 2009-10-17.
  33. ^ "Firefox Add-ons to Support .NET Application Deployment". Retrieved 2010-09-07.
  34. ^ a b "Xbap plugin for firefox in Windows 7". Retrieved 2010-09-29.
  35. ^ "The Official Microsoft ASP.NET Site". The Official Microsoft ASP.NET Site. Retrieved 31 March 2018.
  36. ^ "Silverlight 1.0 Released and Silverlight for Linux Announced". Retrieved 2007-09-05.

참고 문헌 목록

외부 링크