手把手教您如何在Siliverlight嵌入Flash
我們將研究的是Siliverlight嵌入Flash、HTML和PDF文件的方法,在網(wǎng)絡(luò)上也能查到Siliverlight嵌入Flash的方法,但是很復(fù)雜。本文將介紹如何在Siliverlight嵌入Flash等多媒體文件。
最近在研究怎樣將html內(nèi)容顯示在Silverlight中的方法,于是上網(wǎng)查閱了相關(guān)資料,發(fā)現(xiàn)在Silverlight中實現(xiàn)嵌入html的步驟還是比較繁瑣的。本人向來不愿意把事情復(fù)雜化,于是經(jīng)過一番精心搜索,最終在Divelements上發(fā)現(xiàn)了HtmlHost這款小巧的組件。通過它的幫助,在Silverlight中嵌入HTML、Flash和PDF文件等,就顯得易如反掌了。
HtmlHost
網(wǎng)站:http://www.divelements.co.uk/silverlight/tools.aspx
下載:http://www.divelements.co.uk/silverlight/SilverlightTools.1.0.1.zip
接著,就對該組件進行介紹并且通過實際范例講述該組件的應(yīng)用。
1、基本特性
組件所在命名空間:
Divelements.SilverlightTools
組件常用屬性:
SourceUri:顯示在該組件中的內(nèi)容的URI。
SourceHtml:用該組件顯示的超文本內(nèi)容。
Document:顯示在該組件中的內(nèi)容的HTML。
組件常用事件:
DocumentReady:當(dāng)在該組件中的內(nèi)容的HTML加載完畢后觸發(fā)該事件。
2、實例講解
注意:該組件需在windowless模式下才能正常運行。因此,首先要對服務(wù)端文件夾下的SilverlightClientTestPage.aspx文件或SilverlightClientTestPage.html文件做如下修改:(綠字粗體部分為新添加的內(nèi)容)
- <form id="form1" runat="server" style="height:100%">
- <div id="silverlightControlHost">
- <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
- <param name="source" value="ClientBin/SilverlightClient.xap"/>
- <param name="onError" value="onSilverlightError" />
- <param name="background" value="white" />
- <param name="minRuntimeVersion" value="3.0.40624.0" />
- <param name="autoUpgrade" value="true" />
- <param name="windowless" value="true" />
- <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40624.0" style="text-decoration:none">
- <img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style:none"/>
- a>
- object><iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px">iframe>div>
- form>
接著,將需要嵌入的Flash文件及PDF文件放置在服務(wù)端文件夾的根目錄下。
右擊SilverlightClient文件夾下的References,引入Divelements.SilverlightTools命名空間。按Ctrl+Shift+B編譯。
然后,在SilverlightClient文件夾下新建一個Silverlight UserControl,將其命名為ControlHtmlHost.xaml。該文件內(nèi)容如下:
- <UserControl x:Class="SilverlightClient.ControlHtmlHost" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- xmlns:divtools="clr-namespace:Divelements.SilverlightTools;assembly=Divelements.SilverlightTools"
- Width="900" Height="530">
- <Grid x:Name="LayoutRoot" Background="White">
- <divtools:HtmlHost Name="htmlHost"/>
- Grid>
- UserControl>
以下是MainPage文件的內(nèi)容:
MainPage.xaml文件代碼:
- <UserControl x:Class="SilverlightClient.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"
- xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
- mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480">
- <Grid x:Name="LayoutRoot">
- <StackPanel>
- <StackPanel Orientation="Horizontal" Background="WhiteSmoke">
- <Button x:Name="myHTML" Content="HTML內(nèi)容" FontSize="14"/>
- <Button x:Name="myFlash" Content="Flash" FontSize="14"/>
- <Button x:Name="myPDF" Content="PDF文檔" FontSize="14"/>
- StackPanel>
- <Grid x:Name="Container"/>
- StackPanel>
- Grid>
- UserControl>
MainPage.xaml.cs文件代碼:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Net;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Documents;
- using System.Windows.Input;
- using System.Windows.Media;
- using System.Windows.Media.Animation;
- using System.Windows.Shapes;
- using Divelements.SilverlightTools;
- namespace SilverlightClient
- {
- public partial class MainPage : UserControl
- {
- public MainPage()
- {
- InitializeComponent();
- //注冊事件觸發(fā)處理
- this.Loaded += new RoutedEventHandler(MainPage_Loaded);
- this.myHTML.Click += new RoutedEventHandler(myHTML_Click);
- this.myFlash.Click += new RoutedEventHandler(myFlash_Click);
- this.myPDF.Click += new RoutedEventHandler(myPDF_Click);
- }
- void MainPage_Loaded(object sender, RoutedEventArgs e)
- {
- GetRichContent("http://cn.bing.com", UriKind.Absolute);
- }
- void myPDF_Click(object sender, RoutedEventArgs e)
- {
- GetRichContent("/test.pdf",UriKind.Relative);
- }
- void myFlash_Click(object sender, RoutedEventArgs e)
- {
- GetRichContent("/clock.swf", UriKind.Relative);
- }
- void myHTML_Click(object sender, RoutedEventArgs e)
- {
- GetRichContent("http://cn.bing.com", UriKind.Absolute);
- }
- //獲取Rich Content
- void GetRichContent(string uri,UriKind uk)
- {
- Container.Children.Clear();
- ControlHtmlHost chtml = new ControlHtmlHost();
- HtmlHost hh = chtml.FindName("htmlHost") as HtmlHost;
- hh.SourceUri = new Uri(uri, uk);
- Container.Children.Add(chtml);
- }
- }
- }
最終效果圖:
原文標題:在Silverlight中嵌入HTML、Flash和PDF文件
鏈接:http://www.cnblogs.com/Kinglee/archive/2009/10/20/1587113.html
【編輯推薦】