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 既定のマッピングが再割り当てされていない場合、Cursor プロパティが設定された先祖が見つかるまで、WindowsFormsHost コントロールによって先祖の階層が走査されます。 この値は、対応する最も近い 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 では 96 分の 1 インチとして表され、Windows フォームでは 72 分の 1 インチとして表されます。 対応する変換は次のとおりです。

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

  • BackgroundImage

  • BackgroundImageLayout

  • BindingContext

  • CausesValidation

  • ContextMenu

  • ContextMenuStrip

  • カーソル

  • ドッキング

  • 有効

  • Font

  • 前景色

  • 場所

  • 余白

  • [間隔]

  • Region

  • RightToLeft

  • サイズ

  • TabIndex

  • TabStop

  • テキスト

  • 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 にマップされます。

関連項目