手把手教您如何在Siliverlight嵌入Flash

开发 后端
在这里我们将手办手教您如何在Siliverlight嵌入Flash、HTML和PDF文件,希望对大家有所帮助。

我们将研究的是Siliverlight嵌入Flash、HTML和PDF文件的方法,在网络上也能查到Siliverlight嵌入Flash的方法,但是很复杂。本文将介绍如何在Siliverlight嵌入Flash等多媒体文件。

最近在研究怎样将html内容显示在Silverlight中的方法,于是上网查阅了相关资料,发现在Silverlight中实现嵌入html的步骤还是比较繁琐的。本人向来不愿意把事情复杂化,于是经过一番精心搜索,最终在Divelements上发现了HtmlHost这款小巧的组件。通过它的帮助,在Silverlight中嵌入HTML、Flash和PDF文件等,就显得易如反掌了。

HtmlHost

网站:http://www.divelements.co.uk/silverlight/tools.aspx

下载:http://www.divelements.co.uk/silverlight/SilverlightTools.1.0.1.zip

接着,就对该组件进行介绍并且通过实际范例讲述该组件的应用。

1、基本特性

组件所在命名空间:

Divelements.SilverlightTools

组件常用属性:

SourceUri:显示在该组件中的内容的URI。

SourceHtml:用该组件显示的超文本内容。

Document:显示在该组件中的内容的HTML。

组件常用事件:

DocumentReady:当在该组件中的内容的HTML加载完毕后触发该事件。

2、实例讲解

注意:该组件需在windowless模式下才能正常运行。因此,首先要对服务端文件夹下的SilverlightClientTestPage.aspx文件或SilverlightClientTestPage.html文件做如下修改:(绿字粗体部分为新添加的内容)

  1. <form id="form1" runat="server" style="height:100%"> 
  2.     <div id="silverlightControlHost"> 
  3.         <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%"> 
  4.           <param name="source" value="ClientBin/SilverlightClient.xap"/> 
  5.           <param name="onError" value="onSilverlightError" /> 
  6.           <param name="background" value="white" /> 
  7.           <param name="minRuntimeVersion" value="3.0.40624.0" /> 
  8.           <param name="autoUpgrade" value="true" /> 
  9.           <param name="windowless" value="true" /> 
  10.           <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40624.0" style="text-decoration:none"> 
  11.               <img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style:none"/> 
  12.           a> 
  13.         object><iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px">iframe>div> 
  14.     form> 

接着,将需要嵌入的Flash文件及PDF文件放置在服务端文件夹的根目录下。

右击SilverlightClient文件夹下的References,引入Divelements.SilverlightTools命名空间。按Ctrl+Shift+B编译。

然后,在SilverlightClient文件夹下新建一个Silverlight UserControl,将其命名为ControlHtmlHost.xaml。该文件内容如下:

  1. <UserControl x:Class="SilverlightClient.ControlHtmlHost" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
  2. xmlns:divtools="clr-namespace:Divelements.SilverlightTools;assembly=Divelements.SilverlightTools" 
  3.     Width="900" Height="530"> 
  4.     <Grid x:Name="LayoutRoot" Background="White"> 
  5.         <divtools:HtmlHost Name="htmlHost"/> 
  6.     Grid> 
  7. UserControl> 

以下是MainPage文件的内容:

MainPage.xaml文件代码:

  1. <UserControl x:Class="SilverlightClient.MainPage"    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
  2.     xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"          
  3. xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"   
  4.     mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480"> 
  5.   <Grid x:Name="LayoutRoot"> 
  6.         <StackPanel> 
  7.              
  8.             <StackPanel Orientation="Horizontal" Background="WhiteSmoke"> 
  9.                 <Button x:Name="myHTML" Content="HTML内容" FontSize="14"/> 
  10.                 <Button x:Name="myFlash" Content="Flash" FontSize="14"/> 
  11.                 <Button x:Name="myPDF" Content="PDF文档" FontSize="14"/> 
  12.             StackPanel> 
  13.             <Grid x:Name="Container"/> 
  14.         StackPanel> 
  15.     Grid> 
  16. UserControl> 

