silverlight   发布时间:2022-05-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了转老孟一篇在Silverlight 2.0中制作资源加载进度条大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

Silverlight 2.0去掉了原来的downloader对象,代之以WebClient对象。WebClient类为Silverlight插件提供了一整套的http客户端功能。可以下载应用程序数据,比如XAML内容,附加的程序集或者诸如图片的媒体文件。WebClient类可以根据程序的需要下载内容,可以异步呈现或者利用下载的内容,而不是随HTML页面一起下载。如果你要按照一定的序列替换Silv

Silverlight 2.0去掉了原来的downloader对象,代之以WebClient对象。WebClient类为Silverlight插件提供了一整套的http客户端功能。可以下载应用程序数据,比如XAML内容,附加的程序集或者诸如图片的媒体文件。WebClient类可以根据程序的需要下载内容,可以异步呈现或者利用下载的内容,而不是随HTML页面一起下载。如果你要按照一定的序列替换Silverlight内容,不需要刷新页面。比较常见的来自是从视频库中播放视频,但本节是以播放图片为例子的。

关于WebClient

WebClient请求是异步的,大部分的交互操作都是依靠事件处理器来完成的。通常,需要定义如下中的一个或者多个处理器函数

根据你请求的资源是字符串还是流,需要使用不同的API,当请求一个字符串时,可以调用下面的方法

然后再处理DownloadStringCompleted事件。

当请求的是一个流时,可以调用下面的方法

然后处理OpenReadCoR_556_11845@pleted事件。

OpenReadCoR_556_11845@pleted事件处理器基本的签名如下:

void  wc_OpenReadCoR_556_11845@pleted( object  sender, OpenReadCoR_556_11845@pletedEventArgs E) {
...
}

这个处理器中最相关的API是OpenReadCoR_556_11845@pletedEventArgs参数的Result属性,这个属性是Stream类型的,

可以直接使用这个属性,或者调用需要Stream对象的方法,也可以使用StreamReader对象或者其他访问流的API。

下面就是一个下载图片的例子,本例子通过输入文件路径,然后以进度条显示下载的状态,下载完毕后进行显示
需要注意的是:给OpenReadAsync和DownloadStringAsync API制定的URI通常采用相对路径,

WebClient不支持FILE协议下载,在进行测试的时候需要注意,必须建立站点进行测试。

可以使用httpS协议,但包含这个插件的HTML也必须同时是httpS协议才可以。在URI中不能使用反斜杠(/),

必须使用正斜杠(/)。

例子代码如下:

Page.xaml:

< UserControl  x:Class ="SilverlightApplication3.Page"
    xmlns
="http://scheR_556_11845@as.microsoft.com/client/2007"  
    xmlns:x
="http://scheR_556_11845@as.microsoft.com/winfx/2006/xaml"  
    Width
="1024"  Height ="800" >
    
< Grid  x:Name ="LayoutRoot"  BACkground ="White" >
        
< Canvas  Canvas.Top ="0" >
            
< Rectangle   Name ="progressRectangle"   Canvas.Left ="20"  Canvas.Top ="10"  Height ="10"  Width ="0"   Fill ="Navy"   />
            
< Rectangle   Canvas.Top ="9"  Canvas.Left ="19"  Height ="12"  Width ="202"  strokeThickness ="1"  stroke ="Black"   />
            
< TextBlock   x:Name ="progressText"  Canvas.Top ="6"  Canvas.Left ="230"  text ="0%"  FontSize ="12"   />
            
< TextBox  x:Name ="filepath"  Canvas.Left ="20"  Width ="100"  Canvas.Top ="26"  text ="p1.jpg" ></ TextBox >
            
< Button  Canvas.Top ="26"  Canvas.Left ="130"  Content ="下载文件"  Click ="Button_Click" ></ Button >
            
< Image  Canvas.Left ="60"  x:Name ="img"  Canvas.Top ="60"  Width ="1024" ></ Image >
        
</ Canvas >
    
</ Grid >
</ UserControl >

Page.xaml.cs:

using  System;
using  System.Collections.Generic;
using  System.Linq;
using  System.Windows;
using  System.Windows.Controls;
using  System.Windows.Documents;
using  System.Windows.Input;
using  System.Windows.Media;
using  System.Windows.Media.Imaging;
using  System.Windows.Shapes;
using  System.Net;
using  System.IO;
using  System.Windows.resources;

namespace  SilverlightApplication3
{
    
public   partial   class  Page : UserControl
    {
        
public  Page()
        {
            initializeComponent();
        }
        
private   void  Button_Click( object  sender, routedEventArgs E)
        {
          img.source 
=   null ;
            WebClient wc 
=   new  WebClient();
            
if  (wc.IsBusy)
            {
                wc.CancelAsync();
            }
            wc.openReadCoR_556_11845@pleted 
+=   new  OpenReadCoR_556_11845@pletedEventHandler(wc_OpenReadCoR_556_11845@pleted);
            wc.DownloadProgressChanged 
+=   new  DownloadProgressChangedEventHandler(wc_DownloadProgressChanged);
            wc.openReadAsync(
new  Uri(filepath.Text, UriKind.RelativE));

        }

        
void  wc_OpenReadCoR_556_11845@pleted( object  sender, OpenReadCoR_556_11845@pletedEventArgs E)
        {
            BitmapImage imgsrc 
=   new  BitmapImage();
            imgsrc.Setsource(e.Result 
as  Stream);
            img.source 
=  imgsrc;
        }

        
void  wc_DownloadProgressChanged( object  sender, DownloadProgressChangedEventArgs E)
        {
            progressText.Text 
=  e.ProgressPercentage.ToString()  +   " % " ;
            progressRectangle.Width 
=  ( double )e.ProgressPercentage  *   2 ;
        }
    }
}

运行过程中的界面和最终运行结果如下:

@H_301_613@

转老孟一篇在Silverlight 2.0中制作资源加载进度条

@H_301_613@

转老孟一篇在Silverlight 2.0中制作资源加载进度条

大佬总结

以上是大佬教程为你收集整理的转老孟一篇在Silverlight 2.0中制作资源加载进度条全部内容,希望文章能够帮你解决转老孟一篇在Silverlight 2.0中制作资源加载进度条所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。