다음을 통해 공유


Windows Forms 및 WPF 속성 매핑

Windows Forms 및 WPF 기술에는 두 가지 서로 유사 하지만 다른 속성 모델이 포함 됩니다. 속성 매핑은 두 아키텍처 간의 상호 운용성을 지원하며 다음과 같은 기능을 제공합니다.

  • 호스트 환경의 관련 속성 변경 내용을 호스트된 컨트롤 또는 요소에 쉽게 매핑할 수 있습니다.

  • 가장 일반적으로 사용되는 속성을 매핑하기 위한 기본 처리를 제공합니다.

  • 기본 속성을 쉽게 제거, 재정의 또는 확장할 수 있습니다.

  • 호스트의 속성 값 변경 내용이 자동으로 검색되고 호스트된 컨트롤 또는 요소로 변환됩니다.

비고

속성 변경 이벤트는 호스팅 컨트롤 또는 요소 계층 구조로 전파되지 않습니다. 직접 설정, 스타일, 상속, 데이터 바인딩 또는 속성 값을 변경하는 다른 메커니즘으로 인해 속성의 로컬 값이 변경되지 않는 경우 속성 변환이 수행되지 않습니다.

요소의 속성과 컨트롤의 속성을 사용하여 속성 매핑에 액세스합니다.

WindowsFormsHost 요소를 사용하는 속성 매핑

WindowsFormsHost 요소는 다음 변환 테이블을 사용하여 기본 WPF 속성을 Windows Forms의 동등한 속성으로 변환합니다.

Windows Presentation Foundation 호스팅 윈도우 폼즈 (Windows Forms) 상호 운용 동작
Background

(System.Windows.Media.Brush)
BackColor

(System.Drawing.Color)
The WindowsFormsHost 요소는 호스트된 컨트롤의 BackColor 속성과 호스트된 컨트롤의 BackgroundImage 속성을 설정합니다. 매핑은 다음 규칙을 사용하여 수행됩니다.

- Background이(가) 단색인 경우 변환되어 호스트된 컨트롤의 BackColor 속성을 설정하는 데 사용됩니다. BackColor 속성은 호스트된 컨트롤에 설정되지 않습니다. 왜냐하면 호스트된 컨트롤이 BackColor 속성의 값을 상속할 수 있기 때문입니다. 참고: 호스트된 컨트롤은 투명도를 지원하지 않습니다. BackColor에 할당된 색상은 완전히 불투명해야 하며, 알파 값은 0xFF여야 합니다.

- Background가 단색이 아닌 경우, WindowsFormsHost 컨트롤은 Background 속성에서 비트맵을 만듭니다. 호스팅된 컨트롤의 BackgroundImage 속성에 이 비트맵을 WindowsFormsHost 컨트롤이 할당합니다. 투명도와 유사한 효과를 제공합니다. 참고: 이 동작을 재정의하거나 Background 속성 매핑을 제거할 수 있습니다.
Cursor Cursor 기본 매핑이 다시 할당되지 않았다면 WindowsFormsHost 컨트롤은 상위 항목 계층 구조를 따라 Cursor 속성이 설정된 상위 항목을 찾을 때까지 탐색합니다. 이 값은 가장 가까운 해당 Windows Forms 커서로 변환됩니다.

기본적으로 ForceCursor 속성에 대한 매핑이 재할당되지 않았다면, 탐색은 ForceCursortrue로 설정된 첫 번째 상위 항목에서 중지됩니다.
FlowDirection

(System.Windows.FlowDirection)
RightToLeft

(System.Windows.Forms.RightToLeft)
LeftToRightNo에 매핑됩니다.

RightToLeftYes에 매핑됩니다.

Inherit가 매핑되지 않았습니다.

