Windows FormアプリからWPFのWindowを表示する

既存のFormアプリへ機能追加しようとしていますが、これがどうも仕様的にWPFで作るのが簡単そうです。FormとWPFのヘテロなアプリって作れるの?単にWPFを呼び出せば良さそうな気がします。
プロジェクトにWPFのウィンドウを追加して。。。、と思ったら、そもそもFormアプリのプロジェクトだと、WPFのウィンドウって選択肢に出てきません。
なにかやり方がありそうなモノです。ちょっとググってみたらstackoverflowに分かりやすいのがありました。

既存のFormアプリのソリューションへWPFカスタムコントールライブラリのプロジェクトとして追加、呼び出せば良いようです。
以下、備忘のため具体的な方法を書いておきます。
1. WPFカスタムコントールライブラリの追加
ソリューションエクスプローラーで、ソリューションを選んで、右ボタンから[追加]-[新しいプロジェクト]で「WPF カスタムコントロール ライブラリ」を追加。
NewImage
WPFのウィンドウを追加する。
NewImage
2. 参照設定の追加
Formアプリのプロジェクトへ、作成したWPFカスタムコントロールライブラリのプロジェクトを参照へ追加。
NewImage
参照設定へ以下のアセンブリを追加して、
PresentationCore
PresentationFramework
WindowsFormsIntegration
System.Xaml
WindowsBase ←参照先のサイトには書いていないけど、これも必要
usingディレクティブも忘れずに追加
using System.Windows.Forms.Integration;
3. Formアプリからの呼び出し
var wpfwindow = new WpfControlLib.Window1();
ElementHost.EnableModelessKeyboardInterop(wpfwindow);
wpfwindow.Show();

4. 動かしてみる
無事表示された。
NewImage


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です