2011-08-18 96 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」事件,而不是在我的構造函數。