FlowDirection.RightToLeftRightToLeft.Yes에 매핑됩니다.
FontStyle 호스트된 컨트롤의 System.Drawing.Font 스타일의 StyleSystem.Drawing.Font WPF 속성 집합은 해당 Font로 변환됩니다. 이러한 속성 중 하나가 변경되면 새 Font가 만들어집니다. Normal: Italic이 사용하지 않도록 설정됩니다. Italic 또는 Oblique: Italic이 사용 설정됩니다.
FontWeight 호스트된 컨트롤의 System.Drawing.FontStyle. WPF 속성 집합은 해당 Font로 변환됩니다. 이러한 속성 중 하나가 변경되면 새 Font가 만들어집니다. Black, Bold, DemiBold, ExtraBold, Heavy, Medium, SemiBold 또는 UltraBold: Bold가 사용 설정됩니다. For ExtraLight, Light, Normal, Regular, Thin, 또는 UltraLight: Bold가 사용하지 않도록 설정됩니다.
FontFamily

FontSize

FontStretch

FontStyle

FontWeight
Font

(System.Drawing.Font)
WPF 속성 집합은 해당 Font로 변환됩니다. 이러한 속성 중 하나가 변경되면 새 Font가 만들어집니다. 호스트된 Windows Forms 컨트롤의 크기는 글꼴 크기에 따라 조정됩니다.

WPF의 글꼴 크기는 1/96인치이고, Windows Forms의 경우 1/72인치입니다. 해당 변환은 다음과 같습니다.

Windows Forms 글꼴 크기 = WPF 글꼴 크기 * 72.0 / 96.0.
Foreground

(System.Windows.Media.Brush)
ForeColor

(System.Drawing.Color)
Foreground 속성 매핑은 다음 규칙을 사용하여 수행됩니다.

- ForegroundSolidColorBrush인 경우 ColorForeColor에 사용합니다.
- ForegroundGradientBrush인 경우, ForeColor의 가장 낮은 오프셋 값에 해당하는 GradientStop의 색상을 사용합니다.
- 다른 Brush 형식의 경우 ForeColor를 변경하지 않고 그대로 둡니다. 즉, 기본값이 사용됩니다.
IsEnabled Enabled IsEnabled가 설정되면 WindowsFormsHost 요소가 호스트된 컨트롤의 Enabled 속성을 설정합니다.
Padding Padding 호스트된 Windows Forms 컨트롤의 Padding 속성의 4개의 모든 값이 동일한 Thickness 값으로 설정됩니다.

- MaxValue보다 큰 값은 MaxValue로 설정됩니다.
- MinValue보다 작은 값은 MinValue로 설정됩니다.
Visibility Visible 에 매핑됩니다. 호스트된 Windows Forms 컨트롤이 표시됩니다. 호스트된 컨트롤의 Visible 속성을 명시적으로 false로 설정하는 것은 권장되지 않습니다.
- CollapsedVisible = true 또는 false에 매핑됩니다. 호스트된 Windows Forms 컨트롤이 그려지지 않고, 해당 영역이 축소됩니다.
- 호스팅된 Windows Forms 컨트롤이 레이아웃의 공간은 차지하지만, 보이지는 않습니다. 이 경우 Visible 속성은 true로 설정됩니다. 호스트된 컨트롤의 Visible 속성을 명시적으로 false로 설정하는 것은 권장되지 않습니다.

컨테이너 요소의 첨부 속성은 WindowsFormsHost 요소에서 완전히 지원됩니다.

자세한 내용은 연습: WindowsFormsHost 요소를 사용하여 속성 매핑을 참조하세요.

부모 속성에 대한 업데이트

대부분의 부모 속성을 변경하면 호스트된 자식 컨트롤에 대한 알림이 발생합니다. 다음 목록에서는 값이 변경될 때 알림을 발생시키지 않는 속성에 대해 설명합니다.

예를 들어 WindowsFormsHost 요소의 Background 속성 값을 변경하는 경우, 호스트된 컨트롤의 BackColor 속성은 변경되지 않습니다.

ElementHost 컨트롤을 사용하여 속성 매핑

다음 속성은 기본 제공 변경 알림을 제공합니다. 이 속성을 매핑할 때는 OnPropertyChanged 메서드를 호출하지 마세요.

  • 자동 크기 조정

  • ** 배경색

  • 배경 이미지

  • 배경 이미지 레이아웃

  • 바인딩 컨텍스트

  • 유효성 검사 원인

  • 컨텍스트 메뉴

  • 컨텍스트 메뉴 스트립

  • 커서

  • 부두

  • 활성화됨

  • 글꼴

  • ForeColor

  • 위치

  • 여백

  • 패딩

  • 부모

  • 지역

  • 오른쪽에서 왼쪽으로

  • 크기

  • TabIndex (탭 순서)

  • 탭 정지

  • 문자 메시지

  • 보이는

