在WPF中托管ActiveX控件

时间:2010-06-18 20:47:06

标签: wpf interop

我有一个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";
    }

由于

1 个答案:

答案 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)