2011-08-18 100 views
3

我目前需要在我的WPF表单中嵌入一个SWF文件。我读过它,并且至少有两种方法可以实现此目的:使用Windows窗体主机在WPF中嵌入SWF文件?

  • 将SWF嵌入到HTML文件中,并将后者嵌入到表单中。
  • 使用“AxShockwaveFlashObjects”程序集嵌入SWF。因为这意味着在WinForms中使用,而不是在WPF中使用,所以我将不得不使用Windows窗体主机并将Shockwave Flash Object放入其中。

由于我的应用程序的一些要求(基本上是shockwave对象的“GetVariable”函数),我选择了第二个选项。我把Windows窗体在我的WPF形式的主机,并把下面的代码在其构造:

public MainWindow() 
    { 
     InitializeComponent(); 

     AxShockwaveFlash flash = new AxShockwaveFlash(); 

     flash.Location = new System.Drawing.Point(0, 0); 
     flash.Size = new System.Drawing.Size(200, 200); 
     flash.Enabled = true; 
     flash.Movie = "http://www.example.com/file.swf"; 

     windowsFormsHost1.Child = flash; 
    } 

但是,当我调试的代码,我启动时获取此错误:

“的调用类型'Flash_in_WPF.MainWindow'中与指定的绑定约束匹配的构造函数抛出异常。行号“4”和行位置“106”。

如果我动议代码单击按钮时运行,我得到一个不同的错误信息:

类型的异常“System.Windows.Forms.AxHost + InvalidActiveXStateException”被抛出。

为什么我会收到这些错误?

编辑:解决了!事实证明,我需要将整个初始化代码移到“Grid_Loaded”事件中,而不是在我的ctor中。

在此先感谢

+0

嗨,我也试图解决这个问题;你能否详细说明你是如何解决它的? – debu

+0

对不起,但我不能说在两年后我记得。看来我砍你在这里看到的代码在'主窗口()'(除'的InitializeComponent()'调用),并把它移到别的地方去。你能否进一步解释你在做什么,什么,当你尝试会发生什么我试过吗? –

回答

1

解决它!我想应该把问题设定为解决。

原来我需要整个初始化代码移到“Grid_Loaded”事件,而不是在我的构造函数。