ElementHost 컨트롤은 다음 변환 테이블을 사용하여 기본 Windows Forms 속성을 WPF의 대응 속성으로 변환합니다.

자세한 내용은 ElementHost 컨트롤을 사용한 속성 매핑 문서를 참조하세요.

Windows Forms 호스팅 윈도우즈 프레젠테이션 파운데이션 (Windows Presentation Foundation) 상호 운용 동작
BackColor

(System.Drawing.Color)
Background

호스트된 요소(c0)
이 속성을 설정하면 ImageBrush으로 다시 그리기가 강제됩니다. BackColorTransparent 속성이 false(기본값)로 설정된 경우, 이 ImageBrushElementHost 컨트롤의 모양, BackColor, BackgroundImage, BackgroundImageLayout 속성, 및 연결된 페인트 처리기들을 포함하여 기반으로 합니다.

BackColorTransparent 속성이 true로 설정된 경우, ImageBrush는 부모인 ElementHost 컨트롤의 모양에 따라 결정되며, 여기에는 부모의 BackColor, BackgroundImage, BackgroundImageLayout 속성과 연결된 페인트 처리기가 포함됩니다.
BackgroundImage

(System.Drawing.Image)
Background

(System.Windows.Media.Brush) 호스트된 요소의 System.Windows.Media.Brush
이 속성을 설정하면 BackColor 매핑에 대해 설명된 것과 동일한 동작이 발생합니다.
BackgroundImageLayout Background

(System.Windows.Media.Brush에) 호스팅된 요소에 설정된 System.Windows.Media.Brush
이 속성을 설정하면 BackColor 매핑에 대해 설명된 것과 동일한 동작이 발생합니다.
Cursor

(System.Windows.Forms.Cursor)
Cursor

(System.Windows.Input.Cursor)
Windows Forms 표준 커서는 해당 WPF 표준 커서로 변환됩니다. Windows Forms 표준 커서가 아닌 경우 기본값이 할당됩니다.
Enabled IsEnabled Enabled가 설정되면 ElementHost 컨트롤은 호스트된 요소의 IsEnabled 속성을 설정합니다.
Font

(System.Drawing.Font)
FontFamily

FontSize

FontStretch

FontStyle

FontWeight
Font 값은 대응되는 WPF 글꼴 속성 집합으로 변환됩니다.
Bold 호스트된 요소의 FontWeight Boldtrue이면 FontWeightBold로 설정됩니다.

Boldfalse이면 FontWeightNormal로 설정됩니다.
Italic FontStyle가 호스팅된 요소에서 Italictrue일 때, FontStyleItalic로 설정됩니다.

Italicfalse이면 FontStyleNormal로 설정됩니다.
Strikeout TextDecorations에서 호스팅된 요소의 FontWeight TextBlock 컨트롤을 호스팅할 때만 적용됩니다.
Underline TextDecorations 호스팅된 요소에서 TextBlock 컨트롤을 호스트할 때만 적용됩니다.
RightToLeft

(System.Windows.Forms.RightToLeft)
FlowDirection

(FlowDirection)
NoLeftToRight에 매핑됩니다.

YesRightToLeft에 매핑됩니다.
Visible Visibility ElementHost 컨트롤은 다음 규칙을 사용하여 호스팅된 요소의 Visibility 속성을 설정합니다.

- Visible = trueVisible에 매핑됩니다.
- Visible = falseHidden에 매핑됩니다.

참고하십시오

  • ElementHost
  • WindowsFormsHost
  • WPF 및 Win32 상호 운용성
  • WPF 및 Windows Forms 상호 운용성
  • WindowsFormsHost 요소를 사용하여 속성을 매핑하는 단계별 가이드
  • 자습서: ElementHost 컨트롤을 사용하여 속성 매핑