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 プロパティの既定のマッピングが再割り当てされていない場合、トラバーサルは最初の先祖で停止し、ForceCursor は true に設定されます。 |
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 が作成されます。 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 フォーム コントロールは、フォント サイズに基づいてサイズが変更されます。 WPF のフォント サイズは、1 インチの 96 分の 1、Windows フォームでは 1 インチの 70 秒として表されます。 対応する変換は次のとおりです。 Windows フォームのフォント サイズ = WPF フォント サイズ * 72.0 / 96.0。 |
Foreground (System.Windows.Media.Brush) |
ForeColor (System.Drawing.Color) |
Foreground プロパティ マッピングは、次の規則を使用して実行されます。 - Foreground が SolidColorBrushの場合は、ForeColorに Color を使用します。 - Foreground が GradientBrushの場合は、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 は、BackColor、BackgroundImage、BackgroundImageLayout プロパティ、およびアタッチされたペイント ハンドラーを含む、ElementHost コントロールの外観に基づいています。BackColorTransparent プロパティが true に設定されている場合、ImageBrush は、親の BackColor、BackgroundImage、BackgroundImageLayout プロパティ、アタッチされている描画ハンドラーなど、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 の場合、FontWeight は Boldに設定されます。Bold が false の場合、FontWeight は Normalに設定されます。 |
Italic | ホストされている要素に対する FontStyle | Italic が true の場合、FontStyle は Italicに設定されます。Italic が false の場合、FontStyle は Normalに設定されます。 |
Strikeout | ホストされている要素に対する TextDecorations | TextBlock コントロールをホストしている場合にのみ適用されます。 |
Underline | ホストされている要素に対する TextDecorations | TextBlock コントロールをホストしている場合にのみ適用されます。 |
RightToLeft (System.Windows.Forms.RightToLeft) |
FlowDirection (FlowDirection) |
NoLeftToRightにマップされます。 YesRightToLeftにマップされます。 |
Visible | Visibility | ElementHost コントロールは、次の規則を使用して、ホストされる要素の Visibility プロパティを設定します。 - Visible = true Visibleにマップされます。- Visible = false Hiddenにマップされます。 |
関連項目
.NET Desktop feedback