MainPage.xaml.cs文件代码:

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Net;  
  5. using System.Windows;  
  6. using System.Windows.Controls;  
  7. using System.Windows.Documents;  
  8. using System.Windows.Input;  
  9. using System.Windows.Media;  
  10. using System.Windows.Media.Animation;  
  11. using System.Windows.Shapes;  
  12. using Divelements.SilverlightTools;  
  13. namespace SilverlightClient  
  14. {  
  15.     public partial class MainPage : UserControl  
  16.     {  
  17.         public MainPage()  
  18.         {  
  19.             InitializeComponent();  
  20.             //注册事件触发处理  
  21.             this.Loaded += new RoutedEventHandler(MainPage_Loaded);  
  22.             this.myHTML.Click += new RoutedEventHandler(myHTML_Click);  
  23.             this.myFlash.Click += new RoutedEventHandler(myFlash_Click);  
  24.             this.myPDF.Click += new RoutedEventHandler(myPDF_Click);  
  25.         }  
  26.         void MainPage_Loaded(object sender, RoutedEventArgs e)  
  27.         {  
  28.             GetRichContent("http://cn.bing.com", UriKind.Absolute);  
  29.         }  
  30.         void myPDF_Click(object sender, RoutedEventArgs e)  
  31.         {  
  32.             GetRichContent("/test.pdf",UriKind.Relative);  
  33.         }  
  34.         void myFlash_Click(object sender, RoutedEventArgs e)  
  35.         {  
  36.             GetRichContent("/clock.swf", UriKind.Relative);  
  37.         }  
  38.         void myHTML_Click(object sender, RoutedEventArgs e)  
  39.         {  
  40.             GetRichContent("http://cn.bing.com", UriKind.Absolute);  
  41.         }  
  42.         //获取Rich Content  
  43.         void GetRichContent(string uri,UriKind uk)  
  44.         {  
  45.             Container.Children.Clear();  
  46.             ControlHtmlHost chtml = new ControlHtmlHost();  
  47.             HtmlHost hh = chtml.FindName("htmlHost"as HtmlHost;  
  48.             hh.SourceUri = new Uri(uri, uk);  
  49.             Container.Children.Add(chtml);  
  50.         }  
  51.     }  

最终效果图:

最终效果图

原文标题:在Silverlight中嵌入HTML、Flash和PDF文件

链接:http://www.cnblogs.com/Kinglee/archive/2009/10/20/1587113.html

【编辑推荐】

  1. Office 2010将使用Silverlight改善用户体验
  2. 微软.NET平台主管谈Silverlight企业级开发
  3. Flash与Silverlight多领域实测对比
  4. 微软宣称Silverlight装机量超过三亿
  5. 图解Silverlight 3的7个新功能
责任编辑:彭凡 来源: 博客园
相关推荐

2020-11-10 09:00:00

JavaMule ESB开发

2010-07-07 10:24:46

Python多线程

2010-08-18 09:15:45

路由器网络诊断

2020-09-23 07:00:00

Selenium We架构

2010-09-14 09:24:27

家庭无线网络

2010-09-02 10:50:17

时间同步服务器

2009-12-02 10:16:55

备份Cisco路由器配

2010-08-26 09:24:59

路由器网络诊断

2020-02-21 10:45:06

运维架构技术

2010-04-02 16:51:09

虚拟机安装linux

2011-02-15 09:43:33

虚拟机

2022-09-14 17:12:15

flowable源码DEMO

2009-11-06 10:44:31

Visual Stud

2010-03-10 11:16:31

服务器DIY

2011-10-31 15:40:07

TouchpadAndroid

2020-12-21 09:47:16

UbuntuMinicondalinux

2022-11-28 08:23:14

IDEAGradle配置

2021-02-04 11:53:49

Linuxplatform总线

2020-09-04 10:14:02

Linux驱动7内核

2020-09-27 06:59:59

IO系统Linux
点赞
收藏

51CTO技术栈公众号