Windows Form 和 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 的任何色彩都必須完全不透明,且 alpha 值為 0xFF。

- 如果 Background 不是純色,WindowsFormsHost 控制項會從 Background 屬性建立點陣圖。 WindowsFormsHost 控制項會將這個點陣圖指派至裝載的控制項的 BackgroundImage 屬性。 這會提供類似於透明度的效果。 注意事項:您可以覆寫此行為,或移除 Background 屬性對應。
Cursor Cursor 如果預設對應尚未重新指派,WindowsFormsHost 控制項會周遊其上階階層,直到找到具有其 Cursor 屬性集上階為止。 此值會轉譯為最接近的對應 Windows Forms 資料指標。

如果 ForceCursor 屬性的預設對應尚未重新指派,周遊會在第一個上階停止,且將 ForceCursor 設定 true
FlowDirection

(System.Windows.FlowDirection)
RightToLeft

(System.Windows.Forms.RightToLeft)
LeftToRight 對應至 No

RightToLeft 對應至 Yes

Inherit 未對應。

FlowDirection.RightToLeft 對應至 RightToLeft.Yes
FontStyle 裝載的控制項 System.Drawing.Font 上的 Style WPF 屬性集會轉譯成對應的 Font。 當其中一個屬性變更時,就會建立新的 Font。 若為 Normal:已停用 Italic。 若為 ItalicOblique:已啟用 Italic
FontWeight 裝載的控制項 System.Drawing.Font 上的 Style WPF 屬性集會轉譯成對應的 Font。 當其中一個屬性變更時,就會建立新的 Font。 若為 BlackBoldDemiBoldExtraBoldHeavyMediumSemiBoldUltraBoldBold 已啟用。 若為 ExtraLightLightNormalRegularThinUltraLightBold 已停用。
FontFamily

FontSize

FontStretch

FontStyle

FontWeight
Font

(System.Drawing.Font)
WPF 屬性集會轉譯成對應的 Font。 當其中一個屬性變更時,就會建立新的 Font。 裝載的 Windows Forms 控制項會根據字型大小來調整大小。

WPF 中字型大小會以一英吋的九十六分之一表示,而在 Windows Forms 中則以一英吋的七十二分之一表示。 對應的轉換為:

Windows Forms 字型大小 = WPF 字型大小 * * 72.0 / 96.0。
Foreground

(System.Windows.Media.Brush)
ForeColor

(System.Drawing.Color)
Foreground屬性對應是使用下列規則來執行:

- 如果 ForegroundSolidColorBrush,請使用 Color 作為 ForeColor
- 如果 ForegroundGradientBrush,請使用 GradientStop 的色彩加上 ForeColor 的最低位移值。
- 對於任何其他 Brush 類型,讓 ForeColor 保留不變。 這表示會使用預設值。
IsEnabled Enabled 設定 IsEnabled 時,WindowsFormsHost 元素會在裝載的控制項上設定 Enabled 屬性。
Padding Padding 裝載的 Windows Forms 控制項上 Padding 屬性的所有四個值都會設定為相同的 Thickness 值。

- 大於 MaxValue 的值會設定為 MaxValue
- 小於 MinValue 的值會設定為 MinValue
Visibility Visible - Visible 對應至 Visible = true。 裝載的 Windows Forms 控制項是可見的。 不建議將裝載的控制項上的 Visible 屬性明確設定為 false
- Collapsed 對應至 Visible = truefalse。 裝載的 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

  • Location

  • Margin

  • 填補

  • 上層

  • 區域

  • RightToLeft

  • 大小

  • TabIndex

  • TabStop

  • Text

  • 可見

ElementHost 控制項會使用下列轉譯表格,將預設 Windows Forms 屬性轉譯為其 WPF 對等項目。

如需詳細資訊,請參閱逐步解說:使用 ElementHost 控制項的對應屬性

Windows Forms 裝載 Windows Presentation Foundation 互操作行為
BackColor

(System.Drawing.Color)
Background

在裝載的元素上的 (System.Windows.Media.Brush)
設定此屬性會強制使用 ImageBrush 進行重繪。 如果BackColorTransparent屬性設定為false (預設值),則此ImageBrush是以ElementHost控制項的外觀為基礎,包括其BackColorBackgroundImageBackgroundImageLayout屬性,以及任何附加的繪製處理程式。

如果 BackColorTransparent 屬性設定為 true,則 ImageBrush 是以 ElementHost 控制項父代的外觀為基礎,包括父代的 BackColorBackgroundImageBackgroundImageLayout 屬性,以及任何附加的繪製處理程式。
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,則會將 FontWeight 設為 Bold

如果 Boldfalse,則會將 FontWeight 設為 Normal
Italic 裝載的元素上的 FontStyle 如果 Italictrue,則會將 FontStyle 設為 Italic

如果 Italicfalse,則會將 FontStyle 設為 Normal
Strikeout 裝載的元素上的 TextDecorations 僅適用於裝載 TextBlock 控制項時。
Underline 裝載的元素上的 TextDecorations 僅適用於裝載 TextBlock 控制項時。
RightToLeft

(System.Windows.Forms.RightToLeft)
FlowDirection

(FlowDirection)
No 對應至 LeftToRight

Yes 對應至 RightToLeft
Visible Visibility ElementHost 控制項會使用下列規則,在裝載的元素上設定 Visibility 屬性:

- Visible = true 對應至 Visible
- Visible = false 對應至 Hidden

另請參閱