Silverlight 5 是微软推出的一个强大的跨浏览器、跨平台的插件式应用程序框架,主要用于开发丰富的互联网应用程序(RIA),它支持多种编程语言(如 C#、VB.NET)和 XAML 语言,具备强大的图形渲染、媒体播放和数据处理能力,以下将从环境搭建、基础语法、核心功能及实战案例等方面详细介绍 Silverlight 5 的开发教程。

开发环境搭建
在开始 Silverlight 5 开发之前,需要安装以下必备工具:
- Visual Studio:推荐使用 Visual Studio 2010 或更高版本(如 VS 2012),需确保安装了 Silverlight 5 开发工具包。
- Silverlight 5 运行时:用户端需安装 Silverlight 5 插件,开发者可在开发工具包中找到离线安装包。
- Expression Blend(可选):用于设计 UI 界面,支持可视化编辑 XAML 文件。
安装完成后,创建新项目时选择“Silverlight 应用程序”模板,即可生成包含 App.xaml 和 MainPage.xaml 的基础项目结构。
XAML 与 UI 设计
XAML(eXtensible Application Markup Language)是 Silverlight 的界面描述语言,采用 XML 语法定义 UI 元素,以下是一个简单的 XAML 示例:
<UserControl x:Class="SilverlightApp.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid x:Name="LayoutRoot" Background="White">
<TextBlock Text="Hello, Silverlight 5!" FontSize="24" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<Button Content="Click Me" Click="Button_Click" Width="100" Height="30" Margin="0,50,0,0"/>
</Grid>
</UserControl>
- Grid 是常用的布局容器,支持行列定义。
- TextBlock 用于显示文本,Button 可绑定点击事件。
- 通过
HorizontalAlignment和VerticalAlignment属性可控制元素对齐方式。
C# 后端逻辑与事件处理
在 MainPage.xaml.cs 文件中,可编写 C# 代码处理业务逻辑,为按钮添加点击事件:

public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("Button clicked!");
}
}
- 事件处理:如
Click、MouseEnter等事件可通过 XAML 或 C# 绑定。 - 数据绑定:使用
{Binding}语法将 UI 元素与后端数据关联,Text="{Binding UserName}"。
核心功能详解
图形与动画
Silverlight 5 提供了丰富的图形渲染能力,支持矢量图形、位图操作和硬件加速,动画可通过 Storyboard 实现:
<DoubleAnimation
Storyboard.TargetName="MyButton"
Storyboard.TargetProperty="Opacity"
From="1" To="0" Duration="0:0:1"
RepeatBehavior="Forever"/>
上述代码可使按钮的透明度在 1 秒内从 1 变为 0,并无限循环。
媒体支持
支持视频(WMV、MP4)、音频(WMA、MP3)播放,可通过 MediaElement 控件实现:
<MediaElement Source="Video.wmv" AutoPlay="True" Width="400" Height="300"/>
- 特性:支持 DRM 保护、直播流、硬件解码等高级功能。
数据访问
可通过 WCF RIA Services 实现与后端数据库的交互,简化 CRUD 操作,在服务端定义数据模型后,客户端可直接通过 LINQ 查询数据。

依赖属性与附加属性
依赖属性是 Silverlight 的核心特性,支持数据绑定、样式继承和动画,自定义依赖属性需继承 DependencyObject 并使用 public static readonly DependencyProperty 定义。
实战案例:简单计算器
- UI 设计:在 XAML 中添加两个
TextBox(输入数字)、一个ComboBox(选择运算符)和一个Button(触发计算)。 - 逻辑实现:在 C# 中解析输入,根据运算符执行加减乘除,并通过
TextBlock显示结果。 - 异常处理:捕获非数字输入或除零错误,提示用户。
部署与发布
- 生成 XAP 文件:编译项目后,Bin 目录下会生成
.xap文件(Silverlight 应用程序包)。 - 嵌入网页:通过 HTML/Object 标签将 XAP 文件嵌入网页,
<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%"> <param name="source" value="ClientBin/SilverlightApp.xap"/> <param name="onError" value="onSilverlightError" /> <param name="background" value="white" /> <param name="minRuntimeVersion" value="5.0.61118.0" /> </object>
- 配置 IIS:确保服务器支持 MIME 类型(如
.xap对应application/x-silverlight-2)。
性能优化技巧
- 减少 XAML 复杂度:避免过度嵌套布局容器。
- 异步加载:使用
Dispatcher.BeginInvoke处理耗时操作,避免界面卡顿。 - 虚拟化:对长列表使用
VirtualizingStackPanel提升渲染性能。
相关问答 FAQs
Silverlight 5 与 HTML5 有什么区别?
Silverlight 5 是基于插件的 RIA 框架,支持强类型语言(如 C#)和复杂业务逻辑,适合企业级应用;而 HTML5 是浏览器原生技术,无需插件,但在图形渲染和复杂动画方面功能较弱,Silverlight 已停止更新,而 HTML5 是当前 Web 开发的主流方向。
如何在 Silverlight 5 中实现跨域访问?
若需访问不同域的服务,需在服务器端创建客户端访问策略文件(clientaccesspolicy.xml 或 crossdomain.xml),允许 Silverlight 应用请求资源。clientaccesspolicy.xml 内容如下:
<?xml version="1.0" encoding="utf-8"?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from http-request-headers="*">
<domain uri="*"/>
</allow-from>
<grant-to>
<resource path="/" subdomain="include"/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy> 