www.91084.com

GVKun编程网logo

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

11

在本文中,我们将带你了解稳扎稳打Silverlight(30)-2.0Tip/Trick之Silverlight.js,Silverlight.supportedUserAgent.js,自定义启动界

在本文中,我们将带你了解稳扎稳打Silverlight(30) - 2.0Tip/Trick之Silverlight.js, Silverlight.supportedUserAgent.js, 自定义启动界面, 响应鼠标滚轮事件在这篇文章中,同时我们还将给您一些技巧,以帮助您实现更有效的Essential Silverlight翻译连载---第二章 Silverlight第一步、Silverlight 4 支持鼠标滚轮事件了、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'), // 包含此 object 元素的父元素

            "slPlugin"// object 元素的 id

            

{

                width: 
"100%",

                height: 
"100%",

                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());

        }


        
function onSLError(sender, args) 

{

            
// args - Sys.UI.Silverlight.ErrorEventArgs 类型

            // ErrorEventArgs.errorType - 错误类型

            // ErrorEventArgs.errorMessage - 错误信息

            // ErrorEventArgs.errorCode - 错误代码


            
// 程序 throw 出的异常可以在此处捕获到

            alert(args.errorType + "/n" + args.errorMessage + "/n" + args.errorCode);

        }


        
function onSourceDownloadComplete(sender, args) 

{

            alert(
"SourceDownloadComplete");

        }



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


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

            

    
</ script >


    
< script  type ="text/javascript" >



        window.onload 
= function() 

{


            
// getSilverlight() - 尝试下载指定的版本,如果指定空字符串 "" 则为尝试下载最新版本

            // Silverlight.getSilverlight("2.0.31005.0");


            
// isInstalled() - 判断是否安装了指定的 Silverlight 版本

            alert(Silverlight.isInstalled("2.0.31005.0"));


            
// 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
: 0;

        
}

        #silverlightControlHost

        
{

}
{

            height
: 100%;

        
}

    
</ 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" >


    

        
function onSourceDownloadProgressChanged(sender, args) 

{

            
// progress 属性 - 下载进度(0 - 1 之间)

            sender.findName("percent").Text = Math.round(args.progress * 10000/ 100 + "%";            

        }


        
function onSourceDownloadComplete(sender, args) 

{

            sender.findName(
"percent").Text = "100%";

        }


    
</ script >


</ body >

</ html >



3、响应并处理鼠标的滚轮事件
Wheel.xaml

< UserControl  x:Class ="Silverlight20.Tip.Wheel"

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

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

    
< StackPanel >

        
< TextBox  x:Name ="lblMsg"   />

    
</ StackPanel >

</ UserControl >


Wheel.xaml.cs

/**/ /*

 * 如何响应鼠标滚轮事件,可以参看 Deep Zoom Composer 生成的 MouseWheelHelper.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  System.Windows.browser;


namespace  Silverlight20.Tip

{

    
public partial class Wheel : UserControl

    

{

        
public Wheel()

        

{

            InitializeComponent();


            
this.Loaded += new RoutedEventHandler(Wheel_Loaded);

        }


        
void Wheel_Loaded(object sender, RoutedEventArgs e)

        

{

            HtmlPage.Window.AttachEvent(
"DOMMouseScroll", OnMouseWheel);

            HtmlPage.Window.AttachEvent(
"onmousewheel", OnMouseWheel);

            HtmlPage.Document.AttachEvent(
"onmousewheel", OnMouseWheel);

        }


        
private void OnMouseWheel(object sender, HtmlEventArgs args)

        

{

            args.PreventDefault();


            
double mouseDelta = 0;

            ScriptObject eventObj 
= args.EventObject;


            
// Mozilla and Safari  

            if (eventObj.GetProperty("detail"!= null)

            

{

                mouseDelta 
= ((double)eventObj.GetProperty("detail"));

            }


            
// IE and Opera   

            else if (eventObj.GetProperty("wheelDelta"!= null)

            

{

                mouseDelta 
= ((double)eventObj.GetProperty("wheelDelta"));

            }


            
// IE浏览器:mouseDelta == 120 向上滚动;mouseDelta == -120 向下滚动

            
// FF浏览器:mouseDelta == -3 向上滚动;mouseDelta == 3 向下滚动

            lblMsg.Text += mouseDelta.ToString();

        }

    }

}



OK
[源码下载]

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补丁。
 
本章未完,待续
 

Silverlight 4 支持鼠标滚轮事件了

Silverlight 4 支持鼠标滚轮事件了

   Silverlight 4 现在支持鼠标滚轮了。现在你可以在鼠标滚动的时候触发鼠标滚轮事件了。在Silverlight 4 Beta 1 发行之前,我们需要写javascript和一大堆C#代码来实现。现在只需要忘记这些代码了,你的代码将变得非常的简单。

 

    如果想使用简洁的鼠标滚轮事件代码,你只需要注册和实现鼠标滚轮事件即可。

 

    在 MouseLeftButtonDown / MouseLeftButtonUp / MouseRightButtonDown / MouseRightButtonUp / MouseEnter / MouseLeave events 这些鼠标事件之外,你会发现另外的名叫MouseWheel的事件。

   

    这个事件就是来实现上述特性的、可以简化你的代码的。你也可以在你的主控件中重载OnMouseWheel事件。

 

     下面是示例代码:

 

     

    

       在这个例子中,当鼠标滚轮事件注册了后,它会设置e.Delta作为鼠标滚动的输出值。

你可以检查这个值是正值或者负值,以此来决定你自己的程序的逻辑。

 

       原文地址:http://www.codeproject.com/Articles/45357/Silverlight-4-Mouse-Wheel-Support-in-your-Applicat.aspx

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第一步、Silverlight 4 支持鼠标滚轮事件了、Silverlight 4 新特性之Silverlight as Drop Target、Silverlight 5 beta新特性探索系列:1.安装Silverlight 5 beta环境以及OOB模式下Silverlight 5 多窗口支持的相关信息,请在本站查询。

本文标签: