Windows Form 和 WPF 屬性對應
Windows Forms 與 WPF 技術有兩種類似但不同的屬性模型。 「屬性對應」(Property Mapping) 支援兩個架構之間的互通操作,並提供下列功能:
輕鬆將主機環境中的相關屬性變更對應至所裝載的控制項或項目。
提供用以對應最常用屬性的預設處理。
可以輕鬆移除、覆寫或擴充預設屬性。
確保會自動偵測主應用程式 (Host) 上的屬性值變更並加以轉譯成所裝載的控制項或項目。
注意事項 |
---|
屬性變更事件不會在裝載控制項或項目階層中向上傳播。如果屬性的本機值並未因為直接設定、樣式、繼承 (Inheritance)、資料繫結或其他會變更屬性值的機制而變更,則不會執行屬性轉譯。 |
對 WindowsFormsHost 項目使用 PropertyMap 屬性,以及對 ElementHost 控制項使用 PropertyMap 屬性,即可存取屬性對應。
WindowsFormsHost 項目的屬性對應
WindowsFormsHost 項目會根據下列轉譯表,將預設 WPF 屬性轉譯為其 Windows Forms 對等用法。
Windows Presentation Foundation 裝載 |
Windows Form |
互通行為 |
---|---|---|
WindowsFormsHost 項目會設定裝載之控制項的 BackColor 屬性和裝載之控制項的 BackgroundImage 屬性。 系統會使用下列規則來執行對應:
注意事項
裝載的控制項不支援透明度。任何指派給 BackColor 的色彩都必須完全不透明,其 Alpha 值為 0xFF。
注意事項
您可以覆寫這個行為,也可以移除 Background 屬性對應。
|
||
如果尚未重新指派預設對應,則 WindowsFormsHost 控制項會周遊其祖系階層,直到它找到已設定其 Cursor 屬性的祖系為止。 然後會將這個值轉譯成最接近的對應 Windows Forms 游標。 如果尚未重新指派 ForceCursor 屬性的預設對應,則周遊作業會停在 ForceCursor 設定為 true 的第一個祖系上。 |
||
LeftToRight 對應到 No。 RightToLeft 對應到 Yes。 Inherit 沒有對應。 |
||
所裝載控制項 System.Drawing.Font 的 Style |
這組 WPF 屬性會轉譯為對應的 Font。 當其中一個屬性變更時,便會建立新的 Font。 如果是 Normal:Italic 已停用。 如果是 Italic 或 Oblique:Italic 已啟用。 |
|
所裝載控制項 System.Drawing.Font 的 Style |
這組 WPF 屬性會轉譯為對應的 Font。 當其中一個屬性變更時,便會建立新的 Font。 如果是 Black、Bold、DemiBold、ExtraBold、Heavy、Medium、SemiBold 或 UltraBold:Bold 已啟用。 如果是 ExtraLight、Light、Normal、Regular、Thin 或 UltraLight:Bold 已停用。 |
|
這組 WPF 屬性會轉譯為對應的 Font。 當其中一個屬性變更時,便會建立新的 Font。 裝載的 Windows Forms 控制項會根據字型大小而調整大小。 WPF 中的字型大小會以 1/96 英吋表示,而在 Windows Forms 中則以 1/72 英吋表示。 對應的轉換如下: Windows Forms 字型大小 = WPF 字型大小 * 72.0 / 96.0。 |
||
系統是藉由使用下列規則來執行 Foreground 屬性對應:
|
||
設定 IsEnabled 時,WindowsFormsHost 項目會對裝載的控制項設定 Enabled 屬性。 |
||
WindowsFormsHost 項目完全支援容器項目上的附加屬性。
如需詳細資訊,請參閱逐步解說:使用 WindowsFormsHost 項目對應屬性。
更新父屬性
變更大部分的父屬性會導致傳送告知給裝載的子控制項。 下列清單說明其值變更時不會產生告知的屬性。
例如,若您變更 WindowsFormsHost 項目的 Background 屬性值,則所裝載控制項的 BackColor 屬性不會改變。
ElementHost 控制項的屬性對應
下列屬性提供內建變更告知。 對應這些屬性時,請勿呼叫 OnPropertyChanged 方法:
AutoSize
BackColor
BackgroundImage
BackgroundImageLayout
BindingContext
CausesValidation
ContextMenu
ContextMenuStrip
Cursor
Dock
Enabled
Font
ForeColor
Location
Margin
Padding
Parent
Region
RightToLeft
Size
TabIndex
TabStop
Text
Visible
ElementHost 控制項會根據下列轉譯表,將預設的 Windows Forms 屬性轉譯成其 WPF 對等用法。
如需詳細資訊,請參閱逐步解說:使用 ElementHost 控制項對應屬性。
Windows Form 裝載 |
Windows Presentation Foundation |
互通行為 |
---|---|---|
所裝載項目的 (System.Windows.Media.Brush) |
設定這個屬性會強制使用 ImageBrush 重新繪製。 如果 BackColorTransparent 屬性設定為 false (預設值),這個 ImageBrush 就會以 ElementHost 控制項的外觀為基礎,包含其 BackColor、BackgroundImage 及 BackgroundImageLayout 屬性,以及所有附加的繪製處理常式。 如果 BackColorTransparent 屬性設定為 true,則 ImageBrush 會以 ElementHost 控制項的父代 (Parent) 外觀為基礎,包含父代的 BackColor、BackgroundImage 及 BackgroundImageLayout 屬性,以及所有附加的繪製處理常式。 |
|
所裝載項目的 (System.Windows.Media.Brush) |
設定這個屬性會造成針對 BackColor 對應所描述的相同行為。 |
|
所裝載項目的 (System.Windows.Media.Brush) |
設定這個屬性會造成針對 BackColor 對應所描述的相同行為。 |
|
Windows Forms 標準游標會轉譯為對應的 WPF 標準游標。 如果 Windows Forms 不是標準游標,則會指派預設值。 |
||
設定 Enabled 時,ElementHost 控制項會對裝載的項目設定 IsEnabled 屬性。 |
||
Font 值會轉譯成對應的 WPF 字型屬性集。 |
||
所裝載項目的 FontWeight |
如果 Bold 為 true,則會將 FontWeight 設為 Bold。 如果 Bold 為 false,則會將 FontWeight 設為 Normal。 |
|
所裝載項目的 FontStyle |
||
所裝載項目的 TextDecorations |
只有在裝載 TextBlock 控制項時才適用。 |
|
所裝載項目的 TextDecorations |
只有在裝載 TextBlock 控制項時才適用。 |
|
No 對應到 LeftToRight。 Yes 對應到 RightToLeft。 |
||
ElementHost 控制項會使用下列規則,對裝載的控制項設定 Visibility 屬性: |
請參閱
工作
逐步解說:使用 WindowsFormsHost 項目對應屬性