チュートリアル : Windows フォームでの Windows Presentation Foundation 複合コントロールのホスト
更新 : 2007 年 11 月
このチュートリアルでは、WPF 複合コントロールを作成し、それを ElementHost コントロールを使用して Windows フォームのコントロールおよびフォームでホストする方法を示します。
ここでは、2 つの子コントロールを含む WPF UserControl を実装します。UserControl は、3 次元 (3-D) の円錐形を表示します。3-D オブジェクトのレンダリングは、Windows フォームより WPF で行う方がはるかに簡単です。したがって、Windows フォームで WPF UserControl クラスをホストして 3-D グラフィックスを作成することには意味があります。
このチュートリアルでは、以下のタスクを行います。
WPF UserControl の作成
Windows フォームのホスト プロジェクトの作成
WPF UserControl のホスト
このチュートリアルで示すタスクの完全なコード一覧については、「Windows フォームでの Windows Presentation Foundation 複合コントロールのホストのサンプル」を参照してください。
メモ 使用している設定またはエディションによっては、ヘルプの記載と異なるダイアログ ボックスやメニュー コマンドが表示される場合があります。設定を変更するには、[ツール] メニューの [設定のインポートとエクスポート] をクリックします。詳細については、「Visual Studio の設定」を参照してください。
前提条件
このチュートリアルを完了するには、次のコンポーネントが必要です。
- Visual Studio 2008.
UserControl の作成
UserControl を作成するには
HostingWpfUserControlInWf という名前の WPF ユーザー コントロール ライブラリ プロジェクトを作成します。
WPF デザイナで UserControl1.xaml を開きます。
生成されているコードを次のコードに置き換えます。
このコードでは、2 つの子コントロールを含む System.Windows.Controls.UserControl が定義されています。1 番目の子コントロールは System.Windows.Controls.Label コントロールで、2 番目は 3-D の円錐形を表示する Viewport3D コントロールです。
Windows フォームのホスト プロジェクトの作成
ホスト プロジェクトを作成するには
WpfUserControlHost という名前の Windows アプリケーション プロジェクトをソリューションに追加します。詳細については、「[新しいプロジェクトの追加] ダイアログ ボックス」を参照してください。
ソリューション エクスプローラで、WindowsFormsIntegration.dll という名前の WindowsFormsIntegration アセンブリへの参照を追加します。
次の WPF アセンブリへの参照を追加します。
PresentationCore
PresentationFramework
WindowsBase
HostingWpfUserControlInWf プロジェクトへの参照を追加します。
ソリューション エクスプローラで、WpfUserControlHost プロジェクトをスタートアップ プロジェクトとして設定します。
Windows Presentation Foundation UserControl のホスト
UserControl をホストするには
Windows フォーム デザイナで、Form1 を開きます。
[プロパティ] ウィンドウで、[イベント] をクリックし、Load イベントをダブルクリックしてイベント ハンドラを作成します。
コード エディタで、新しく生成された Form1_Load イベント ハンドラが開かれます。
Form1.cs 内のコードを次のコードに置き換えます。
Form1_Load イベント ハンドラは、UserControl1 のインスタンスを作成し、ElementHost コントロールの子コントロールのコレクションにそれを追加します。フォームの子コントロールのコレクションには、ElementHost コントロールが追加されます。
Imports System Imports System.Collections.Generic Imports System.ComponentModel Imports System.Data Imports System.Drawing Imports System.Text Imports System.Windows.Forms Imports System.Windows.Forms.Integration Public Class Form1 Inherits Form Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ' Create the ElementHost control for hosting the ' WPF UserControl. Dim host As New ElementHost() host.Dock = DockStyle.Fill ' Create the WPF UserControl. Dim uc As New HostingWpfUserControlInWf.UserControl1() ' Assign the WPF UserControl to the ElementHost control's ' Child property. host.Child = uc ' Add the ElementHost control to the form's ' collection of child controls. Me.Controls.Add(host) End Sub End Class
F5 キーを押してアプリケーションをビルドし、実行します。
参照
処理手順
Windows フォームでの Windows Presentation Foundation 複合コントロールのホストのサンプル
概念
チュートリアル : Windows フォームでの Windows Presentation Foundation コントロールのホスト
チュートリアル : Windows Presentation Foundation での Windows フォーム複合コントロールのホスト