Windows Presentation Foundation
윈도우 프레젠테이션 파운데이션(Windows Presentation Foundation)은 윈도우 기반 응용프로그램에서 사용자 인터페이스를 표시하기 위한 목적으로 마이크로소프트에서 만든 그래픽 서브시스템이다. 과거 아발론(Avalon)이라는 코드명으로 불렸으며 최초에 닷넷 프레임워크 3.0의 일부분으로 발표되었으며, 기존의 그래픽 장치 인터페이스 대신 DirectX를 사용한다. WPF는 응용프로그램 개발을 위한 일관성 있는 프로그래밍 모델을 제공하며 사용자 인터페이스와 비즈니스 로직을 분리해준다. XUL이나 SVG와 같은 XML 기반 객체 모델과 유사하다.
WPF는 다양한 인터페이스 요소들을 정의하고 연결하기 위해 XML 기반의 언어인 XAML을 채용하였다. WPF 응용프로그램은 데스크탑에서 단독으로 실행될 수도 있고 웹사이트에 내장된 객체로 서비스될 수도 있다. WPF는 2D/3D 렌더링, 고정 및 가변 문서, 타이포그래피, 벡터 그래픽스, 실시간 애니메이션, 프리렌더링 미디어와 같은 여러 가지 보편적인 사용자 인터페이스들을 통합하는 것을 목적으로 한다. 이러한 요소들은 다양한 이벤트, 사용자 인터랙션, 그리고 데이터 바인딩에 기반하여 연결 및 처리될 수 있다.
WPF 런타임 라이브러리는 윈도우 비스타 및 윈도우 서버 2008부터 모든 버전의 마이크로소프트 윈도우에 기본적으로 포함되어 있다. 윈도우 XP SP2/SP3 및 윈도우 서버 2003 사용자는 필요한 라이브러리를 선택적으로 설치할 수 있다.
마이크로소프트 실버라이트는 어도비 플래시와 유사한 내장 웹 컨트롤들을 제공하며 이는 대부분 WPF의 일부분에 해당한다. 3D 실시간 렌더링은 실버라이트 5 버전부터 제공되었다.
Categories
System.Windows.Data
- Binding - 바인딩의 정의에 고급 액세스를 제공하여 바인딩 대상 개체의 속성(일반적으로 WPF 요소), 임의 데이터 원본(예: 데이터베이스, XML 파일 또는 데이터가 포함된 개체)을 연결합니다.
System.Windows.Controls
사용자가 애플리케이션과 상호 작용할 수 있는 컨트롤이라는 요소를 만들기 위한 클래스를 제공합니다.
- DataGrid - 사용자 지정 가능한 표의 데이터를 표시하는 컨트롤을 나타냅니다.
- Grid - 열 및 행으로 구성되는 유연한 모눈 영역을 정의합니다.
- Image - 이미지를 표시하는 컨트롤을 나타냅니다.
- RadioButton - 사용자가 선택할 수는 있지만 선택을 취소할 수는 없는 단추를 나타냅니다.
- ScrollViewer - 표시 가능한 다른 요소를 포함할 수 있는 스크롤 가능한 영역을 나타냅니다.
- TextBlock - 작은 양의 유동 콘텐츠를 표시하는 간단한 컨트롤을 제공합니다.
- UserControl - 컨트롤을 만드는 간단한 방법을 제공합니다.
Windows Runtime APIs
Windows.UI.Xaml
- Windows.UI.Xaml 네임스페이스 - Windows UWP applications | Microsoft Learn
- Windows.UI.Xaml.Style - 형식의 인스턴스 간에 공유할 수 있는 속성 setter를 포함합니다. Style은 일반적으로 리소스 컬렉션에서 선언되므로 공유되고 컨트롤 템플릿 및 기타 스타일을 적용하는 데 사용할 수 있습니다.
Transform
Transform은 컨트롤의 실제 속성은 그대로 둔채 모양만 변형해주는 기능이다.
Button 등의 컨트롤 위치를 이동, 크기, 회전 등등의 일을 굉장히 쉽게 할 수 있다. Transform을 이용해 크기를 변경하여도 실제 버튼의 크기는 변경되지 않는다.
- TranslateTransform - 2차원 x-y 좌표계에서 개체를 변환(이동)합니다.
- RotateTransform - 2차원 x-y 좌표계에서 지정한 점을 기준으로 개체를 시계 방향으로 회전합니다.
- ScaleTransform - 개체의 크기를 조정에서 2차원 x-y 좌표계입니다.
- SkewTransform - 개체에 적용되는 2차원 기울이기를 나타냅니다.
- MatrixTransform - 2-D 평면에서 개체 또는 좌표계를 조작하는 데 사용되는 임의의 행렬 유사 변환을 만듭니다.
RenderTransform vs LayoutTransform
RenderTransform과 LayoutTransform의 차이는 Transform 되는 시점이다.
- LayoutTransform - Measure, Arrange
- RenderTransform - Render
Layouts
- [추천] ( C#- WPF ) 기초 이론
패널 | 특징 | 겹침 |
Canvas | 가장 기본적인 패널로 자식 요소를 원하는 위치에 배치할 수 있다. | O |
StackPanel | 가로나 세로 방향으로 자식 요소를 일렬로 정렬한다. | X |
WrapPanel | StackPanel과 비슷하지만 자식 요소를 왼쪽에서 오른쪽으로 차례로 배치하며 크기를 벗어나면 다음 줄에 배치한다. | X |
DockPanel | 각 지정 방향에 자식 요소를 배치한다. | X |
Grid | 가장 강력한 패널로 표 형태로 자식 요소를 배치한다. | O |
Troubleshooting
키-다운(KeyDown) 이벤트 후 포커스가 다른 컴포넌트로 이전되어 연속 키-다운이 안될 경우
포커스를 유지시킨 후 이벤트를 소비했음을 알린다.
private void Page_KeyDown(object sender, KeyEventArgs e)
{
YouComponent.Focus(); // 당신의 컴포넌트에 포커스를 활성화. (필요에 따라 사용)
e.Handled = true; // 이벤트를 처리했음을 알린다. 이후 다른 이벤트 핸들러 호출을 중단한다.
}
See also
- MS
- .NET
- Universal Windows Platform (UWP)
- Windows Presentation Foundation (WPF)
- Avalonia UI - Take your WPF apps to macOS and Linux
- Blend - 컴포넌트 디자이너
- Visual Studio
- XAML
Favorite site
기초
- C#에서 WPF를 사용하는 Hello World 앱 - Visual Studio (Windows) | Microsoft Learn
- [추천] ( C#- WPF ) 기초 이론
- WPF 기초(XAML) - 즐거운 개발을 꿈꾸다..
- (WPF MVVM 일주일만에 배우기)Ⅰ. 첫 .. : 네이버블로그