GVKun编程网logo

稳扎稳打Silverlight(30) - 2.0Tip/Trick之Silverlight.js, Silverlight.supportedUserAgent.js, 自定义启动界面, 响应鼠标滚

15

在本文中,我们将详细介绍稳扎稳打Silverlight(30)-2.0Tip/Trick之Silverlight.js,Silverlight.supportedUserAgent.js,自定义启动界

在本文中,我们将详细介绍稳扎稳打Silverlight(30) - 2.0Tip/Trick之Silverlight.js, Silverlight.supportedUserAgent.js, 自定义启动界面, 响应鼠标滚的各个方面,同时,我们也将为您带来关于Essential Silverlight翻译连载---第二章 Silverlight第一步、Javascript创建Silverlight Plugin以及自定义nonSilverlight和lowSilverlight样式_javascript技巧、Silverlight 4 新特性之Silverlight as Drop Target、Silverlight 5 beta新特性探索系列:1.安装Silverlight 5 beta环境以及OOB模式下Silverlight 5 多窗口支持的有用知识。

本文目录一览:

稳扎稳打Silverlight(30) - 2.0Tip/Trick之Silverlight.js, Silverlight.supportedUserAgent.js, 自定义启动界面, 响应鼠标滚

稳扎稳打Silverlight(30) - 2.0Tip/Trick之Silverlight.js, Silverlight.supportedUserAgent.js, 自定义启动界面, 响应鼠标滚

  [索引页]
[源码下载]

稳扎稳打Silverlight(30) - 2.0Tip/Trick之Silverlight.js,Silverlight.supportedUserAgent.js,自定义启动界面,响应鼠标滚轮事件

作者: webabcd
介绍
Silverlight 2.0 提示和技巧系列
  • Silverlight.js - 一些 js 帮助函数,用于嵌为入 Silverlight 插件以及自定义安装体验等提供帮助
  • Silverlight.supportedUserAgent.js - 就一个函数,用于判断 Silverlight 是否支持用户的浏览器
  • 自定义启动界面 - 三个参数的综合应用:splashScreenSource,onSourceDownloadProgressChanged,onSourceDownloadComplete 
  • 响应鼠标滚轮事件 - 响应并处理鼠标的滚轮事件

在线DEMO
http://www.cnblogs.com/webabcd/archive/2008/10/09/1307486.html  
示例
1、Silverlight.js 和 Silverlight.supportedUserAgent.js 的常用函数的演示和说明
SilverlightDotJsDemo.html

<!--

详解 Silverlight.js 


Silverlight.js - 一些 js 帮助函数,用于嵌为入 Silverlight 插件以及自定义安装体验等提供帮助,其最新版本在如下地址下载

http://code.msdn.microsoft.com/silverlightjs


Silverlight.supportedUserAgent.js - 就一个函数,用于判断 Silverlight 是否支持用户的浏览器,其最新版本在如下地址下载

http://code.msdn.microsoft.com/SLsupportedUA

-->

<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >

< html  xmlns ="http://www.w3.org/1999/xhtml" >

< head >

    
< title > Silverlight.js </ title >


    
< script  type ="text/javascript"  src ="../Silverlight.js" ></ script >


    
< script  src ="../Silverlight.supportedUserAgent.js"  type ="text/javascript" ></ script >


</ head >

< body >

    
< div  id ="container" >

        
< href ="http://go.microsoft.com/fwlink/?LinkID=124807"  style ="text-decoration: none;" >

            
< img  src ="http://go.microsoft.com/fwlink/?LinkId=108181"  alt ="Get Microsoft Silverlight"

                style
="border-style: none"   />

        
</ a >

    
</ div >


    
< script  type ="text/javascript" >


        
// Silverlight.createObject() - 生成一个嵌入了 Silverlight 插件的 object 元素

        Silverlight.createObject(

            
"../ClientBin/Silverlight20.xap .xap 的地址            document.getElementById('container),245)"> 包含此 object 元素的父元素            slPlugin object 元素的 id

            {

                width: 
100%

                height: 

                minRuntimeVersion: 
2.0.31005.0

            }
 Silverlight 插件的属性数组

{

                onLoad: onslload,

                onError: onSLError,

                onSourceDownloadComplete: onSourceDownloadComplete

            }
 Silverlight 插件的事件处理程序数组key1=value1,key2=value2 为 Silverlight 程序传递初始化参数(key=value的形式)。用“,”分隔myContext  上下文信息,可以在插件的 onLoad 事件中获取        );


        
