Skip to content

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

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

패널

특징

 겹침

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

Favorite site

기초

Tutorials