在WPF中使用ActiveX控件

在WPF中使用ActiveX控件,wpf,winforms,activex,winforms-interop,Wpf,Winforms,Activex,Winforms Interop,我正在尝试在WPF应用程序中托管ActiveX控件。在尝试使用web和此处的现有信息后,我遇到了死胡同 我需要使用提供的ActiveX控件与服务器进行通信。它们提供了一个注册和使用控件的工具,甚至包括一些有用的演示应用程序。我把OCX文件剥离出来,如果需要的话放进去。您将无法与电能表通话,但应用程序和演示仍将成功加载ActiveX控件 我创建了一个简单的Windows窗体应用程序。我能够将ActiveX控件放入工具栏,将其放入我的表单中,一切都很好。他们提供的演示应用程序也可以做到这一点 然而,

我正在尝试在WPF应用程序中托管ActiveX控件。在尝试使用web和此处的现有信息后,我遇到了死胡同

我需要使用提供的ActiveX控件与服务器进行通信。它们提供了一个注册和使用控件的工具,甚至包括一些有用的演示应用程序。我把OCX文件剥离出来,如果需要的话放进去。您将无法与电能表通话,但应用程序和演示仍将成功加载ActiveX控件

我创建了一个简单的Windows窗体应用程序。我能够将ActiveX控件放入工具栏,将其放入我的表单中,一切都很好。他们提供的演示应用程序也可以做到这一点

然而,让它在WPF环境中工作是另一回事。无法将控件添加到工具箱并“拖动”到应用程序中

到目前为止,我已经尝试了两种方法:

  • 技术发现。我可以添加对控件的引用,但随后我进入了名称空间地狱。它建议创建的xmlns:ax命名空间找不到信息。以下是我根据对象查看器告诉我的内容所做的尝试:
    xmlns:ax=“clr namespace:OphirUsbXLib;assembly=Interop.OphirUsbXLib”
  • 技术发现。这实质上是创建一个新项目,该项目基于包含ActiveX控件(yikes)的Windows窗体创建一个库。我可以添加Windows窗体主机,但无法访问其中的ActiveX控件。我可以公开控件,但仍然无法调用方法等。这看起来不是正确的解决方案
  • 简言之,我有一个ActiveX控件,它在表单中运行得很好,但在WPF中运行起来真是太糟糕了


    任何洞察都将不胜感激
    我已经做过类似的事情,反过来说,在WinForms UserControl中托管WPF UserControl,然后在遗留应用程序中的VB6表单上托管它。

    我认为您所描述的方法会起作用(第二种方法),但必须编写新的访问方法才能访问ActiveX控件似乎很痛苦。假设控件有50个方法,例如,需要编写50个新方法来“传递”到控件。我希望有更好的方法。采取务实的方法,只公开那些实际上需要从WPF应用程序中使用的方法和属性