我有一个ActiveX控件(用Delphi编写),我想在WPF应用程序中托管。当我尝试将其加载到工具箱中以在设计时将其添加到XAML时,它不会显示在可用控件列表中。有谁知道这个列表的过滤器以及为什么我看不到控件来添加它?
修改
这是我到达的地方 - host.Child = (ax);
语句出错(无法将类型'DemoFrameControl.DemoFrameCtrl'隐式转换为'System.Windows.Forms.Control'),希望这有助于澄清我的问题
private void WindowLoaded(object sender, RoutedEventArgs e)
{
// Create the interop host control.
System.Windows.Forms.Integration.WindowsFormsHost host =
new System.Windows.Forms.Integration.WindowsFormsHost();
// Create the ActiveX control.
DemoFrameControl.DemoFrameCtrl ax = new DemoFrameControl.DemoFrameCtrl();
// Assign the ActiveX control as the host control's child.
host.Child = (ax);
// Add the interop host control to the Grid
// control's collection of child controls.
this.grid1.Children.Add(host);
// Play a .wav file with the ActiveX control.
//axWmp.URL = @"C:\WINDOWS\Media\Windows XP Startup.wav";
}
由于
答案 0 :(得分:5)
结帐Walkthrough: Hosting an ActiveX Control in WPF。
更新:
DemoFrameCtrl
如何定义?与错误一样,它必须是System.Windows.Forms.Control
的子类才能使用WindowsFormsHost
。 ActiveX控件包装器将继承自Control
继承的AxHost
。我认为如果添加对ActiveX库的引用,Visual Studio将生成包装器。如果没有,您可以尝试使用Aximp.exe (Windows Forms ActiveX Control Importer)。