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。 若為 Italic 或 Oblique:已啟用 Italic。 |
FontWeight | 裝載的控制項 System.Drawing.Font 上的 Style | 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 中字型大小會以一英吋的九十六分之一表示,而在 Windows Forms 中則以一英吋的七十二分之一表示。 對應的轉換為: Windows Forms 字型大小 = WPF 字型大小 * * 72.0 / 96.0。 |
Foreground (System.Windows.Media.Brush) |
ForeColor (System.Drawing.Color) |
Foreground屬性對應是使用下列規則來執行: - 如果 Foreground 是 SolidColorBrush,請使用 Color 作為 ForeColor。 - 如果 Foreground 是 GradientBrush,請使用 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 = 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
Location
Margin
填補
上層
區域
RightToLeft
大小
TabIndex
TabStop
Text
可見
ElementHost 控制項會使用下列轉譯表格,將預設 Windows Forms 屬性轉譯為其 WPF 對等項目。
如需詳細資訊,請參閱逐步解說:使用 ElementHost 控制項的對應屬性。