System.Data.Silverlight V2.0下载

weixin_39821228 2019-11-22 10:00:23
System.Data.Silverlight V2.0版本升级说明
一、升级说明
1、重写了一套DataSet、DataTable,自定义Xml序列化和反序列化方法;
2、优化了程序,引用该组建无需引用其它关联程序集;
3、增加DataTable与实体类集合的互转、DataTable转换成动态类型集合、DataTable直接绑定到控件;
4、增加事务处理功能;
5、感谢网友“尘世流浪汉”提出宝贵意见,也欢迎大家试用并提出更多建议!
二、新功能示例
1、DataTable新功能
try
{
//创建一个数据连接

相关下载链接://download.csdn.net/download/kekeqy/5431195?utm_source=bbsseo
...全文
11 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
System.Data.Silverlight V2.0版本升级说明 一、升级说明 1、重写了一套DataSet、DataTable,自定义Xml序列化和反序列化方法; 2、优化了程序,引用该组建无需引用其它关联程序集; 3、增加DataTable与实体类集合的互转、DataTable转换成动态类型集合、DataTable直接绑定到控件; 4、增加事务处理功能; 5、感谢网友“尘世流浪汉”提出宝贵意见,也欢迎大家试用并提出更多建议! 二、新功能示例 1、DataTable新功能 try { //创建一个数据连接 DbConnection conn = new DbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|SoundEvents.mdb;"); //SQL Server无须做如下两步设置 //设置使用的数据访问程序集 conn.AssemblyName = "System.Data"; //设置数据工厂,这里是Oledb方式的数据工厂 conn.DbProviderFactory = "System.Data.OleDb.OleDbFactory"; //创建一个数据命令 DbCommandSyn cmd = new DbCommandSyn(); //设置命令的连接 cmd.Connection = conn; //设置SQL语句,可以是存储过程 cmd.CommandText = "SELECT [JtServerCode],[JtEventID],[JtEventName] FROM [JtEvents] WHERE [JtServerCode]=@JtServerCode"; //设置命令类型,一般SQL语句是Text,存储过程是StoredProcedure cmd.CommandType = DbCommandType.Text; //设置执行类型 cmd.ExecuteType = DbExecuteType.Reader; //添加一个参数,无参数可以不添加 cmd.Parameters.Add(new DbParameter("@JtServerCode", "jt01")); //执行命令,得到结果 DbCommandExecuteResult result = cmd.Execute(); if (!string.IsNullOrEmpty(result.ErrMsg))//首先判断ErrMsg是否有值,有表示执行过程发生错误 { MessageBox.Show("发生错误:" + result.ErrMsg); } else { //将DataTable直接绑定到控件 DataTable dt = result.ReaderResult; dataGrid1.ItemsSource = dt; //将DataTable转换成实体类集合后绑定到控件 List hisEvents = result.ReaderResult.ToEntityList(); dataGrid1.ItemsSource = hisEvents; //将DataTable转换成动态类型集合后绑定到控件 List objList = result.ReaderResult.ToObjectList(); dataGrid1.ItemsSource = objList; } } catch (Exception ex) { MessageBox.Show("发生错误:" + ex.ToString()); } 2、事物示例 try { //创建一个数据连接 DbConnection conn = new DbConnection("Data Source=|DataDirectory|CSmsPlatThird.db;Pooling=true;FailIfMissing=false"); //设置使用的数据访问程序集 conn.AssemblyName = "System.Data.SQLite"; //设置数据工厂,这里是SQLite的数据工厂 conn.DbProviderFactory = "System.Data.SQLite.SQLiteFactory"; //创建一个数据命令 DbCommandSyn cmd = new DbCommandSyn(); //设置命令的连接 cmd.Connection = conn; //设置执行类型 cmd.ExecuteType = DbExecuteType.Transaction; //添加事务 TransactionItem trans1 = new TransactionItem(); trans1.CommandText = "INSERT INTO [T_Message] ([Mobile],[Content],[DateTime],[PlatFlag],[State]) VALUES (@Mobile,@Content,@DateTime,@PlatFlag,@State)"; trans1.CommandType = DbCommandType.Text; trans1.Parameters.AddWithValue("@Mobile", new Random().Next(10000000, 888888888).ToString()); trans1.Parameters.AddWithValue("@Content", "这是一条测试短信!"); trans1.Parameters.AddWithValue("@DateTime", DateTime.Now); trans1.Parameters.AddWithValue("@PlatFlag", "SZHK"); trans1.Parameters.AddWithValue("@State", true); cmd.Transaction.Add(trans1); TransactionItem trans2 = new TransactionItem(); trans2.CommandText = "INSERT INTO [T_Logger] ([Content],[DateTime],[PlatFlag]) VALUES (@Content,@DateTime,@PlatFlag)"; trans2.CommandType = DbCommandType.Text; trans2.Parameters.AddWithValue("@Content", "短信发送成功!"); trans2.Parameters.AddWithValue("@DateTime", DateTime.Now); trans2.Parameters.AddWithValue("@PlatFlag", "SZHK"); cmd.Transaction.Add(trans2); //执行命令,得到结果 DbCommandExecuteResult result = cmd.Execute(); if (!string.IsNullOrEmpty(result.ErrMsg))//首先判断ErrMsg是否有值,有表示执行过程发生错误 { MessageBox.Show("发生错误:" + result.ErrMsg); } else { if (result.TransactionResult) { MessageBox.Show("事务执行成功!"); } else { MessageBox.Show("事务执行失败!"); } } } catch (Exception ex) { MessageBox.Show("发生错误:" + ex.ToString()); } 三、技术交流 有任何问题可以加入唯一指定的专用QQ群153079750进行反馈交流,也欢迎加入笔者的另一个Silverlight技术群175213051进行交流。
Silverlight2.0功能展示Demo源码 1、Silverlight(3) - 2.0控件之Border, Button, Calendar, Canvas, CheckBox, ComboBox 介绍 Silverlight 2.0 控件一览:Border, Button, Calendar, Canvas, CheckBox, ComboBox 2、Silverlight(4) - 2.0控件之DataGrid, DatePicker, Grid, GridSplitter, HyperlinkButton, Image 介绍 Silverlight 2.0 控件一览:DataGrid, DatePicker, Grid, GridSplitter, HyperlinkButton, Image 3、Silverlight(5) - 2.0控件之ListBox, MediaElement, MultiScaleImage, PasswordBox, ProgressBar, RadioButton 介绍 Silverlight 2.0 控件一览:ListBox, MediaElement, MultiScaleImage, PasswordBox, ProgressBar, RadioButton 4、Silverlight(6) - 2.0控件之ScrollViewer, Slider, StackPanel, TabControl, TextBlock, TextBox, ToggleButton 介绍 Silverlight 2.0 控件一览:ScrollViewer, Slider, StackPanel, TabControl, TextBlock, TextBox, ToggleButton 5、Silverlight(7) - 2.0图形之Ellipse, Line, Path, Polygon, Polyline, Rectangle 介绍 Silverlight 2.0 图形: Ellipse - 椭圆 Line - 线 Path - 一系列相互连接的直线和曲线 Polygon - 多边形,闭合图形,起点与终点自动相连 Polyline - 非闭合图形,一串连接起来的线,起点与终点不会自动相连 Rectangle - 矩形 6、Silverlight(8) - 2.0图形之基类System.Windows.Shapes.Shape 介绍 Silverlight 2.0 图形:基类System.Windows.Shapes.Shape(Ellipse, Line, Path, Polygon, Polyline, Rectangle都继承自抽象类System.Windows.Shapes.Shape)。 Fill - 填充;Stroke - 笔画(边框) StrokeThickness - 笔画(边框)尺寸 Stretch - 拉伸值 StrokeDashArray - 虚线和间隙的值的集合 StrokeDashCap - 虚线两端(线帽)的类型 StrokeStartLineCap - 虚线起始端(线帽)的类型 StrokeEndLineCap - 虚线终结端(线帽)的类型 StrokeDashOffset - 虚线的起始位置。从虚线的起始端的 StrokeDashOffset 距离处开始描绘虚线 StrokeLineJoin - 图形连接点处的连接类型 StrokeMiterLimit - 斜接长度 与 StrokeThickness/2 的比值。默认值 10,最小值 1 7、Silverlight(9) - 2.0画笔之SolidColorBrush, ImageBrush, VideoBrush, LinearGradientBrush, RadialGradientBrush 介绍 Silverlight 2.0 画笔: SolidColorBrush - 单色画笔 ImageBrush - 图像画笔 VideoBrush - 视频画笔 LinearGradientBrush - 线性渐变画笔 RadialGradientBrush - 放射性渐变画笔 8、Silverlight(10) - 2.0其它之Transform详解,以及UIElement和FrameworkElement的常用属性 介绍 Silverlight 2.0 其它: RenderTransform - 呈现位置的转换(System.Windows.Media.Transform类型) RenderTransformOrigin - 位置转换的中心点 Clip - 容器的剪辑区域(System.Windows.Media.Geometry类型) IsHitTestVisible - 命中测试是否可见 Opacity - 不透明度。0 - 1之间 OpacityMask - 不透明蒙版(遮罩)(System.Windows.Media.Brush类型) UseLayoutRounding - 是否使用完整像素布局 Cursor - 鼠标移动到 FrameworkElement 上面时,鼠标指针的样式 Margin - 容器边缘与边缘之外的空白距离(像素值:上下左右;左右,上下;左,上,右,下) Tag - 保存一些额外的信息(System.Object类型) 9、Silverlight(11) - 2.0动画之ColorAnimation, DoubleAnimation, PointAnimation, 内插关键帧动画 介绍 Silverlight 2.0 动画: ColorAnimation - 在两个 Color 值之间做线性内插动画处理 DoubleAnimation - 在两个 Double 值之间做线性内插动画处理 PointAnimation - 在两个 Point 值之间做线性内插动画处理 内插关键帧动画 - 在 Color 或 Double 或 Point 动画中内插关键帧,以做线性, 离散, 三次贝塞尔曲线的动画处理 动态改变动画 - 通过程序控制,动态地改变动画 10、Silverlight(12) - 2.0外观之样式, 模板, 视觉状态和视觉状态管理器 介绍 Silverlight 2.0 外观控制:样式(Style), 模板(Template), 视觉状态(VisualState)和视觉状态管理器(VisualStateManager) 11、Silverlight(13) - 2.0交互之鼠标事件和键盘事件 介绍 Silverlight 2.0 人机交互:响应用户的鼠标操作和键盘操作。 MouseEnter - 鼠标进入时触发的事件(显然,此事件不能冒泡) MouseLeave - 鼠标离开时触发的事件(显然,此事件不能冒泡) MouseLeftButtonDown - 鼠标左键单击按下时触发的事件 MouseLeftButtonUp - 鼠标左键单击按下并放开时触发的事件 MouseMove - 鼠标移动时触发的事件 MouseEventArgs.GetPosition() - 鼠标相对于指定元素的坐标 MouseButtonEventArgs.Handled - 此事件是否已被处理 KeyDown - 鼠标按下时触发的事件 KeyUp - 鼠标按下并放开时触发的事件 KeyEventArgs.Key - 与事件相关的键盘的按键 [Input.Key枚举] KeyEventArgs.Handled - 是否处理过此事件 Keyboard.Modifiers - 当前按下的辅助键 [Input.ModifierKeys枚举] 12、Silverlight(14) - 2.0交互之InkPresenter(涂鸦板) 介绍 Silverlight 2.0 人机交互:InkPresenter(涂鸦板)。 InkPresenter - 涂鸦板,也就是在面板上呈现墨迹。InkPresenter 可以包含子控件 Cursor - 鼠标移动到 InkPresenter 上面时,鼠标指针的样式 Background - 涂鸦板背景 Opacity - 面板上墨迹的不透明度 Clip - InkPresenter 的剪辑区域 Stroke.DrawingAttributes - Stroke(笔划)的外观属性 UIElement.CaptureMouse() - 为 UIElement 对象启用鼠标捕捉 UIElement.CaptureMouse() - 为 UIElement 对象释放鼠标捕捉 13、Silverlight(15) - 2.0数据之一次绑定, 单向绑定, 双向绑定, INotifyPropertyChanged, 数据转换, 数据验证 介绍 Silverlight 2.0 数据绑定: Binding - 将绑定目标对象的属性与数据源联接起来 INotifyPropertyChanged - 向客户端发出某一属性值已更改的通知 IValueConverter - 值转换接口,将一个类型的值转换为另一个类型的值。它提供了一种将自定义逻辑应用于绑定的方式 BindingValidationError - 出现验证错误或解决上次验证错误则触发此事件 14、Silverlight(16) - 2.0数据之独立存储(Isolated Storage) 介绍 Silverlight 2.0 数据的独立存储(Isolated Storage): IsolatedStorageFile - 操作 独立存储 的类; IsolatedStorageFile.GetUserStoreForSite() - 按站点获取用户的独立存储 IsolatedStorageFile.GetUserStoreForApplication() - 按应用程序获取用户的独立存储 IsolatedStorageSettings - 在独立存储中保存的 key-value 字典表 IsolatedStorageSettings.SiteSettings - 按站点保存的 key-value 字典表 IsolatedStorageSettings.ApplicationSettings - 按应用程序保存的 key-value 字典表 15、Silverlight(17) - 2.0数据之详解DataGrid, 详解ListBox 介绍 Silverlight 2.0 详解DataGrid, 绑定数据到ListBox: AutoGenerateColumns - 是否根据数据源自动生成列 RowDetailsVisibilityMode - 显示相应的行的详细数据时所使用的显示模式 DataGrid.RowDetailsTemplate - 用于显示相应的行的详细数据的模板 AreRowDetailsFrozen - 是否冻结 RowDetailsTemplate GridLinesVisibility - 表格分隔线的显示方式 RowBackground - 奇数数据行背景 AlternatingRowBackground - 偶数数据行背景 IsReadOnly - 单元格是否只读 FrozenColumnCount - 表格所冻结的列的总数(从左边开始数) SelectionMode - 行的选中模式 CanUserReorderColumns - 是否允许拖动列 CanUserResizeColumns - 是否允许改变列的宽度 CanUserSortColumns - 是否允许列的排序 16、Silverlight(18) - 2.0视频之详解MediaElement, 开发一个简易版的全功能播放器 介绍 Silverlight 2.0 详解MediaElement:开发一个简易版的全功能播放器。 Source - 需要播放的媒体地址 Stretch - 拉伸值 AutoPlay - 是否自动播放媒体 CurrentState - 播放状态 Position - 媒体的位置 DroppedFramesPerSecond - 媒体每秒正在丢弃的帧数 BufferingProgress - 缓冲进度 DownloadProgress - 下载进度 NaturalDuration - 媒体文件的时长; Volume - 音量大小 Balance - 音量平衡 BufferingTime - 需要缓冲的时间的长度 CurrentState - 播放状态 IsMuted - 是否静音 Play() - 播放媒体 Pause() - 暂停媒体的播放 Stop() - 停止媒体的播放 17、Silverlight(19) - 2.0通信之调用REST服务,处理JSON格式, XML格式, RSS/ATOM格式的数据 介绍 Silverlight 2.0 调用REST服务,处理JSON格式, XML格式, RSS/ATOM格式的数据。 通过 System.Net.WebClient 类调用 REST 服务 通过 System.Json 命名控件下的类处理 JSON 数据 通过 System.Xml.Linq 命名空间下的类(LINQ to XML)处理 XML 数据 通过 System.ServiceModel.Syndication 命名空间下的类处理 RSS/ATOM 数据 18、Silverlight(20) - 2.0通信之WebClient, 以字符串的形式上传/下载数据, 以流的方式上传/下载数据 介绍 Silverlight 2.0 详解WebClient,以字符串的形式上传、下载数据;以流的方式上传、下载数据。 WebClient - 将数据发送到指定的 URI,或者从指定的 URI 接收数据的类 DownloadStringAsync(Uri address, Object userToken) - 以字符串的形式下载指定的 URI 的资源 UploadStringAsync(Uri address, string data) - 以字符串的形式上传数据到指定的 URI。所使用的 HTTP 方法默认为 POST OpenReadAsync(Uri address, Object userToken) - 以流的形式下载指定的 URI 的资源 OpenWriteAsync(Uri address, string method, Object userToken) - 打开流以使用指定的方法向指定的 URI 写入数据 19、Silverlight(21) - 2.0通信之WebRequest和WebResponse, 对指定的URI发出请求以及接收响应 介绍 Silverlight 2.0 详解WebRequest和WebResponse,对指定的URI做GET和POST请求,以及接收其响应。 HttpWebRequest - 对指定的 URI 发出请求 Create() - 初始化一个 WebRequest BeginGetResponse() - 开始对指定 URI 资源做异步请求 EndGetResponse() - 结束对指定 URI 资源做异步请求 HttpWebResponse - 对指定的 URI 做出响应 GetResponseStream() - 获取响应的数据流 20、Silverlight(22) - 2.0通信之调用WCF服务, 对传输信息做加密 介绍 Silverlight 2.0 调用 WCF 服务,对客户端与服务端传输的消息做加密。在 Visual Studio 2008 中使用"添加服务引用"会自动生成代理类。只支持BasicHttpBinding 21、Silverlight(23) - 2.0通信之调用WCF的双向通信(Duplex Service) 介绍 Silverlight 2.0 调用 WCF 的双向通信服务(Duplex Service) 。 开发一个服务端主动向客服端发送股票信息的程序,首先客户端先向服务端发送需要监控的股票的股票代码,然后服务端在该股信息发生变化的时候将信息推送到客户端 22、Silverlight(24) - 2.0通信之Socket, 开发一个多人聊天室 介绍 Silverlight 2.0 Socket通信。开发一个多人聊天室。 服务端:实例化Socket, 绑定, 监听, 连接, 接收数据, 发送数据 客户端:实例化Socket, 指定服务端地址, 连接, 接收数据, 发送数据 23、Silverlight(25) - 2.0线程之Thread, Timer, BackgroundWorker, ThreadPool 介绍 Silverlight 2.0 使用Thread, Timer, BackgroundWorker, ThreadPool来实现多线程开发。 Thread - 用于线程的创建和控制的类 Timer - 用于以指定的时间间隔执行指定的方法的类 BackgroundWorker - 用于在单独的线程上运行操作 ThreadPool - 线程池的管理类 24、Silverlight(26) - 2.0线程之Lock, Interlocked, EventWaitHandle, Monitor, ThreadStaticAttribute 介绍 Silverlight 2.0 使用Lock, Interlocked, EventWaitHandle, Monitor来实现线程同步。 Lock - 确保代码块完成运行,而不会被其他线程中断 Interlocked - 为多个线程共享的变量提供原子级的操作 EventWaitHandle - 通知其他线程是否可入的类 Monitor - 提供同步访问对象的机制 ThreadStaticAttribute - 所指定的静态变量对每个线程都是唯一的 25、Silverlight(27) - 2.0网页之可脚本化, 与DOM的交互, 与JavaScript的交互 介绍 Silverlight 2.0 使用c#开发可脚本化的代码,Silverlight与宿主页面的DOM之间的交互,Silverlight与宿主页面的JavaScript之间的交互。 ScriptableMemberAttribute - 需要脚本化的属性、方法、事件要标记为此 HtmlPage.RegisterScriptableObject - 将可脚本化对象注册到客户端 HtmlElement - 表示网页的文档对象模型 (DOM) 中的 HTML 元素 HtmlWindow - 提供 JavaScript 的 window 对象的 Silverlight 端的托管表示形
通过网上的搜索,感觉Silverlight Loader挺好用的,下面详细介绍一下怎么使用Silverlight Loader。 Silverlight Loader的下载地址如下:http://silverlightloader.codeplex.com/ 其实文章并不长,只有下面红色的部分才是需要你实现的代码,这里可能不能显示颜色,可以通过以下网址查看: http://hi.baidu.com/ck436/blog/item/a736edc487d6fea58226acab.html 下面首先介绍一下加载的原理: 其实就是建二个项目:一个较小,用于加载较大的项目文件,并在加载过程中给用户显示加载进度,假设为SLLoader.xap;另一个为我们的具体功能实现项目,不妨假设为LoadTarget.xap。 客户端下载程序时,首先加载SLLoader.xap,这个过程应该是比较快的,然后由SLLoader.xap一边加载较大的LoadTarget.xap,一边显示进度或动画,当加载LoadTarget.xap完毕后,就调用打开LoadTarget.xap,至些,我们的项目已加载完毕。 关于该加载过程的详细资料,可参考如下页面: How the Silverlight loader works http://www.apijunkie.com/APIJunkie/blog/page/How-the-Silverlight-loader-works.aspx Silverlight Loader Getting Started Guide http://www.apijunkie.com/APIJunkie/blog/page/Silverlight-Loader-Getting-Started-Guide.aspx Silverlight Loader Class Diagram http://silverlightloader.codeplex.com/wikipage?title=Class%20Diagram&referringTitle=Home 网上有一篇关于实现加载的介绍,基本上是翻译过来的,不是很详细,文章在此: http://silverlightchina.net/html/tips/2010/0115/588.html 下面我根据上面的几篇文章详细介绍项目的实现过程: 第一步:创建一个SLLoader.xap项目或在现有的SLLoader.xap项目中使用Silverlight Loader 1.在现有SLLoader.xap项目中使用SilverlightLoader:先下载SilverlightLoader压缩包,从下载的Release中找到SilverlightLoader.cs,并将其添加到SLLoader.xap项目中,具体实现方法:在SLLoader.xap项目中右键添加已有项,浏览找到SilverlightLoader.cs即可添加。 2.通过项目模板创建一个SLLoader.xap项目:将SilverlightLoader模板文件拷贝到VS的模板文件夹下,如My Documents\Visual Studio 2008\ProjectTemplates\Visual C#。而后就可以在新建项目时看到Silverlight Loader项目了。 第二步:实现ISliverlightLoader接口 1.添加对SilverlightLoader的引用 在App.xaml.cs中添加对命名空间SilverlightLoader的引用,实现代码: using SilverlightLoader; 在MainPage.xaml.cs中添加对命名空间SilverlightLoader的引用,实现代码: using SilverlightLoader; 2.创建动态加载外部数据的开始点 在App.xaml.cs中的Application_Startup事件中开始载入数据包,代码如下: private void Application_Startup(object sender, StartupEventArgs e) { //无需该默认语句 //this.RootVisual = new MainPage(); //建立加载页 MainPage loader = new MainPage(); //设置该加载页为加载项 this.RootVisual = loader; //建立加载数据包管理类,并开始加载目标xap, //该类的构造函数中的第三个参数为模拟加载网速, //为了模拟加载过程和调试,可以通过设置该参数来模拟加载速度,单位为Kb, //当设该参数为0时,则采用真实带宽加载目标xap。 PackageDownloadManager pdm = new PackageDownloadManager(loader, e.InitParams, 0); } 3.在MainPage.xaml.cs中实现ISliverlightLoader接口 有如下几个ISilverlightLoader接口需要添加,也就是在下面几接口中实现加载进度的交互显示: // 初始化加载须加载的数据包列表 void initCallback(List packageSourceList); // 回调函数,用于标识开始加载数据包 void downloadStartCallback(Uri packageSource); // 回调函数,用于标识加载进度发生变化 void downloadProgressCallback(Uri packageSource, DownloadProgressEventArgs eventArgs); // 回调函数,用于标识加载数据包结束 void downloadCompleteCallback(Uri packageSource, DownloadCompleteEventArgs eventArgs); MainPage.xaml.cs中的实现代码如下,我现在把MainPage.xaml.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 SilverlightLoader; namespace SLLoader { //注意此处的类继承:SilverlightLoader.ISilverlightLoader public partial class MainPage : UserControl, SilverlightLoader.ISilverlightLoader { public MainPage() { InitializeComponent(); } #region ISilverlightLoader Members //初始化加载须加载的数据包列表 void ISilverlightLoader.initCallback(System.Collections.Generic.List packageSourceList) { } //回调函数,用于标识开始加载数据包 void ISilverlightLoader.downloadStartCallback(Uri packageSource) { LoadProgress.Text = "加载初始化..."; } //回调函数,用于标识加载进度发生变化 void ISilverlightLoader.downloadProgressCallback(Uri packageSource, DownloadProgressEventArgs eventArgs) { float offset = ((float)eventArgs.ProgressPercentage * 4 / 100f) * 1000; TimeSpan ts = new TimeSpan(0, 0, 0, 0, (int)offset); //显示加载进度,例如下面二行代码中LoadProgress为一个Textblock,LoadProgressBar为一个进度条,则可以使用下面语句显示进度 LoadProgress.Text = eventArgs.ProgressPercentage.ToString() + "%"; LoadProgressBar.Value = eventArgs.ProgressPercentage; } //回调函数,用于标识加载数据包结束 void ISilverlightLoader.downloadCompleteCallback(Uri packageSource, DownloadCompleteEventArgs eventArgs) { LoadProgress.Text = "加载完成"; XapUtil.setCurrentXapFile(packageSource); } #endregion } } 第三步:在HTML页面或asp:Silverlight控件设置初始载入界面与载入目标 该步就是在HTML或asp:Silverlight控件中加入对SLLoader.xap的调用,并将LoadTarget.xap的名字做为参数传递给SLLoader.xap,以便加载, 可以看出,在建立整个项目的过程中,SLLoader.xap和LoadTarget.xap并不需要打交道,只在HHTML或asp:Silverlight控件设置中才把二者联系起来。 1.HTML中的设置方法: data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="550" height="400"> Get Microsoft <em>Silverlight</em> 注意SLLoader.xap和LoadTarget.xap的位置,此时把HTML文件、SLLoader.xap和LoadTarget.xap放在同一目录下即可实现加载。 2.在asp:Silverlight控件中设置的方法 Silverlight ID="Xaml1" runat="server" Source="~/SLLoader.xap" MinimumVersion="2.0.31005.0" Width="550" Height="400" InitParameters="LoaderSourceList=LoadTarget.xap" /> 与在HTML中通过Object对象设置的原理相同。 3.如果此时编译SLLoader.xap项目,可能通不过,提示缺少对System.Runtime.Serialization.Json的引用, 为解决此问题,需要添加如下三个引用,参考文章:http://www.cnblogs.com/Blackie/archive/2009/07/09/1520080.html 1.System.Runtime.Serialization 2.System.ServiceModel 3.System.ServiceModel.Web 至此,一个加载功能制作完毕。 注意事项: (1)App和MailPage都需要添加对命名空间SilverlightLoader的引用; (2)PackageDownloadManager类构造函数中的第三个参数需要更改,看前面的代码注释,在此处将参数改为一个较小的值,即可减小加载速度,以便查看加载效果; (3)需要添加以下三个引用,只有同时添加,才能正确引用System.Runtime.Serialization.Json: 1.System.Runtime.Serialization 2.System.ServiceModel 3.System.ServiceModel.Web 目前已知的问题: 实现该加载功能的目的就是不想显示Silverlight默认的那个蓝色整圆圆的加载动画, 但如果网速过慢,还是会显示加载SLLoader.xap的动画,另外SLLoader.xap加载完LoadTarget.xap后,打开LoadTarget.xap的过程中也可能会出现默认的那个加载动画,虽然只是一瞬间,不知道该怎么屏蔽这个默认的动画,请大家支招。 还请大家教我实现屏蔽默认加载动画的方法,我的邮箱:ck436#126.com,把#改为@

13,655

社区成员

发帖
与我相关
我的任务
社区描述
CSDN 下载资源悬赏专区
其他 技术论坛(原bbs)
社区管理员
  • 下载资源悬赏专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