|
.NET TIPS WPF/XAMLでWindowsフォームを利用するには?[3.0、3.5、VS 2008、C#、VB]デジタルアドバンテージ 一色 政彦2008/10/30 |
![]() |
|
|
|
Visual Studio 2008(以降、VS 2008)では、.NET Framework 3.0で追加された新プレゼンテーション技術のWPF(Windows Presentation Foundation)(のデザイナ画面)が利用できるようになっている。「TIPS:WindowsフォームでWPFコントロールを利用するには?」では、既存のWindowsフォーム上でWPFコントロールを利用するについて紹介したが、これとは逆にWPF/XAML上でWindowsフォーム・コントロールを利用することもできる。
本稿では、これを実践する方法を紹介する。なお、VS 2008を使用してWPFアプリケーションのプロジェクトを開発していることを前提とする。
WPFは後発のプレゼンテーション技術なので、Windowsフォームに比べると、まだコントロールが十分にそろっていない。必要とする機能を持ったWPFのコントロールがまだなく、自作する時間もないような場合、その部分だけをWindowsフォーム・コントロールで補うという使い方ができるだろう。
■WPF/XAMLでWindowsフォーム・コントロールを利用する方法
●1. Windowsフォーム用のユーザー・コントロールを作成する
まずはWindowsフォーム用のユーザー・コントロール(以降、Winユーザー・コントロール)の作成から始めてみよう。Winユーザー・コントロールは、内部に複数のWindowsフォーム・コントロールを配置できるコンテナ・コントロールだ。
[ソリューション エクスプローラ]でプロジェクト項目を右クリックし、表示されるコンテキスト・メニューから[追加]−[新しい項目]を実行して[新しい項目の追加]ダイアログを開き、[Windows フォーム]カテゴリの[ユーザー コントロール]テンプレートを使って新規C#/Visual Basicファイル(拡張子:.cs/.vb)を作成する。あとは、Windowsフォーム・デザイナでコントロールなどを配置する。
次の画面は実際にWindowsフォーム・デザイナで、TextBox、Button、Labelなどのコントロールを配置したWinユーザー・コントロールを作成しているところだ。
![]() |
| Winユーザー・コントロールを作成しているところ(Windowsフォーム・デザイナ) |
さらにイベント・ハンドラ処理もここで実装する。
●2. WPF/XAMLにWindowsFormsHostコントロールを配置して、ウィンドウいっぱいに広げる
次に、Windowsフォーム・コントロールを配置するために用意されているWPF/XAML用のコントロールであるWindowsFormsHostをWPF/XAML上に配置する。
[WindowsFormsHost]コントロールは[ツールボックス]の[コントロール]タブにあるので、次の画面のようにドラッグ&ドロップすればよい。
![]() |
| WPF/XAMLへのWinユーザー・コントロールの配置(WPF/XAMLデザイナ) |
WindowsFormsHostコントロールを配置したら適切なサイズに調整する。WPF/XAMLのウィンドウいっぱいに広げるには、WindowsFormsHostコントロールのMarginプロパティを「0,0,0,0」に設定すればよい。
●3. WindowsFormsHostコントロールにWinユーザー・コントロールをひも付ける
最後に、先ほど追加したWindowsFormsHostコントロールに、事前に作成しておいたWinユーザー・コントロールをひも付ける。
これにはWPF/XAMLのWindowsのLoadedイベント・ハンドラを追加し、次のコードを記述すればよい。なおLoadedイベント・ハンドラは、WPF/XAMLデザイナでウィンドウ部分をダブル・クリックされば自動的に追加される。
|
||
| WindowsFormsHostコントロールにWinユーザー・コントロールを対応付けるコード(上:C#、下:VB) |
コードは説明するまでもないが、Winユーザー・コントロール(UserControl1)のインスタンスを生成して、それをWindowsFormsHostコントロール(windowsFormsHost1)のChildプロパティに指定している。
以上でビルドすれば完了だ。次の画面は本稿で作成したサンプル・アプリケーションを実行してみたところ。
![]() |
| WPF/XAMLでWindowsフォームを利用するサンプル・プログラムの実行例 |
なお、WPF/XAMLとWindowsフォームは別アーキテクチャであるため、実行時には多少のオーバーヘッドが発生する。Winユーザー・コントロールの規模が小さいうちは問題ないが、大きく複雑になってくると、そのロードに時間がかかるようになったりする可能性もあるので注意しておいた方がいいだろう。![]()
| 利用可能バージョン:.NET Framework 3.0 利用可能バージョン:.NET Framework 3.5 カテゴリ:WPF/XAML 処理対象:WindowsFormsHostコントロール |
|
||||||||||||||||||||||||||||
| 「.NET TIPS」 |
TechTargetジャパン
- 新人プログラマーのためのInsider.NETの歩き方 2012 (2012/5/22)
晴れて.NETプログラマーとなる新人が効率的に開発技術を習得するには? 大量にある記事群の中から新人が読むべきお勧めを厳選して紹介 - jQuery MobileでJavaScriptプログラミング (2012/5/17)
jQuery Mobileは手軽なだけでなく、JavaScriptのAPIも充実しており、独自機能の実装もできる。今回は「グローバル設定」と「イベント」を解説 - Windows上で開発するための開発環境構築入門 (2012/5/16)
Windowsを使ってチームで開発している? なのにサーバOSを設定・運用した経験がない? そうなら、今すぐ学ぼう - 「コントラクト」でアプリのサンドボックスを乗り越える! (2012/5/11)
Metroスタイル・アプリはサンドボックスの中で動作する。それを乗り越えてほかのアプリと連携する仕組み「コントラクト」を解説
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -





