由于WPF 本身中不支援COM 元件同時也無法加載ActiveX 控件,是以需要借助WinForm 引用ActiveX 控件将Flash 加入其中。首先建立一個WPF 項目(WpfFlash),将Flash 檔案(.swf)加入到項目中,并将Copy to Output Directory 設定為"Copy always"。

在工程中新增一個Windows Forms Control Library 項目(FlashControlLibrary),利用該控件庫加載Flash ActiveX。
在FlashControlLibrary 項目工具欄(Toolbox)中點選滑鼠右鍵,選擇"Choose Items..."。在COM Components 标簽中選擇"Shockwave Flash Object",點選确定。
此時在工具欄中已經可以看到剛添加的Shockwave Flash Object 控件了。将控件拖入設計視窗,調整好控件尺寸使其滿足Flash 的尺寸大小,對FlashControlLibrary 項目進行編譯,并生成DLL 檔案。
傳回WpfFlash 項目将上面編譯的AxInterop.ShockwaveFlashObjects.dll 加入References,并添加System.Windows.Forms 和WindowsFormsIntegration,便于WinForm 程式在WPF 中互動使用。
接下來将通過兩種方式将Flash 檔案加入到WPF,一種側重于使用XAML 代碼實作,另一種則使用C#。可按各自需要選擇其一。
打開MainWindow.xaml,加入命名空間xmlns:f="clr-namespace:AxShockwaveFlashObjects;assembly=AxInterop.ShockwaveFlashObjects"。在<Grid>中加入WindowsFormsHost 用于調用WinForm 程式,并在其中添加AxShockwaveFlash 控件加載Flash 檔案。
打開MainWindow.xaml.cs 将Flash 檔案加載到flashShow 控件。
使用C# 實作相同的效果,首先将XAML 代碼按如下方式修改,在Window 中加入Loaded 事件。
定義FlashLoaded 方法,主要通過WindowsFormsHost和 AxShockwaveFlash 完成Flash 加載操作。
<a href="http://cid-c75f4e27adfe5bbc.office.live.com/self.aspx/GnieTech/WpfFlash.zip">WpfFlash.zip</a>