チュートリアル : 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 を作成するには

  1. HostingWpfUserControlInWf という名前の WPF ユーザー コントロール ライブラリ プロジェクトを作成します。

  2. WPF デザイナで UserControl1.xaml を開きます。

  3. 生成されているコードを次のコードに置き換えます。

    このコードでは、2 つの子コントロールを含む System.Windows.Controls.UserControl が定義されています。1 番目の子コントロールは System.Windows.Controls.Label コントロールで、2 番目は 3-D の円錐形を表示する Viewport3D コントロールです。

Windows フォームのホスト プロジェクトの作成

ホスト プロジェクトを作成するには

  1. WpfUserControlHost という名前の Windows アプリケーション プロジェクトをソリューションに追加します。詳細については、「[新しいプロジェクトの追加] ダイアログ ボックス」を参照してください。

  2. ソリューション エクスプローラで、WindowsFormsIntegration.dll という名前の WindowsFormsIntegration アセンブリへの参照を追加します。

  3. 次の WPF アセンブリへの参照を追加します。

    • PresentationCore

    • PresentationFramework

    • WindowsBase

  4. HostingWpfUserControlInWf プロジェクトへの参照を追加します。

  5. ソリューション エクスプローラで、WpfUserControlHost プロジェクトをスタートアップ プロジェクトとして設定します。

Windows Presentation Foundation UserControl のホスト

UserControl をホストするには

  1. Windows フォーム デザイナで、Form1 を開きます。

  2. [プロパティ] ウィンドウで、[イベント] をクリックし、Load イベントをダブルクリックしてイベント ハンドラを作成します。

    コード エディタで、新しく生成された Form1_Load イベント ハンドラが開かれます。

  3. 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
    
  4. F5 キーを押してアプリケーションをビルドし、実行します。

参照

処理手順

Windows フォームでの Windows Presentation Foundation 複合コントロールのホストのサンプル

概念

チュートリアル : Windows フォームでの Windows Presentation Foundation コントロールのホスト

チュートリアル : Windows Presentation Foundation での Windows フォーム複合コントロールのホスト

参照

ElementHost

WindowsFormsHost

その他の技術情報

WPF デザイナ

移行および相互運用性に関する「方法」トピック