【发布时间】:2011-10-29 23:35:49
【问题描述】:
我目前需要在我的 WPF 表单中嵌入一个 SWF 文件。我读过它,至少有两种方法可以做到这一点:
- 将 SWF 嵌入到 HTML 文件中,并将后者嵌入到我的表单中。
- 使用“AxShockwaveFlashObjects”程序集嵌入 SWF。由于这是用于 WinForms 而不是 WPF,因此我将不得不使用 Windows Forms Host 并将 Shockwave Flash 对象放入其中。
由于我的应用程序的一些要求(基本上是冲击波对象的“GetVariable”函数),我选择了第二个选项。我在 WPF 表单中放置了一个 Windows 窗体主机,并将以下代码放入其构造函数中:
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中。
提前致谢
【问题讨论】:
-
嗨,我也在努力解决这个问题;你能详细说明你是如何解决的吗?
-
很抱歉,但两年后我不能说我记得。看来我在
MainWindow()中剪切了您在此处看到的代码(InitializeComponent()调用除外)并将其移至其他位置。您能否进一步解释一下您在做什么以及尝试我尝试过的方法时会发生什么?