Windows Forms 및 WPF 속성 매핑

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

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

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

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

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

참고

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

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

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

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

Windows Presentation Foundation 호스팅 Windows Forms 상호 운용 동작
Background

(System.Windows.Media.Brush)
BackColor

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

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

- Background가 단색이 아닌 경우 WindowsFormsHost 컨트롤은 Background 속성에서 비트맵을 만듭니다. WindowsFormsHost 컨트롤이 이 비트맵을 호스트된 컨트롤의 BackgroundImage 속성에 할당합니다. 투명도와 유사한 효과를 제공합니다. 참고: 이 동작을 재정의하거나 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.FontStyle. WPF 속성 집합은 해당 Font로 변환됩니다. 이러한 속성 중 하나가 변경되면 새 Font가 만들어집니다. Normal: Italic이 사용하지 않도록 설정됩니다. Italic 또는 Oblique: Italic이 사용 설정됩니다.
FontWeight 호스트된 컨트롤의 System.Drawing.FontStyle. WPF 속성 집합은 해당 Font로 변환됩니다. 이러한 속성 중 하나가 변경되면 새 Font가 만들어집니다. Black, Bold, DemiBold, ExtraBold, Heavy, Medium, SemiBold 또는 UltraBold: Bold가 사용 설정됩니다. 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 - VisibleVisible = true에 매핑됩니다. 호스트된 Windows Forms 컨트롤이 표시됩니다. 호스트된 컨트롤의 Visible 속성을 명시적으로 false로 설정하는 것은 좋지 않습니다.
- CollapsedVisible = true 또는 false에 매핑됩니다. 호스트된 Windows Forms 컨트롤이 그려지지 않고, 해당 영역이 축소됩니다.
- Hidden: 호스트된 Windows Forms 컨트롤이 레이아웃의 공간을 차지하지만 보이지 않습니다. 이 경우 Visible 속성은 true로 설정됩니다. 호스트된 컨트롤의 Visible 속성을 명시적으로 false로 설정하는 것은 좋지 않습니다.

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

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

부모 속성에 대한 업데이트

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

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

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

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

  • AutoSize

  • BackColor

  • BackgroundImage

  • BackgroundImageLayout

  • BindingContext

  • CausesValidation

  • ContextMenu

  • ContextMenuStrip

  • 커서

  • Dock

  • 사용

  • 글꼴

  • ForeColor

  • 위치

  • Margin

  • 안쪽 여백

  • Parent

  • 지역

  • RightToLeft

  • 크기

  • TabIndex

  • TabStop

  • 텍스트

  • 표시

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

자세한 내용은 연습: ElementHost 컨트롤을 사용하여 속성 매핑을 참조하세요.

Windows Forms 호스팅 Windows Presentation Foundation 상호 운용 동작
BackColor

(System.Drawing.Color)
Background

호스트된 요소의 (System.Windows.Media.Brush)
이 속성을 설정하면 ImageBrush로 다시 칠합니다. BackColorTransparent 속성이 false(기본값)로 설정된 경우 이 ImageBrushBackColor, BackgroundImage, BackgroundImageLayout 속성과 연결된 페인트 처리기를 포함하여 ElementHost 컨트롤의 모양을 기반으로 합니다.

BackColorTransparent 속성이 true로 설정된 경우 이 ImageBrush는 부모의 BackColor, BackgroundImage, BackgroundImageLayout 속성과 연결된 페인트 처리기를 포함하여 ElementHost 컨트롤의 부모의 모양을 기반으로 합니다.
BackgroundImage

(System.Drawing.Image)
Background

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

호스트된 요소의 (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 TextBlock 컨트롤을 호스트할 때만 적용됩니다.
Underline 호스트되는 요소의 TextDecorations TextBlock 컨트롤을 호스트할 때만 적용됩니다.
RightToLeft

(System.Windows.Forms.RightToLeft)
FlowDirection

(FlowDirection)
NoLeftToRight에 매핑됩니다.

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

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

참고 항목