.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/XAMLデザイナ) |
イベント・ハンドラ処理もここで実装する。
WPFユーザー・コントロールが完成したら、いったんビルドしてWPFユーザー・コントロールのアセンブリを生成しておく。
●2. WindowsフォームにWPFユーザー・コントロールを配置する
次に、作成したWPFユーザー・コントロールをWindowsフォーム上に配置する。
先ほどビルドしたアセンブリのWPFユーザー・コントロールが[ツールボックス]に表示されるので、次の画面のようにドラッグ&ドロップすればよい。
WindowsフォームへのWPFユーザー・コントロールの配置(Windowsフォーム・デザイナ) |
ここで配置されるコントロールは、厳密にはWPFユーザー・コントロールではなく、ElementHostコントロールである。ElementHostコントロールは、[ツールボックス]の[WPF 相互運用機能]タブにある[ElementHost]コントロールと同じものだ。従って、ElementHostコントロールを配置して、そのChildプロパティにWPFユーザー・コントロールを設定しても同じ構成となる(Childプロパティの設定は、後述する[ElementHost タスク]メニューの[ホストするコンテンツの選択]コンボボックスからも行える)。
●3. ElementHostコントロールをWindowsフォームいっぱいに広げる
最後に、ElementHostコントロールを適切なサイズに調整する。Windowsフォームいっぱいに広げる場合には、ElementHostコントロールの右肩から表示できる[ElementHost タスク]メニューを使うと便利だ。
WindowsフォームへのElementHostコントロールの配置(Windowsフォーム・デザイナ) |
[親コンテナにドッキングする]リンクを実行するとElementHostコントロールがWindowsフォームいっぱいに広がる。また、[ホストするコンテンツの編集]リンクをクリックすると、WPF/XAMLデザイナが開き、WPFユーザー・コントロールを編集できる。
以上でビルドして実行すれば完了だ。
なお、WindowsフォームとWPF/XAMLは別アーキテクチャであるため、実行時には多少のオーバーヘッドが発生する。WPFユーザー・コントロールの規模が小さいうちは問題ないが、大きく複雑になってくると、そのロードに時間がかかるようになったりする可能性もあるので注意しておいた方がいいだろう。
利用可能バージョン:.NET Framework 3.0 利用可能バージョン:.NET Framework 3.5 カテゴリ:Windowsフォーム 処理対象:ElementHostコントロール |
|
「.NET TIPS」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|