WPFアプリケーションからWinFormsのコントローラを使う

WPFアプリケーションを作成していると、WPFにはないけど、WinFormsにはあるコントロールをどうしても使いたいという場面が出てきます。今回はそんなときにWPFアプリケーションからWinFormsコントローラを使用する方法を解説します。

System.Windows.Formsへの参照の追加

プロジェクトの参照設定を右クリックして「参照の追加」を選択します。

f:id:hkou:20150630215430p:plain

参照マネージャーのウィンドウが表示されるので、フレームワークから「System.Windows.Forms」にチェックを付けます。 f:id:hkou:20150630215543p:plain

WindowsFormsIntegration.dllへの参照追加

参照マネージャーの参照ボタンを押下します f:id:hkou:20150630215950p:plain

ファイル選択ダイアログが表示されるので「WindowsFormsIntegration.dll」を選択します。

※このDLLは.Netのインストール先フォルダにあります。

例:C:\Windows\Microsoft.NET\Framework64\v4.0.30319\WPF

XAMLの修正

名前空間の追加

WinFormsコントロールを参照するために名前空間を追加します

<Window x:Class="UsingWinFormsTest.Views.MainWindow"

   xmlns:winform="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"
   …>

コントロールの追加

今回はWinFormsのLabelを使用します

<Grid>
    <WindowsFormsHost>
        <winform:Label Text="Windows Forms Label" />
    </WindowsFormsHost>
</Grid>

実行

実行してみます。ちゃんとLabel表示されることが確認できました。

f:id:hkou:20150630220614p:plain