WPFとWinidows Fromとの相互運用について 1 - システム開発・導入全般 - 専門家プロファイル

上原 正吉
株式会社アースリンクネットワーク 
Webプロデューサー

注目の専門家コラムランキングRSS

対象:システム開発・導入

清水 圭一
清水 圭一
(IT経営コンサルタント)
井上 みやび子
井上 みやび子
(Webエンジニア)
清水 圭一
(IT経営コンサルタント)

閲覧数順 2016年12月09日更新

専門家の皆様へ 専門家プロファイルでは、さまざまなジャンルの専門家を募集しています。
出展をご検討の方はお気軽にご請求ください。

WPFとWinidows Fromとの相互運用について 1

- good

  1. 法人・ビジネス
  2. システム開発・導入
  3. システム開発・導入全般
C# .Net 開発 .Net 3.0開発
WPFとWinidows Fromとの相互運用について 1

Windows Presentation Foundation(WPF)とWinidows Fromとの相互運用について 1




WPF開発をしている途中で既存の資産を生かして開発したいと思ったことはないだろうか。



具体時には、WPF(xaml)で開発したアプリケーションに、既存のWindowsフォームを使用したり、
コントロールライブラリーを使用したり、ActiveXを使用したいというようなことである。


逆に既存の資産にWPFを使用したいと思ったことはないだろうか。



具体時には、既存のWindowsフォームや、コントロールライブラリーに、
WPFアプリを使用したいと思ったことはないだろうか。


ここでは3回に渡ってそれぞれの方法を見て行きたいと思う。


WindowsアプリからWPFの呼び出し



最初にWindowsアプリからWPFで作成したコントロールを呼び出す方法を説明しよう


プロジェクトの作成



まずは、プロジェクト作りましょう。
今回はWinidowsアプリケーションで作成ですね。

そして、「追加」⇒「新しい項目」から「ユーザーコントロール(WPF)」を選んで
好きな名前(クラス名)でファイルを追加しましょう。
(デフォルトだと「UserControl1.xaml」という名前になります)

今回はそのまま「UserControl1.xaml」で追加します。


WPF画面の作成



そして、図1の一番上の画面のようにテキストボックス1つとボタン1つを配置しましょう。

XAMLのデザイン画面で下記のコードを貼り付けてもかまいません。
上記でファイル名を「UserControl1.xaml」以外にした人は適時一行目の
「x:Class="WPFHostWin.UserControl1"」
を変えておきましょう。

(心配な人は「 〜 Grid
」の間だけコピーして貼り付けましょう)

>
UserControl x:Class="WPFHostWin.UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="100" Width="300"

Grid Height="100" Width="300"

TextBox Height="23" Margin="10,20,50,0" Name="textBox1" VerticalAlignment="Top" /

Button Height="23" Margin="0,50,50,0" Name="button1" VerticalAlignment="Top"
HorizontalAlignment="Right" Width="76" Click="button1_Click"
Button
/Button

/Grid

/UserControl




WPFコードの追加



そして、ボタンをダブルクリックして、コードビハインドクラスの編集画面へ行き


private void button1_Click( object sender, RoutedEventArgs e )
{
textBox1.Text = "TestOK";
}


とテキストボックスにメッセージを表示するようにしましょう。

これでWPFの準備は完了です。


WPFのコンパイル



ここで一度ビルドをしておきましよう。
VisualStudio 2008のメニューバーから「ビルド」⇒「ソリューションのビルド」を選択するか。
VisualStudio 2008の画面で「F6(ファンクションキーの6)」を押すか、
好きな方法でビルドしてください。

エラーがでていなければ次へ進みましょう。


Windowsフォームの作成



次にWindowsフォームを開き図のように
ツールボックスから「WPF相互運用機能」の「ElementHost」を選んで配置しましょう。
(図1の真ん中の画面参照)

そして、図のように「ホストするコンテンツの選択」から「UserControl1」を選択しましょう。
(自分の作成したクラスに応じて選んでください。)


そうすると、先ほど作成した画面が表示されます。
(フォントの違いでWindowsフォームではないことがわかると思います。)
(図1の一番下の画面参照)


WPFをホストしたアプリケーションの実行



それでは、ビルドして実行してみましょう。

WPFフォーム部分のボタンをクリックすると、
コードで記入した「TestOK」という文字が画面に表示されるはずです。
(図1の上の画面参照)
これで、WPFフォームをWindowsで活用することができました。


WindowsフォームからWPFの操作



それでは、ただ使うだけではなく、WPFの画面を操作したいと思ったらどうするのでしょうか。

それでは、実際にやり方を見て行きましょう。


ボタンの配置とコードの追加



まず、Windowsフォームの空いている部分に、普通にボタンコントロールを配置します。
そして、ダブルクリックしてコード入力の画面に移ります。

そして、このようなコードを書けば、WPFの画面にアクセスできます。
ここで注目したいのは、textBox1へ直接アクセスできているという点です。

userControl11.textBox1.Text = "WindwosからWPFへ入力";


WPFを操作してみる



それでは、ビルドして実行してみましょう。
どうでしょうか、これでWindowsフォームのボタンから、
WPFの画面を操作することができましたね。
(図1の下の画面参照)


次回はWPFフォームからWindowsのユーザーコントロールを使用する方法を説明します。


QuickRec--メール・電話・FAXをお客様情報と一緒に全部まとめて一元管理
電話を自動録音することによりトラブルを未然に防ぎます
http://www.quickrec.com/

システム開発のご相談、ホームページ作成なら
アースリンクネットワークへ
http://www.eln.ne.jp