WPFWindowsFormsHostコンテナーにネストされたWinFormsUserControlを使用するVisualStudio2012 C#アプリがあります。アプリは正常に動作します。WinForms UserControlをプロジェクトに追加するには、メインフォームのXAMLファイルを直接編集する必要がありました。それは難しいことではありませんでしたが、可能であれば、代わりにツールボックスから作業できるようにしたいと思います。
Visual StudioToolboxにコントロールを表示する際の問題を処理するいくつかの異なるスレッドをStackOverflowで見つけましたが、WPFプロジェクト(混合プロジェクト)のToolboxにWinFormsコントロールを表示する方法については説明していません。WinFormsプロジェクトで使用すると、WinFormsUserControlがツールボックスに表示されることに注意してください。ただし、ホストプロジェクトがWPFプロジェクトの場合、ツールボックスにはWPFコントロールしか表示されません。次の手順でWinFormsコントロールを追加してみました。
- ツールボックスを右クリック
- アイテムの選択の選択
- [.NETFrameworkコンポーネント]タブの選択
- WinFormsUserControlを含むDLLを参照する
- DLLを選択し、[OK]をクリックします
含まれているコントロールは.NETFrameworkコンポーネントリストにインポートされますが、[アイテムの選択]ダイアログを終了した後、ツールボックスに表示されません。奇妙なことに、DLLのコントロールをアンロードしてこの操作を数回繰り返したところ、一貫性のない結果が得られました。コントロールを表示することはできませんでしたが、「コントロールはインポートされましたが、Designerでアクティブではありませんでした」というダイアログボックスが表示され、互換性があることを確認する必要があります。また、DLLに使用可能なコントロールが含まれていないというエラーボックスが表示されました。ほとんどの場合、インポートされたコントロールが.NETFrameworkコンポーネントリストにチェックマーク付きで表示されます。リスト内のそれらの横にあり、行が青色で強調表示されています。ただし、エラーや警告メッセージは表示されませんでしたが、ツールボックスには表示されませんでした。WinFormsコントロールDLLのソースである.NETプロジェクトは、ソリューション内のプロジェクトであることに注意してください。
では、Winforms UserControlをWPFプロジェクトのツールボックスに表示させることは可能ですか?もしそうなら、どのように?