Silverlight实例教程 - Out of Browser的Debug和Notifications窗口
熟悉Silverlight的朋友应该知道,Silverlight从1.0版本到现在的4.0版本,其功能性越来越强大,从下图我们可以看出,Silverlight的应用模型的一个转变过程,从Javascript到现在Trusted应用,我们目睹了Silverlight坎坷的演变过程,尽管现在仍旧存在不足之处,但是有了更多开发人员的支持和帮助,Silverlight一定会更好更强大。
在前几篇中,我们通过简单的实例详细介绍了Silverlight Out of Browser应用开发基础。为了下一篇的实例做准备,本篇,我们将补充介绍一些Silverlight Out of Browser应用开发知识点,
1. 回顾Silverlight Out of Browser存取本地目录API;
2. 学习Silverlight Out of Browser应用Debug调试;
3. 学习Silverlight Out of Browser的消息通知窗口API;
回顾Silverlight Out of Browser存取本地目录API,还记得在前面的文章我们已经介绍,Silverlight提供有现成的API,允许应用在OOB模式下访问My...系列目录,API调用方法很简单,而OOB模式下文件访问,应用可以支持System.IO引用空间中的操作类,例如File类,Directory类,Environment类,等等。
2 {
3 var path = Environment.GetFolderPath(Environment.SpecialFolder.MyMusic);
4 lsMyMusics.Items.Clear();
5 DirectoryInfo myDirectory = new DirectoryInfo(path);
6 foreach (FileInfo file in myDirectory.EnumerateFiles())
7 {
8 lsMyMusics.Items.Add(file);
9 }
10 }
在下文中,我们将用到Silverlight默认API,读取My Music目录的音乐文件作为默认播放目录。其代码与上相似。
Silverlight Out of Browser应用的调试方法(Debug)
在使用Silverlight开发应用时,Debug是最常用的Visual Studio工具之一。大家可能对Silverlight基于Web浏览器的调试方法并不陌生,终归ASP.NET应用开发调试已经为Silverlight打下了良好的基础。而对于Silverlight的OOB是否通常支持Debug呢?答案是肯定的。
在创建项目时,默认的设置,是支持基于浏览器的应用的Debug。如果需要OOB应用支持脱离浏览器进行Debug,需要按照以下几个步骤设置:
1. 首先需要设置Silverlight客户端应用为“开始项目”,
2. 然后选择客户端应用“Properties”属性栏,设置“Start Action”中的“Installed out-of-browser application”,
3. 点击保存后,重新F5调试应用,即可发现,应用将直接作为OOB模式启动,不再进入Web浏览器中提示用户安装,这时就可以在代码中设置断点进行Debug了。
学习Silverlight Out of Browser的消息通知窗口API(Toast Notifications Windows)
Toast Notifications Windows,又称为Silverlight消息通知窗口,是Silverlight 4的一个新特性,该窗口目前仅限于Out of Browser应用使用。该消息窗口主要是提供临时消息提示,在应用中可以起到让用户注意警示的作用。现在很多Windows应用都喜欢使用该窗口模式显示广告,更新提示等功能。
Silverlight的Notifications Windows目前有以下限制:
1. 窗口最大尺寸限制,最大仅支持宽400,高100的提示窗口;
2. 目前不支持Transparency窗口特效,WPF可以支持;
3. 为了区别其他窗口应用,Notifications Windows无窗口边框;
在明白以上限制后,使用Silverlight API很轻松就能创建一个Toast Notifications窗口。其方法如下:
首先,在SilverlightOOBDemo中创建一个NotificationControl控件,
编辑NotificationControl控件,我们简单的对该控件进行美化,使其看起来更加友好,
2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4 xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
5 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
6 mc:Ignorable="d"
7 d:DesignHeight="300" d:DesignWidth="400">
8
9 <Grid x:Name="LayoutRoot" Background="White">
10 <Border x:Name="Frame" Width="300" Height="100" Background="LightYellow">
11 <StackPanel Orientation="Vertical">
12 <Border Width="290" Height="24" CornerRadius="4" Margin="2,4,2,4">
13 <Border.Background>
14 <LinearGradientBrush StartPoint="0.5,0.0"
15 EndPoint="0.5,1.0">
16 <GradientStop Offset="0.2" Color="#FF1C68A0" />
17 <GradientStop Offset="1.0" Color="#FF54A7E2" />
18 </LinearGradientBrush>
19 </Border.Background>
20 <Border.Effect>
21 <DropShadowEffect BlurRadius="4" ShadowDepth="4"
22 Opacity="0.4" />
23 </Border.Effect>
24 <TextBlock Text="友情提示" FontSize="12"
25 FontWeight="Bold" Foreground="White" Margin="4" />
26 </Border>
27 <StackPanel Orientation="Horizontal">
28 <Image Source="/SilverlightOOBDemo;component/Images/Update.png" Width="48" Height="48"
29 Stretch="Fill" Margin="4" VerticalAlignment="Top" />
30 <TextBlock Width="240" Text="检测到新的音乐文件,已经更新到播放列表。小广告:我的博客http://jv9.cnblogs.com"
31 FontSize="11" Foreground="#FF202020" TextWrapping="Wrap"
32 Margin="4" />
33 </StackPanel>
34 </StackPanel>
35 </Border>
36 </Grid>
37 </UserControl>
38
然后回到OutofBrowserMainPage页面,这里,我们在“关于”按钮上,添加Click事件响应,使其被点击后,弹出Notifications窗口。
首先创建notifyWindow实例,
2 Window OOBWindow = Application.Current.MainWindow;
3 NotificationWindow notifyWindow = null;
4 #endregion
5
6 #region Constructor
7 public OutofBrowserMainPage()
8 {
9 InitializeComponent();
10 notifyWindow = new NotificationWindow();
11
12
13 }
14 #endregion
然后在Click事件中进行窗口激活:
2 {
3 if (null == notifyWindow)
4 MessageBox.Show("通告窗口仅能运行在OOB模式下,请安装Silverlight应用到本地。");
5
6 if (true == App.Current.IsRunningOutOfBrowser)
7 {
8 if (notifyWindow.Visibility == Visibility.Visible)
9 notifyWindow.Close();
10
11 NotificationControl myNotify = new NotificationControl();
12 notifyWindow.Width = 300;
13 notifyWindow.Height = 100;
14 notifyWindow.Content = myNotify;
15 notifyWindow.Show(10000);
16 }
17
18 }
在上面代码中,我们创建了一个新的Notification窗口实例,然后使用Show(毫秒),使其显示在客户端,最终显示效果如下:
今天的内容暂时到这里了,下一篇,我们将综合使用这些Silverlight OOB应用开发技巧实现一个完整应用实例, Silverlight Out of Browser音乐播放器。
本篇源代码下载
本文转自 冷秋寒 51CTO博客,原文链接:http://blog.51cto.com/kevinfan/360560 ,如需转载请自行联系原作者
Silverlight实例教程 - Out of Browser的Debug和Notifications窗口相关推荐
- 一起谈.NET技术,Silverlight实例教程 - Out of Browser的Debug和Notifications窗口
Silverlight 实例教程索引 Silverlight 实例教程 - Out of Browser开篇 Silverlight 实例教程 - Out of Browser配置,安装和卸载 Sil ...
- Silverlight实例教程 - Out of Browser在线更新和Silent安装
通过前几篇的学习和实践,相信大家可以很轻松的创建个性化Silverlight Out of Browser应用.上周,在银光中国网论坛有人问到对于Silverlight Out of Browser应 ...
- Silverlight实例教程 - Out of Browser的自定义应用
在上两篇教程中,讲述了Silverlight的Out of Browser理论知识和基础实践.本节将讲述如何创建自定义的Out of Browser应用以及如何调试Silverlight的Out of ...
- Silverlight实例教程 - Out of Browser开篇
众所周知,学习一门IT技术,最关键的是实践,无论是软件开发还是网络调试,只要在真实环境下勤于动手和思考,很快就能掌握一门技术,Silverlight也不例外.为了帮助更多朋友快速学习掌握Silverl ...
- Silverlight实例教程 - Validation数据验证开篇
Silverlight 4 Validation验证实例系列 Silverlight实例教程 - Validation数据验证开篇 Silverlight实例教程 - Validation数据验证基础 ...
- Silverlight实例教程 - Navigation导航框架系列汇总
Silverlight实例教程导航框架系列,结合实例讲述Silverlight导航开发基础,该教程不仅仅适用于Silverlight,而且可以被应用于Windows Phone开发领域. 文章列表: ...
- Silverlight实例教程 - Validation验证系列汇总
转自http://www.cnblogs.com/jv9/archive/2010/09/27/1836394.html Silverlight Validation验证系列教程,详细讲解Silver ...
- Silverlight实例教程 - 理解Navigation导航框架Frame类
通过"Navigation导航框架开篇"的介绍,可以了解到Silverlight导航框架可被应用于多种场合,最为常见的是实现Silverlight项目内部页面切换.在Silverl ...
- Silverlight实例教程 – Datagrid,Dataform数据验证和ValidationSummary
上一篇,我们讨论了,捕获用户提交数据验证.本篇将集中讨论Datagrid和Dataform两个数据控件的数据验证方法,其中,我们会附加介绍一个新的验证控件ValidationSummary. 概述 D ...
最新文章
- php4和php5的区别,php4和php5区别是什么
- 将应用程序11M内存占用,降至500K [转]
- java学习笔记12--异常处理
- 2018-2019 ACM-ICPC, Asia Seoul Regional Contest——A - Circuits
- Silverlight专题(15) - 你自己的视频播放器之自定义MoveToPointSlider
- MySQL用户如何构建实时数仓
- 使用 Moq 测试.NET Core 应用 -- Mock 方法
- 5.4寸iPhone 12真机曝光:可单手握住的快乐!
- matlab朴素贝叶斯手写数字识别_从“手写数字识别”学习分类任务
- vscode open with live server_vscode容器开发填坑记录remote-container
- jQuery创建Dom元素
- LINUX占用太多内存的解决方法
- 20191218每日一句
- 【华南理工大学】PC客户端配置-如何在家连接学校的校园网
- mac如何安装mysql可视化界面_Mac系统下安装mysql数据库和使用phpMyAdmin可视化
- 2022淘宝双十一优惠券如何叠加使用?淘宝双十一优惠券叠加规则介绍
- Node - 从0基础到实战企业官网
- CodeForces - 863B-Kayaking(暴力)
- minigui源码学习
- iOS播放器、Flutter高仿书旗小说、卡片动画、二维码扫码、菜单弹窗效果等源码
热门文章
- 解决 FtpClient 类无法导入 .
- oracle java_pool_size_总结 Oracle 内存分配和调优
- 为什么c语言要定义变量,C语言为什么要规定对所用到的变量要“先定义,后使用”...
- oracle 拆分逗号转行_一个列用逗号隔开,列转行,看看是否有更好的办法。
- win10千万不要重置_DELL戴尔电脑WIN10升级后没有声音
- java获取mavenlib路径,maven install报错致命错误: 在类路径或引导类路径中找不到程序包 java.lang | ZPY博客...
- android 升级带服务端,安卓应用升级服务端设计思路
- 永冻土层matlab图片,北极圈都32℃了!千年永冻土层快“热化”了?
- 如何在liferay ,struts2中跳转页面
- Intellj(IDEA) warning no artifacts configured