我目前需要在我的 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中。
提前致谢