function onslload(plugin, userContext, sender) {

            alert(plugin.id 
+  -  userContext  sender.toString());

        }


        
 onSLError(sender, args) {

            
 args - Sys.UI.Silverlight.ErrorEventArgs 类型             ErrorEventArgs.errorType - 错误类型 ErrorEventArgs.errorMessage - 错误信息 ErrorEventArgs.errorCode - 错误代码

            
 程序 throw 出的异常可以在此处捕获到            alert(args.errorType \n args.errorMessage  args.errorCode);

        }


        
 onSourceDownloadComplete(sender,245)">{

            alert(
SourceDownloadComplete);

        }



        
 Silverlight.createObjectEx(params) - 将所有参数放入一个数组中传入,其内部会解析这个数组中的参数,然后调用 Silverlight.createObject()

        
 Silverlight.default_error_handler = function (sender, args){} - onError 事件的默认处理程序,不需要的话可以将其置为 null            

    
</ script >


    
< script  type ="text/javascript" >


        window.onload 
= () {


            
 getSilverlight() - 尝试下载指定的版本,如果指定空字符串 "" 则为尝试下载最新版本 Silverlight.getSilverlight("2.0.31005.0"); isInstalled() - 判断是否安装了指定的 Silverlight 版本            alert(Silverlight.isInstalled());


            
 Silverlight.onSilverlightInstalled - 使用 Silverlight.js 时,如果客户端没有安装 Silverlight 插件,则会自动安装,然后调用此方法以刷新浏览器,可以重写此方法以自定义行为(比如在此通过 createObject() 来使新安装的插件生效,而无需刷新)。注意:如果是 Silverlight 升级,则不会调用此方法,必须重启浏览器(只刷新是不行的) supportedUserAgent(version, userAgent) - 判断 Silverlight 是否支持用户的浏览器,省略 userAgent 则为当前浏览器            alert(Silverlight.supportedUserAgent(2.0));

        }

    

    
</ script >


</ body >

</ html >


2、自定义 Silverlight 程序的启动界面,并显示加载进度
启动界面的 xaml 文件
SplashScreen.xaml

< Grid  xmlns ="http://schemas.microsoft.com/winfx/2006/xaml/presentation"  

      xmlns:x
="http://schemas.microsoft.com/winfx/2006/xaml"

      Background
="Bisque"

>

    
< StackPanel  Orientation ="Horizontal"  HorizontalAlignment ="Center"  VerticalAlignment ="Center" >

        
< TextBlock  Text ="Loading

"
 Margin ="3"   />

        
< TextBlock  x:Name ="percent"  Text ="0%"  Margin ="3"   />

    
</ StackPanel >

</ Grid >

Silverlight 程序全部加载完成前,显示启动界面并显示加载进度
SplashScreen.html

<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >

< html  xmlns ="http://www.w3.org/1999/xhtml" >

< head >

    
< title > SplashScreen </ title >

    
< style  type ="text/css" >

        html, body

        
{

            height
: 100%;

            overflow
 auto

        
}

        body

        

            padding
 0

            margin

        #silverlightControlHost

        

    
</ style >

</ head >

< body >

    
< div  id ="silverlightControlHost" >

        
< object  id ="xaml1"  data ="data:application/x-silverlight-2,"  type ="application/x-silverlight-2"

            width
