Windows フォームと WPF プロパティの割り当て

更新 : 2007 年 11 月

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 プロパティの既定の割り当てが再割り当てされていない場合、処理は、ForceCursor が true に設定されている最初の先祖で停止します。

FlowDirection

(System.Windows.FlowDirection)

RightToLeft

(System.Windows.Forms.RightToLeft)

LeftToRightNo にマップされます。

RightToLeftYes にマップされます。

Inherit は割り当てられません。

FlowDirection.RightToLeftRightToLeft.Yes にマップされます。

FontStyle

ホストされているコントロールの StyleSystem.Drawing.Font

WPF のプロパティ セットは、対応する Font に変換されます。これらのプロパティのいずれかが変更された場合は、新しい Font が作成されます。Normal の場合、Italic は無効です。Italic または Oblique の場合、Italic は有効です。

FontWeight

ホストされているコントロールの StyleSystem.Drawing.Font

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 インチで表され、Windows フォームでは 1/72 インチで表されます。対応する変換は次のとおりです。

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

Foreground

(System.Windows.Media.Brush)

ForeColor

(System.Drawing.Color)

Foreground プロパティの割り当ては、次のルールを使用して行われます。

IsEnabled

Enabled

IsEnabled が設定されていると、WindowsFormsHost 要素はホストされるコントロールの Enabled プロパティを設定します。

Padding

Padding

ホストされる Windows フォーム コントロールの Padding プロパティの 4 つの値はすべて、同じ Thickness 値に設定されます。

Visibility

Visible

  • Visible は、Visible = true に割り当てられます。ホストされる Windows フォーム コントロールは表示されます。ホストされているコントロールに対して Visible プロパティを明示的に false に設定することはお勧めしません。

  • Collapsed は、Visible = true または false に割り当てられます。ホストされる Windows フォーム コントロールは描画されず、領域は折りたたまれます。

  • Hidden : ホストされる Windows フォーム コントロールはレイアウトのスペースを使用しますが、表示はされません。この場合、Visible プロパティは true に設定されます。ホストされているコントロールに対して Visible プロパティを明示的に false に設定することはお勧めしません。

コンテナ要素の添付プロパティは、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 フォームの既定のプロパティを 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

Bold が true の場合は、FontWeightBold に設定されます。

Bold が false の場合は、FontWeightNormal に設定されます。

Italic

ホストされている要素の FontStyle

Italic が true の場合は、FontStyleItalic に設定されます。

Italic が false の場合は、FontStyleNormal に設定されます。

Strikeout

ホストされている要素の TextDecorations

TextBlock コントロールをホストしている場合のみ適用されます。

Underline

ホストされている要素の TextDecorations

TextBlock コントロールをホストしている場合のみ適用されます。

RightToLeft

(System.Windows.Forms.RightToLeft)

FlowDirection

(FlowDirection)

NoLeftToRight にマップされます。

YesRightToLeft にマップされます。

Visible

Visibility

ElementHost コントロールは、次のルールを使用して、ホストされる要素の Visibility プロパティを設定します。

参照

処理手順

チュートリアル : WindowsFormsHost 要素を使用したプロパティの割り当て

チュートリアル : ElementHost コントロールを使用したプロパティの割り当て

概念

WPF と Win32 の相互運用性に関する概要

Windows Presentation Foundation と Windows フォームの相互運用でサポートされるシナリオ

参照

ElementHost

WindowsFormsHost