1

WPFアプリでActiveXコントロールをホストしようとしています。ウェブ上とここで既存の情報を使おうとした後、行き止まりになりました。

UVパワーメーターと通信するために提供されているActiveXコントロールを使用する必要があります。これらは、コントロールを登録して使用するアプリケーションを提供し、いくつかの便利なデモアプリも含まれています。OCXファイルを取り除き、必要に応じてここに配置しました。通話するパワーメーターはありませんが、アプリとデモはActiveXコントロールを正常にロードします。

簡単なWindowsフォームアプリケーションを作成しました。ActiveXコントロールをツールバーに移動し、フォームにドロップすることができました。すべて問題ありません。彼らが提供するデモアプリもこれを行います。

ただし、これをWPF環境で機能させることは別の話です。コントロールをツールボックスに追加してアプリに「ドラッグ」することはできません。

これまでに2つのテクニックを試しました。

  1. ここにあるテクニック。コントロールへの参照を追加することはできますが、名前空間hellと入力します。それが提案するxmlns:ax名前空間は、情報を見つけることができません。オブジェクトビューアの指示に基づいた私の試みは次のとおりです。xmlns:ax="clr-namespace:OphirUsbXLib;assembly=Interop.OphirUsbXLib"
  2. ここにあるテクニック。これは基本的に、ActiveXコントロール(yikes)を含むWindowsフォームに基づいてライブラリを作成する新しいプロジェクトを作成するためのものです。Windowsフォームホストを追加することはできますが、内のActiveXコントロールにアクセスできません。コントロールを公開することはできますが、それでもメソッドなどを呼び出すことはできません。これは正しい解決策のようには見えません。

要するに、私はフォームで美しく機能するActiveXコントロールを持っていますが、WPFで機能するための本当の雌犬です。

どんな洞察も大歓迎です!

4

1 に答える 1

2

この状況では、使用しようとしているActiveXコントロールをラップするWinFormsユーザーコントロールを作成することを検討します。

ActiveXコントロールで必要な各プロパティとメソッドを公開するパブリックプロパティとメソッドを作成し、このWinFormsUCをWPFWinFormsHostコントロールでホストすることができます。

私はすでにこれと同様のことを行っています。逆に、WinFormsUserControlでWPFUserControlをホストし、次にレガシーアプリケーションのVB6フォームでホストします。

于 2010-09-07T22:41:13.963 に答える