="100%"  height ="100%" >

            
< param  name ="source"  value ="../ClientBin/Silverlight20.xap"   />

            

            
<!-- 下载 source 指定的 xap 的过程中所显示的 xaml 的地址 -->

            
< param  name ="splashScreenSource"  value ="SplashScreen.xaml"   />

            

            
<!-- 下载 source 指定的 xap 的过程中所持续调用的事件 -->

            
< param  name ="onSourceDownloadProgressChanged"  value ="onSourceDownloadProgressChanged"   />

            

            
<!-- souce 指定的 xap 被完全下载后所触发的事件 -->

            
< param  name ="onSourceDownloadComplete"  value ="onSourceDownloadComplete"   />

        
</ object >

        
< iframe  style ='visibility:  hidden; height: 0; width: 0; border: 0px' ></ iframe >

    
</ div >


    
< script  type ="text/javascript" >

    

        
 onSourceDownloadProgressChanged(sender,245)"> progress 属性 - 下载进度(0 - 1 之间)            sender.findName(percent).Text  Math.round(args.progress *10000/100%;            

        }


        
{

            sender.findName(
;

        }


    
</ script >


</ body >

</ html >

Essential Silverlight翻译连载---第二章 Silverlight第一步

Essential Silverlight翻译连载---第二章 Silverlight第一步

第二章 Silverlight第一步
关于Silverlight
一些人把Silverlight技术称为“Flash杀手”,但我不能确信这是否真实。无论如何,两者非常相似。无论是Adobe公司的Flash(以前是Macromedia公司的Flash)还是Silverlight都作为浏览器插件。两者都支持矢量图形,声音和视频回放,动画和脚本支持。
两者的技术基础是不一样的。Flash使用不完全二进制格式,而Silverlight是基于WPF的。在被命名为Silverlight之前,它的开发代号为WPF/E( Windows Presentation Foundation Everywhere)。Silverlight可以到处运行(至少理论上是这样)得感谢好的浏览器支持。
实际上兼容性是浏览器插件的关键问题。在写这本书时,Silverlight插件已经支持Windows平台(这没什么好说的)下的两大浏览器:Microsoft Internet Explorer和Mozilla Firefox (译者注:火狐浏览器)。还支持苹果机的Mac OS X操作系统使用的两个浏览器Safari和Mozilla Firefox。按照微软的说法,对其他平台的支持正在研究之中,但Windows在桌面操作系统中拥有如此高的市场占有率,而Mac OS X位列第二,所以优先支持这两个浏览器。
Silverlight需要运行在Windows XP或更高的版本上;但1.0版本有可能在某一时间升级为支持Windows 2000的版本。在未来版本中也将增加对Opera浏览器的支持;当前它是第三大浏览器,拥有相对较少但非常忠实的用户。
 

提示:专业的绘图软件如 Adobe的Photoshop使用了几个复杂的算法来保证当图像尺寸改变时的质量损失(特别当缩小图像时);然而,当图像放大时,对图像的影响还是很明显的。
Mono 项目( http://www.mono-project.com/ ),因为开源并运行 .NET 而闻名,它可以在 Linux 平台的 Firefox 浏览器下运行开源的 Silverlight 端口。这个项目被称为 Moonlight (请见 http://www.monoproject.com/Moonlight )。 http://www.mono-project.com/MoonlightShots 网站也有一些最新的成果的一些效果图(图 2-1 )。微软也宣布将联合 Novell (译者著:一种操作系统) 派出一个小组支持 Moonlight 项目并把它移植到 Linux 下。
但除了做为浏览器插件之外, Silverlight 还有什么过人之处呢?这个插件的最主要部份是支持 WPF 子集(详情请见第 4 章)的图形子系统。它还包含了表现视频和音频的代码(请参考第 7 章了解更多关于多媒体方面的内容)。
Silverlight 的体系非常复杂(请参考 http://msdn2.microsoft.com/en-us/library/bb404713.aspx )。主要可以分为两大块,表现层负责处理 UI ,包括动画,文字渲染和音频 / 视频回放。插件被整合在浏览器内使得这些内容可见,并且也可以通过 JavaScript DOM 访问。最后,使用 JavaScript 代码(如果使用 ASP.NET AJAX 框架就更好了) Silverlight 应用程序就可以象 web services 一样访问服务器 API 了。图 2-2 (译者注:很遗憾,本书并不存在我们想要的这张图,这里是一个错误) 展现了这个体系。 Silverlight1.1 将对这些做进一步地扩展,并把 .NET Framework 的一部份整合进 Silverlight 内。
安装Silverlight开发系统
 

事实上,使用一个文本编辑器便能开发 Silverlight 应用程序,便使用一个“真实”的开发环境能让您事半功倍。最明智的选择是使用微软所提供的开发工具。对于代码编写人员来说, Visual Studio 2005 是当前开发 Silverlight 的最佳选择。无论是完全版本(标准版,专业版,团队开发版)还是免费版的 Visual Web Developer Express Edition 都可以胜任。如果您使用付费版本,将获得项目模板支持,那是再好不过。本书将使用 Visual Studio 2005 标准版。无论什么时候,免费的 Express 版本和付费版本都将有所不同,这尤其重要,它使得用户不会遗漏任何重要信息。
Windows XP 或更高版本上安装 Visual Studio Visual Web Developer 无需什么必备条件。您甚至不需要网页服务器,因为 IDE 已经集成了一个。如果可能,可以安装一个微软的 IIS Internet information Services )。它隐藏在【 Software 】菜单(译者注:没用过 Vista ,不知道 Software 所对应的是不是【软件】菜单) 下的控制面板内( Vista 操作系统)。如图 2-2 所示,可以在“ turn Windows features on and off ”那找到它。(译者注:哪位使用 Vista 的兄弟帮忙看看这句话的中文是什么) 在安装 Visual Studio 2005 时,请确保选中了“ Visual Web Developer ”这个选项,如图 2-3 所示。否则,网页编辑器将不会在 IDE 内出现。你需要创建网站项目,尽管 WPF 是一项桌面技术,但 Silverlight 是一项网页技术。如果您希望使用 Visual Studio 2005 Express Edition ,可以到以下网址下载一个网络安装版: http://msdn.microsoft.com/vstudio/express/vwd/download/
 

无论您安装的是 Visual Studio 的哪个版本,都应该立即安装一些有用的补丁(在写本书时最新的补丁是 Service Pack 1 ), Windows Vista 用户必须安装一个专门针对 Vista 用户的升级补丁。在安装期间,需要注意 Vista 的一个很出名的软件运行问题,解决方法是安装所有可用的补丁,如图 2-4 所示。
 

大概给微软产品安装最新补丁的最便利的方法就是使用 Windows 自动更新机制。微软的软件更新是一个长期服务。 Windows 自动更新不但给 Windows 和它的核心组件如 Internet Explorer 打补丁,还给其它的一些微软产口包括 Office Visual Studio ,和 sql Server 打补丁。如图 2-5 所示。

 
    如何激活软件的升级取决于您所使用的 Windows 版本。如果是 Windows Vista 之前的 Windows 操作系统,只需要访问以下升级网站( http://update.microsoft.com/microsoftupdate/ )进行升级。如果您使用的是 Windows Vista ,那么单击【开始】菜单,选择【 Get updates for more products 】链接(译者注:请哪个使用 Vista 的兄弟帮翻译下这个菜单名 )打开如图 2-6 所示窗口。下次您搜索升级时,便可获得  Visual Studio 和其他微软产口的升级补丁。
 

提示:在安装完 Visual Studio 2005的Server Pack 1后,Vista用户需要再次运行微软的升级以获得一个针对当前操作系统的Visual Studio补丁。
 
本章未完,待续
 

Javascript创建Silverlight Plugin以及自定义nonSilverlight和lowSilverlight样式_javascript技巧

Javascript创建Silverlight Plugin以及自定义nonSilverlight和lowSilverlight样式_javascript技巧

默认情况下,生成的页面代码可能与下面的代码类似:

复制代码 代码如下:




IRERTranscript














Get Microsoft Silverlight






  我们可以给object对象传递不同的参数,如xap包的加载地址,onLoad或onError事件句柄,背景色,最小版本号支持等等,完整的参数信息读者可以参考Silverlight 3中param参数列表汇总。object对象中一般会包含一段标记,是用来显示当客户端浏览器未安装Silverlight插件时要显示的内容的,我们可以自定义其中的内容,如:
复制代码 代码如下:







Javascript创建Silverlight Plugin以及自定义nonSilverlight和lowSilverlight样式_javascript技巧





  当客户端浏览器未安装Silverlight插件时,程序会在相应的区域显示一张带有热区的图片,热区指向的位置是Microsoft提供的Silverlight安装地址。理论上,你可以指定任何的自定义代码来显示nonSilverlight的效果,但是Silverlight默认没有提供低版本Silverlight情况下要显示的效果,也就是lowSilverlight的情况。
Silverlight可以自动实现向前兼容,也就是在低版本下编译的Silverlight包可以在高版本下运行,相反,在高版本下编译的Silverlight包不能再低版本下运行,此时Silverlight插件会显示一张默认的图片用来告知用户升级插件,并弹出一个提示框,如下图:

Javascript创建Silverlight Plugin以及自定义nonSilverlight和lowSilverlight样式_javascript技巧

 

Javascript创建Silverlight Plugin以及自定义nonSilverlight和lowSilverlight样式_javascript技巧

 

  个人觉得这种用户体验并非很好,试想,如果当前页面上有多个Silverlight插件,岂不是要弹出多个提示框吗?那么如何来解决这个问题呢?事实上,我们除了直接在页面上添加object标记来呈现Silverlight外,还可以通过javascript脚本来动态添加Silverlight。Silverlight.js脚本为我们提供了一系列可用的方法,详细内容大家可以参考下msdn http://msdn.microsoft.com/zh-cn/library/cc838126(v=VS.95).aspx#isinstalled

  以及如何通过脚本在页面上添加Silverlight,http://msdn.microsoft.com/zh-cn/library/cc265155(v=VS.95).aspx

  msdn上给出了非常详细的例子来告诉我们如何使用这些脚本方法,有一点需要注意,使用Silverlight.js文件时一定要与当前Silverlight版本相一致,否则可能会有脚本错误,对应的Silverlight.js文件可以在微软的站点上下载,你会发现其实有很多个可用的版本,其中还包括支持调试的版本哦。

  createObject方法参数在使用的时候有几个问题需要注意下:

  1. 参数按顺序指定,如果有不需要传递的参数可用null代替。

  2. parent element参数必须指定,也就是object标记的父元素,可直接将元素的id当做对象传入,但是在Firefox中不支持,此时可以使用document.getElementById(''elementId'')语句代替该参数即可。

  3. param列表通过数组传递,参数名称与在object标记中使用的名称保持一致即可。

  4. 事件列表如果没有对应的页面脚本则传null值,否则会报脚本错误。

  5. 最后一个参数context如果不需要可以省去,不用传null或空值。

  你应该注意到了,在使用createObject方法时我们可以顺便给Silverlight指定nonSilverlight效果,这个是通过param列表中的altHtml参数来指定的,实施上,我们在页面上直接使用object标记呈现Silverlight时也可以使用alt属性来指定nonSilverlight效果,这个与在object标记中直接插入html代码的效果相同。
通过使用createObject方法,我们完全可以自定义lowSilverlight效果了,下面是一个例子:

复制代码 代码如下:






  使用Silverlight.isInstalled()方法可以判断客户端浏览器是否已经安装了指定版本的Silverlight插件,如果已经安装了,则使用Silverlight.createObject方法创建Silverlight对象,否则输出自定义的内容。

这里还有一篇文章个人觉得很有用,给大家分享下吧!

http://www.itstrike.cn/Question/Use-JavaScript-to-create-Silverlight-Object-createObject

Silverlight 4 新特性之Silverlight as Drop Target

Silverlight 4 新特性之Silverlight as Drop Target

在上次项目中写过多篇关于拖拽的实现. 这些拖拽都是控件之间的效果. Silverlight 4 中我们甚至可以直接把文件系统中文件拖拽到Silverlight Application中承载. 这就是 silverlight 4中新特性Silverlight As Drop Target 支持这一点. 为了达到演示目的. 使用桌面图片拖拽到Silverlight Application中ScrollViewer动态显示. 先体验一下[你可以尝试从本地文件系统直接拖拽图片到这个Silverlight Application中看一下效果]:

实现步骤:

<1>: 页面布局

 
 
  1. <StackPanel x:Name="LayoutRoot" Background="White">  
  2.          <TextBlock Text="  "></TextBlock>  
  3.          <TextBlock Text="Silverlight AS Drop target.-chenkai[10.6.28]" VerticalAlignment="Center" HorizontalAlignment="Left" FontSize="16" Foreground="Red"  FontFamily="Comic Sans MS" FontWeight="BOld" Height="25" Width="655" />  
  4.          <ScrollViewer x:Name="ImagesTarget" Background="White"  Height="360" BorderBrush="Red" 
  5.                        VerticalScrollBarVisibility="Hidden" HorizontalScrollBarVisibility="Auto" AllowDrop="True">  
  6.                  <ItemsControl x:Name="ImageList" Height="353">  
  7.                      <!--定义数据模板 支持格式是Image图片 很重要 不然会包invaid异常 数据模板确实很强大.-->  
  8.                      <ItemsControl.ItemTemplate>  
  9.                          <DataTemplate>  
  10.                              <Image Source="{Binding}" Margin="5" Stretch="UniformToFill" Height="240" />  
  11.                          </DataTemplate>  
  12.                      </ItemsControl.ItemTemplate>  
  13.                      <!--项排序模式Horizontal 居中-->  
  14.                      <ItemsControl.ItemsPanel>  
  15.                          <ItemsPanelTemplate>  
  16.                              <StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center"/>  
  17.                          </ItemsPanelTemplate>  
  18.                      </ItemsControl.ItemsPanel>  
  19.                  </ItemsControl>  
  20.              </ScrollViewer>  
  21.      </StackPanel> 

<2>:后台实现代码

 
 
  1. //定义存储Image集合.  
  2.          ObservableCollection<BitmapImage> _images = new ObservableCollection<BitmapImage>();  
  3.    
  4.          public MainPage()  
  5.          {  
  6.              InitializeComponent();  
  7.              this.Loaded += new RoutedEventHandler(MainPage_Loaded);  
  8.          }  
  9.    
  10.          void MainPage_Loaded(object sender, RoutedEventArgs e)  
  11.          {  
  12.              //如果Image数据则直接加载进来.  
  13.              ImageList.ItemsSource = _images;  
  14.              ImagesTarget.Drop += new DragEventHandler(ImagesTarget_Drop);  
  15.          }  
  16.          void ImagesTarget_Drop(object sender, DragEventArgs e)  
  17.          {  
  18.              //判断拖拽数据是否存在  
  19.              if (e.Data == null)  
  20.              {  
  21.                  return;  
  22.              }  
  23.              else 
  24.              {  
  25.                  //利用Fileinfo 来初始化关于文件系统日常操作io对象 Fileinfo 【】数组 意味支持多张Image同时拖拽Silverlight Application  
  26.                  IDataObject dataObject = e.Data as IDataObject;  
  27.                  FileInfo[] files =dataObject.GetData(DataFormats.FileDrop) as FileInfo[];  
  28.    
  29.                  foreach (FileInfo file in files)  
  30.                  {  
  31.                      try  
  32.                      {  
  33.                          using (var stream = file.OpenRead())  
  34.                          {  
  35.                              //读取拖拽中图片源.  
  36.                              var imageSource = new BitmapImage();  
  37.                              imageSource.SetSource(stream);  
  38.                              //添加到集合中.  
  39.                              _images.Add(imageSource);  
  40.                          }  
  41.                      }  
  42.                      catch (Exception)  
  43.                      {  
  44.                          MessageBox.Show("Not a suppoted image.");  
  45.                      }  
  46.                  }  
  47.              }  
  48.          }  

因为前台ScrollView中DataTemplate中定义格式是Image绑定. 后台数据源用到ObservableCollection<BitmapImage>来封装从拖拽中得到图片数据. 另外一个就是FileInfo,提供创建、复制、删除、移动和打开文件的实例方法,并且帮助创建 FileStream 对象,既然通过Fileinfo得到FileStream对象 其他操作就是平常IO操作. 而Fileinfo[]数组则是用来支持同时拖拽多个对象.关于Fileinfo 更多详细资料请参见MSDN.

Silverlight 5 beta新特性探索系列:1.安装Silverlight 5 beta环境以及OOB模式下Silverlight 5 多窗口支持

Silverlight 5 beta新特性探索系列:1.安装Silverlight 5 beta环境以及OOB模式下Silverlight 5 多窗口支持

        Silverlight 5 beta版本总算于昨日放出,怀着激动的心情今天将开发环境更新为Silverlight 5 beta版本,并且接触Silverlight 5 beta的第一个新特性:OOB模式下的多窗口的弹出显示。

        现在我们开始Silverlight 5 Beta版本的安装,首先需要为VS2010打一个VS2010 SP1补丁,然后我们再下载Silverlight 5 Beta Tools for Visual Studio SP1,一步一步安装完毕,最后我们下载Silverlight 5 Features Document 新特性的文档。至此我们即可踏上Silverlight 5开发的征程。

        对于Silverlight 5 beta版本下面的新窗口的支持是基于OOB模式下的,所以我们首先新建一个Silverlight 5的应用程序,然后右键项目属性-->"允许浏览器外运行应用程序"勾中-->点击"浏览器外设置"-->"在浏览器外运行时需要提升 的信任"勾上。如下图所示:

        然后我们在后台代码中键入以下代码即可弹出一个窗口,点击窗口中的按钮我们可以继续弹出窗口,实现了无限制的弹出窗口。当然所有弹出的子窗口都是依赖于父 窗口而存在的。(Tip:在Silverlight 4.0中的Window类修改的大小都是自身窗口的大小,并不能弹出窗口)

 

  
  
  1. public partial class MainPage : UserControl 
  2.   { 
  3.       public MainPage() 
  4.       { 
  5.           InitializeComponent(); 
  6.           PopWindow(400.0, 20.0, "第"+Flag+"个实例窗口"); 
  7.       } 
  8.       public static int Flag = 0; 
  9.       private void PopWindow(double left,double top,string title ) 
  10.       { 
  11.           //设置Window的通用属性 
  12.           Window testwindow = new Window(); 
  13.           testwindow.Height = 400; 
  14.           testwindow.Width = 500; 
  15.           testwindow.Top = top
  16.           testwindow.Left = left
  17.           testwindow.Title = title; 
  18.           testwindow.Visibility = Visibility.Visible; 
  19.  
  20.           //添加一个内部有按钮的Canvas,设置Canvas的背景色为白色 
  21.           Button btn=new Button(); 
  22.           btn.Width=80.0; 
  23.           btn.Height=30.0; 
  24.           btn.Content="点  击"
  25.           btn.Margin = new Thickness(5, top + Flag * 10, 0, 0); 
  26.           btn.Click += new RoutedEventHandler(btn_Click); 
  27.           Canvas canvas = new Canvas(); 
  28.           canvas.Children.Add(btn); 
  29.           canvas.Background = new SolidColorBrush(Colors.White); 
  30.           testwindow.Content = canvas; 
  31.  
  32.           //窗口默认值是WindowState.normal正常情况 
  33.           testwindow.WindowState = WindowState.normal; 
  34.               //WindowState.Maximized; 窗口最大化 
  35.               //WindowState.Minimized; 窗口最小化 
  36.               //WindowState.normal;    普通窗口 
  37.  
  38.       void btn_Click(object sender, RoutedEventArgs e) 
  39.       { 
  40.           PopWindow(400.0, "第"+Flag+"个实例窗口"); 
  41.       } 
  42.   } 

        本实例采用VS2010 +Silverlight 5 beta制作,如需源码请点击 SL5First.zip 下载。

今天关于稳扎稳打Silverlight(30) - 2.0Tip/Trick之Silverlight.js, Silverlight.supportedUserAgent.js, 自定义启动界面, 响应鼠标滚的分享就到这里,希望大家有所收获,若想了解更多关于Essential Silverlight翻译连载---第二章 Silverlight第一步、Javascript创建Silverlight Plugin以及自定义nonSilverlight和lowSilverlight样式_javascript技巧、Silverlight 4 新特性之Silverlight as Drop Target、Silverlight 5 beta新特性探索系列:1.安装Silverlight 5 beta环境以及OOB模式下Silverlight 5 多窗口支持等相关知识,可以在本站进行查询。

本文标签:

上一篇Windows上的OpenAI Gym Atari(windows上的chrome是什么意思)

下一篇稳扎稳打Silverlight(19) - 2.0通信之调用REST服务,处理JSON格式, XML格式, RSS/ATOM格式的数据