次の方法で共有


Windows フォームと WPF プロパティのマッピング

Windows フォームと WPF テクノロジには、似ているが異なる 2 つのプロパティ モデルがあります。 プロパティ マッピング は、2 つのアーキテクチャ間の相互運用をサポートし、次の機能を提供します。

  • ホスト環境の関連するプロパティの変更を、ホストされたコントロールまたは要素に簡単にマップできるようにします。

  • 最もよく使用されるプロパティをマッピングするための既定の処理を提供します。

  • 既定のプロパティを簡単に削除、オーバーライド、または拡張できます。

  • ホスト上のプロパティ値の変更が自動的に検出され、ホストされているコントロールまたは要素に変換されるようにします。

手記

プロパティ変更イベントは、ホスティング コントロールまたは要素階層に反映されません。 プロパティの値を変更する直接設定、スタイル、継承、データ バインディング、またはその他のメカニズムのためにプロパティのローカル値が変更されない場合、プロパティ変換は実行されません。

プロパティマッピングにアクセスするには、WindowsFormsHost 要素の PropertyMap プロパティと ElementHost コントロールの PropertyMap プロパティを使用します。

WindowsFormsHost 要素を使用したプロパティ マッピング

WindowsFormsHost 要素は、次の変換テーブルを使用して、既定の WPF プロパティを Windows フォームと同等のプロパティに変換します。

Windows Presentation Foundation ホスティング Windows フォーム 相互運用動作
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 フォーム カーソルに変換されます。

ForceCursor プロパティの既定のマッピングが再割り当てされていない場合、トラバーサルは最初の先祖で停止し、ForceCursortrueに設定されます。
FlowDirection

(System.Windows.FlowDirection)
RightToLeft

(System.Windows.Forms.RightToLeft)
LeftToRightNoにマップされます。

RightToLeftYesにマップされます。

Inherit はマップされません。

FlowDirection.RightToLeftRightToLeft.Yesにマップされます。
FontStyle ホストされているコントロールの System.Drawing.Font 上の Style WPF プロパティのセットは、対応する Fontに変換されます。 これらのプロパティのいずれかが変更されると、新しい Font が作成されます。 Normalの場合: Italic は無効です。 Italic または Obliqueの場合: Italic が有効になっています。
FontWeight ホストされているコントロールの System.Drawing.Font 上の Style WPF プロパティのセットは、対応する Fontに変換されます。 これらのプロパティのいずれかが変更されると、新しい Font が作成されます。 BlackBoldDemiBoldExtraBoldHeavyMediumSemiBold、または UltraBoldの場合: Bold が有効です。 ExtraLightLightNormalRegularThin、または UltraLightの場合: Bold は無効です。
FontFamily

FontSize

FontStretch

FontStyle

FontWeight
Font

(System.Drawing.Font)
WPF プロパティのセットは、対応する Fontに変換されます。 これらのプロパティのいずれかが変更されると、新しい Font が作成されます。 ホストされている Windows フォーム コントロールは、フォント サイズに基づいてサイズが変更されます。

WPF のフォント サイズは、1 インチの 96 分の 1、Windows フォームでは 1 インチの 70 秒として表されます。 対応する変換は次のとおりです。

Windows フォームのフォント サイズ = WPF フォント サイズ * 72.0 / 96.0。
Foreground

(System.Windows.Media.Brush)
ForeColor

(System.Drawing.Color)
Foreground プロパティ マッピングは、次の規則を使用して実行されます。

- ForegroundSolidColorBrushの場合は、ForeColorColor を使用します。
- ForegroundGradientBrushの場合は、ForeColorのオフセット値が最も小さい GradientStop の色を使用します。
- その他の Brush の種類については、ForeColor を変更せずにそのままにしておきます。 これは、既定値が使用されていることを意味します。
IsEnabled Enabled IsEnabled が設定されている場合、WindowsFormsHost 要素は、ホストされているコントロールの Enabled プロパティを設定します。
Padding Padding ホストされている Windows フォーム コントロールの Padding プロパティの 4 つの値はすべて、同じ Thickness 値に設定されます。

- MaxValue より大きい値は MaxValueに設定されます。
- MinValue 未満の値は MinValueに設定されます。
Visibility Visible - VisibleVisible = trueにマップされます。 ホストされている Windows フォーム コントロールが表示されます。 ホストされているコントロールの Visible プロパティを明示的に false に設定することはお勧めしません。
- CollapsedVisible = true または falseにマップされます。 ホストされている Windows フォーム コントロールは描画されず、その領域は縮小されます。
- Hidden: ホストされている Windows フォーム コントロールはレイアウト内のスペースを占有しますが、表示されません。 この場合、Visible プロパティは trueに設定されます。 ホストされているコントロールの Visible プロパティを明示的に false に設定することはお勧めしません。

コンテナー要素の添付プロパティは、WindowsFormsHost 要素で完全にサポートされています。

詳細については、「チュートリアル: WindowsFormsHost 要素を使用したプロパティのマッピング」を参照してください。

親プロパティの更新

ほとんどの親プロパティを変更すると、ホストされている子コントロールへの通知が発生します。 次の一覧では、値が変更されたときに通知が発生しないプロパティについて説明します。

たとえば、WindowsFormsHost 要素の Background プロパティの値を変更しても、ホストされているコントロールの BackColor プロパティは変更されません。

ElementHost コントロールを使用したプロパティ マッピング

次のプロパティは、組み込みの変更通知を提供します。 これらのプロパティをマッピングするときは、OnPropertyChanged メソッドを呼び出さないでください。

  • AutoSize

  • BackColor

  • 背景画像

  • 背景画像レイアウト

  • BindingContext

  • CausesValidation

  • コンテキストメニュー

  • ContextMenuStrip

  • カーソル

  • ドック

  • 有効

  • フォント

  • ForeColor

  • 場所

  • 余地

  • Padding

  • Parent

  • 地域

  • RightToLeft

  • Size

  • タブインデックス

  • タブストップ

  • テキスト

  • Visible

ElementHost コントロールは、次の変換テーブルを使用して、既定の Windows フォーム プロパティを WPF の同等のプロパティに変換します。

詳細については、「チュートリアル: ElementHost コントロールを使用したプロパティのマッピング」を参照してください。

Windows フォームのホスティング Windows Presentation Foundation 相互運用動作
BackColor

(System.Drawing.Color)
Background

ホストされている要素に対する (System.Windows.Media.Brush)。
このプロパティを設定すると、ImageBrushで強制的に再描画されます。 BackColorTransparent プロパティが false (既定値) に設定されている場合、この ImageBrush は、BackColorBackgroundImageBackgroundImageLayout プロパティ、およびアタッチされたペイント ハンドラーを含む、ElementHost コントロールの外観に基づいています。

BackColorTransparent プロパティが trueに設定されている場合、ImageBrush は、親の BackColorBackgroundImageBackgroundImageLayout プロパティ、アタッチされている描画ハンドラーなど、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 フォーム標準カーソルは、対応する WPF 標準カーソルに変換されます。 Windows フォームが標準カーソルでない場合は、既定値が割り当てられます。
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にマップされます。

関連項目