我正试图在WPF应用程序中托管一个ActiveX控件。尝试在网络上使用现有信息并在此处尝试后,我遇到了一个死胡同。在WPF中使用ActiveX控件
我需要使用提供的ActiveX控件来与UV power meter进行通信。他们提供了一个登录并使用该控件的application,甚至包括一些有用的演示应用程序。我删除了OCX文件,并在需要时输入here。您将不会有功率计进行通话,但应用程序和演示仍将成功加载ActiveX控件。
我创建了一个简单的Windows窗体应用程序。我能够将ActiveX控件带入工具栏,将它放到我的表单中,并且一切都很好。他们提供的演示应用也是如此。
但是,让它在WPF环境中工作是另一回事。该控件无法添加到工具箱并“拖动”到应用程序中。
到目前为止,我已经尝试了两种技术:
- 技术发现here。我可以添加对控件的引用,但是接下来我输入命名空间地狱。它建议使用的xmlns:ax命名空间找不到信息。以下是我基于对象查看器告诉我的内容的尝试:
xmlns:ax="clr-namespace:OphirUsbXLib;assembly=Interop.OphirUsbXLib"
- 找到的技巧here。这基本上是创建一个新的项目,创建一个基于Windows窗体,其中包含ActiveX控件(yikes)的库。我可以添加Windows窗体主机,但我无法访问其中的ActiveX控件。我可以将控件公开,但我仍然不能调用方法等。这看起来不是正确的解决方案。
总之,我有一个ActiveX控件,在Forms中工作得很漂亮,但是在WPF中工作起来却是一个婊子。
任何见识都被赞赏!
我认为你所描述的将会起作用(第二种方法),但是要编写新的访问方法来获得ActiveX控件,看起来很痛苦。假设该控件有50个方法,例如,需要编写50个基本上“通过”控件的新方法。我希望有更好的方法。 – BabaBooey 2010-09-08 01:43:24
采取实用的方法,只公开从WPF应用程序中实际需要使用的方法和属性 – benPearce 2010-09-08 02:49:52