WPFフォーム内のある種のコンテナまたはラッパータイプのコントロール内に(単一のコントロールだけでなく)完全なWinFormsフォームをホスト/表示する方法はありますか? 概念がphpまたはiframeのhtmlからの仮想インクルードに似たものを探しています。おそらく、OCX または DLL にコンパイルすることによって。
3 に答える
次のコードでそれを行うことができます:
XAML で:
<WindowsFormsHost name="wfHost" />
コード ビハインドで:
Form foo = new Form();
foo.TopLevel = false;
foo.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
wfHost.Child = foo;
私の知る限り、WPF で実際の WinForms フォームをホストすることはできません。
ただし、必要なすべての機能と子コントロールを含む通常の UserControl を WinForms で (Windows フォーム コントロール ライブラリ プロジェクトとして) 作成することをお勧めします。
次に、WPF プロジェクトで、WindowsFormsIntegration.dll を参照します ([参照の追加] の [.NET] タブにある必要があります)。
次に、WinForms UserControl を含むアセンブリも参照し、最後に WindowsFormsHost コンテナーを XAML に追加します。
詳細については、Sacha Barber によるこの便利なチュートリアルを参照してください。
WinForms のコントロールとして exe をホストする方法を示すCodeProjectに関する記事があります(これは、Tab ページを使用するアプリケーションであり、Winform.exe をその上にドラッグすると、そのウィンドウを含むタブページが作成されます)、これから派生します。記事はこちら。具体的に WPF を要求したことは知っていますが、おそらくそれが正しい方向に導く可能性がありますか?
これがお役に立てば幸いです。よろしくお願いします、トム。