WindowsフォームでWPFコントロールを利用するには?[3.0、3.5、VS 2008、C#、VB] − @IT

 

.NET TIPS

WindowsフォームでWPFコントロールを利用するには?[3.0、3.5、VS 2008、C#、VB]

デジタルアドバンテージ 一色 政彦
2008/10/23

 Visual Studio 2008(以降、VS 2008)では、.NET Framework 3.0で追加された新プレゼンテーション技術のWPF(Windows Presentation Foundation)(のデザイナ画面)が利用できるようになっている。通常、アプリケーションのUI(ユーザー・インターフェイス)でWPFを使いたい場合、基本的には「WPF アプリケーション」として1から作成する必要があるが、既存のWindowsフォーム上でWPFユーザー・コントロールを利用するという手段も提供されている。この手段は特に、徐々にWPFへ移行したい場合に役立つだろう。

 本稿では、この手段を実践する方法を紹介する。なお、VS 2008を使用することを前提とする。

■WindowsフォームでWPFコントロールを利用する方法

●1. WPFユーザー・コントロールを作成する

 ここではWPFユーザー・コントロールの作成から始めてみよう。WPFユーザー・コントロールとは文字通りWPFにおけるユーザー・コントロールで、内部に複数のWPFコントロールを配置できるコントロールだ。

 [ソリューション エクスプローラ]でプロジェクト項目を右クリックし、表示されるコンテキスト・メニューから[追加]−[新しい項目]を実行して[新しい項目の追加]ダイアログを開き、[ユーザー コントロール (WPF)]テンプレートを使って新規XAMLファイル(拡張子:.xaml)を作成する。あとは、WPF/XAMLデザイナでコントロールを配置する。

 次の画面は実際にWPF/XAMLデザイナで、TextBox、Button、Labelなどのコントロールを配置したWPFユーザー・コントロールを作成しているところだ。

 イベント・ハンドラ処理もここで実装する。

 WPFユーザー・コントロールが完成したら、いったんビルドしてWPFユーザー・コントロールのアセンブリを生成しておく。

●2. WindowsフォームにWPFユーザー・コントロールを配置する

 次に、作成したWPFユーザー・コントロールをWindowsフォーム上に配置する。

 先ほどビルドしたアセンブリのWPFユーザー・コントロールが[ツールボックス]に表示されるので、次の画面のようにドラッグ&ドロップすればよい。

 ここで配置されるコントロールは、厳密にはWPFユーザー・コントロールではなく、ElementHostコントロールである。ElementHostコントロールは、[ツールボックス]の[WPF 相互運用機能]タブにある[ElementHost]コントロールと同じものだ。従って、ElementHostコントロールを配置して、そのChildプロパティにWPFユーザー・コントロールを設定しても同じ構成となる(Childプロパティの設定は、後述する[ElementHost タスク]メニューの[ホストするコンテンツの選択]コンボボックスからも行える)。

●3. ElementHostコントロールをWindowsフォームいっぱいに広げる

 最後に、ElementHostコントロールを適切なサイズに調整する。Windowsフォームいっぱいに広げる場合には、ElementHostコントロールの右肩から表示できる[ElementHost タスク]メニューを使うと便利だ。

 [親コンテナにドッキングする]リンクを実行するとElementHostコントロールがWindowsフォームいっぱいに広がる。また、[ホストするコンテンツの編集]リンクをクリックすると、WPF/XAMLデザイナが開き、WPFユーザー・コントロールを編集できる。

 以上でビルドして実行すれば完了だ。

 なお、WindowsフォームとWPF/XAMLは別アーキテクチャであるため、実行時には多少のオーバーヘッドが発生する。WPFユーザー・コントロールの規模が小さいうちは問題ないが、大きく複雑になってくると、そのロードに時間がかかるようになったりする可能性もあるので注意しておいた方がいいだろう。End of Article

利用可能バージョン:.NET Framework 3.0
利用可能バージョン:.NET Framework 3.5
カテゴリ:Windowsフォーム 処理対象:ElementHostコントロール



TechTargetジャパン

Insider.NET 記事ランキング

本日 月間