<WindowsFormHost>を使ってSystem.Windows.FormsのPictureBoxをWPFで利用した
『C#による計測制御プログラミング入門』 を読んでいる。
若干情報が古い感じなので(2008年発行)、フォームアプリケーションでGUIを制作しているのだが、いろいろ思うところもあってWPFで作ることに。
ただ、大きな変更が加えられたコントロールも少なからずある(特にグラフィック関係)ため、そのあたりの情報を自分で調べるのは面倒。よって、フォームアプリケーション用のコントロールをWPFから使う方法を調べた。
Visual C# 2010 Express で行った操作の覚書。
- 参照設定を右クリ
- 参照の追加
-
「参照」タブで %programfiles%\Reference Assemblies\Microsoft\Framework\v3.0\WindowsFormsIntegration.dll を追加する
-
「.Net」タブで
- System.Windows.Forms
- System.Drawing を追加する
<Window>の属性定義で
xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"
を追加すると、 wf:コントロール名 でアクセスできるようになる。
その際、 <WindowsFormsHost> でくくる必要があるが、これは「Control」を「1つだけ」しか持てないことに注意せよ。
また、追加するコントロールに名前をつける際には x:Name="" と付けないと、C#のコード側から見えない。
using System.Windows.Formsとしてもよいが、意外と var で乗り切れたりする。
using System.Drawing; とするときには、 using System.Windows.Media; を消すと、名前が干渉しなくて良いカンジになる。
- http://www.kanazawa-net.ne.jp/~pmansato/wpf/wpf_graph_main.htm
- http://code.msdn.microsoft.com/windowsdesktop/XAML-WPF-Windows-Windows-453f770b
- http://msdn.microsoft.com/ja-jp/library/system.windows.forms.integration.windowsformshost(v=vs.80).aspx
- http://msdn.microsoft.com/ja-jp/library/ms742875(v=vs.80).aspx
- http://okwave.jp/qa/q6012762.html