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 プロパティの既定のマッピングが再割り当てされていない場合、走査は ForceCursor が true に設定された最初の先祖で停止します。 |
FlowDirection (System.Windows.FlowDirection) |
RightToLeft (System.Windows.Forms.RightToLeft) |
LeftToRight は No にマップされます。 RightToLeft は Yes にマップされます。 Inherit はマップされません。 FlowDirection.RightToLeft は RightToLeft.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 では 96 分の 1 インチとして表され、Windows フォームでは 72 分の 1 インチとして表されます。 対応する変換は次のとおりです。 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 | - 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
カーソル
ドッキング
有効
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 は、その 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) |
No は LeftToRight にマップされます。 Yes は RightToLeft にマップされます。 |
Visible | Visibility | ElementHost コントロールでは、次の規則を使用して、ホストされている要素に Visibility プロパティを設定します。 - Visible = true は Visible にマップされます。- Visible = false は Hidden にマップされます。 |
関連項目
.NET Desktop feedback