本文目录一览:
稳扎稳打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"
>

<
a
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第一步
第二章 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 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 Application中承载. 这就是 silverlight 4中新特性Silverlight As Drop Target 支持这一点. 为了达到演示目的. 使用桌面图片拖拽到Silverlight Application中ScrollViewer动态显示. 先体验一下[你可以尝试从本地文件系统直接拖拽图片到这个Silverlight Application中看一下效果]:

实现步骤:
<1>: 页面布局
- <StackPanel x:Name="LayoutRoot" Background="White">
-
<TextBlock Text=" "></TextBlock>
-
<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" />
-
<ScrollViewer x:Name="ImagesTarget" Background="White" Height="360" BorderBrush="Red"
-
VerticalScrollBarVisibility="Hidden" HorizontalScrollBarVisibility="Auto" AllowDrop="True">
-
<ItemsControl x:Name="ImageList" Height="353">
-
<!--定义数据模板 支持格式是Image图片 很重要 不然会包invaid异常 数据模板确实很强大.-->
- <ItemsControl.ItemTemplate>
- <DataTemplate>
-
<Image Source="{Binding}" Margin="5" Stretch="UniformToFill" Height="240" />
- </DataTemplate>
- </ItemsControl.ItemTemplate>
-
<!--项排序模式Horizontal 居中-->
- <ItemsControl.ItemsPanel>
- <ItemsPanelTemplate>
-
<StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center"/>
- </ItemsPanelTemplate>
- </ItemsControl.ItemsPanel>
- </ItemsControl>
- </ScrollViewer>
- </StackPanel>
<2>:后台实现代码
- //定义存储Image集合.
- ObservableCollection<BitmapImage> _images = new ObservableCollection<BitmapImage>();
-
-
public MainPage()
- {
- InitializeComponent();
- this.Loaded += new RoutedEventHandler(MainPage_Loaded);
- }
-
- void MainPage_Loaded(object sender, RoutedEventArgs e)
- {
- //如果Image数据则直接加载进来.
- ImageList.ItemsSource = _images;
-
ImagesTarget.Drop += new DragEventHandler(ImagesTarget_Drop);
- }
- void ImagesTarget_Drop(object sender, DragEventArgs e)
- {
- //判断拖拽数据是否存在
-
if (e.Data == null)
- {
-
return;
- }
-
else
- {
- //利用Fileinfo 来初始化关于文件系统日常操作io对象 Fileinfo 【】数组 意味支持多张Image同时拖拽Silverlight Application
-
IDataObject dataObject = e.Data as IDataObject;
-
FileInfo[] files =dataObject.GetData(DataFormats.FileDrop) as FileInfo[];
-
-
foreach (FileInfo file in files)
- {
- try
- {
- using (var stream = file.OpenRead())
- {
- //读取拖拽中图片源.
- var imageSource = new BitmapImage();
- imageSource.SetSource(stream);
- //添加到集合中.
-
_images.Add(imageSource);
- }
- }
- catch (Exception)
- {
-
MessageBox.Show("Not a suppoted image.");
- }
- }
- }
- }
因为前台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版本总算于昨日放出,怀着激动的心情今天将开发环境更新为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类修改的大小都是自身窗口的大小,并不能弹出窗口)
- public partial class MainPage : UserControl
- {
- public MainPage()
- {
- InitializeComponent();
- PopWindow(400.0, 20.0, "第"+Flag+"个实例窗口");
- }
- public static int Flag = 0;
- private void PopWindow(double left,double top,string title )
- {
- //设置Window的通用属性
- Window testwindow = new Window();
- testwindow.Height = 400;
- testwindow.Width = 500;
- testwindow.Top = top;
- testwindow.Left = left;
- testwindow.Title = title;
- testwindow.Visibility = Visibility.Visible;
-
- //添加一个内部有按钮的Canvas,设置Canvas的背景色为白色
- Button btn=new Button();
- btn.Width=80.0;
- btn.Height=30.0;
- btn.Content="点 击";
- btn.Margin = new Thickness(5, top + Flag * 10, 0, 0);
- btn.Click += new RoutedEventHandler(btn_Click);
- Canvas canvas = new Canvas();
- canvas.Children.Add(btn);
- canvas.Background = new SolidColorBrush(Colors.White);
- testwindow.Content = canvas;
-
- //窗口默认值是WindowState.normal正常情况
- testwindow.WindowState = WindowState.normal;
- //WindowState.Maximized; 窗口最大化
- //WindowState.Minimized; 窗口最小化
- //WindowState.normal; 普通窗口
-
- void btn_Click(object sender, RoutedEventArgs e)
- {
- PopWindow(400.0, "第"+Flag+"个实例窗口");
- }
- }
本实例采用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 多窗口支持的相关信息,请在本站查询。