silverlight   发布时间:2022-05-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Silverlight实例教程 - Out of Browser存取本地文件系统大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

在前文,我们讲述了Silverlight Out of Browser的基础以及自定义模式应用。本篇,我们将讲述 Silverlight Out of Browser应用的重点 - 创建可信任应用,也称为Trusted Application. 早在Silverlight 3,Silverlight Out of Browser的功能由于权限的限制无法很好的满足用户的正常存取需求,仅能实现将Web
@H_403_2@
在前文,我们讲述了Silverlight Out of Browser的基础以及自定义模式应用。本篇,我们将讲述 Silverlight Out of Browser应用的重点 - 创建可信任应用,也称为Trusted Application. 早在Silverlight 3,Silverlight Out of Browser的功能由于权限的限制无法很好的满足用户的正常存取需求,仅能实现将Web应用脱离浏览器。而在Silverlight 4中,通过提升应用信任权限,大大增强了Silverlight Out of Browser的功能,在权限允许的情况下,用户可以自由有访问本地目录,也可以执行本地应用程序,另外通过调用COM组件,实现更多更强大的本地应用操作。下面我们将实例讲述Silverlight Out of Browser可信任应用 - 存取本地文件系统
 
本篇中,我们将基于上篇教程提供的项目SilverlightOOBDemo进行演示操作。
首先需要确认SilverlightOOBDemo项目允许用户提升应用信任权限。这样,OOB应用将被允许访问用户本地资源。

Silverlight实例教程 - Out of Browser存取本地文件系统

Silverlight 4对于本地文件夹的存取,并非代表存取所有本地磁盘目录,目前为止,Silverlight 4 API仅支持存取“我的文档”,“我的音乐”,“我的图片”和“我的视频”目录以及“Program Files”和“Cookies”目录,而如果想对所有磁盘目录进行访问,则需要使用COR_499_11845@功能进行操作,我们将在下篇讲述,本篇将着重讲述Silverlight 4 API对“我的”系列目录的操作方法
在实现具体功能前,首先需要为项目添加两个新文件
一个是资源文件resources.xaml,该资源文件引用自开源控件BlackLight资源样式,主要目的是为了创建新按钮演示效果,如下图:

Silverlight实例教程 - Out of Browser存取本地文件系统

一个是小图片控件ThumbImage.xaml,该文件是用于载入“我的图片”目录后的图片略缩图,其代码较为简单,
 
 1  < UserControl  x:Class ="SilverlightOOBDemo.ThumbImage"
 2      xmlns ="http://scheR_499_11845@as.microsoft.com/winfx/2006/xaml/presentation"  3      xmlns:x ="http://scheR_499_11845@as.microsoft.com/winfx/2006/xaml"  4      xmlns:d ="http://scheR_499_11845@as.microsoft.com/expression/blend/2008"  5      xmlns:mc ="http://scheR_499_11845@as.openxmlformats.org/markup-compatibility/2006"  6      mc:Ignorable ="d"  7      d:DesignHeight ="300"  d:DesignWidth ="400" >  8   9       Grid  x:Name ="LayoutRoot"  Margin ="10" 10           Image  ="ThumbnailImage"  Height ="145"  Width ="225"   /> 11  </ Grid 12  UserControl >
namespace  SilverlightOOBDemo
 2  {
 3  public partial class  ThumbImage : UserControl
 4      {
 5  private  Image _OriginalImage;
 6   Image OriginalImage 
 7          { 
             get  
            {
                 return  _OriginalImage; 
            } 
set 13  14  this ._OriginalImage  =  value;
15                  ThumbnailImage.source  new  WriteableBitmap(_OriginalImage,  null ); 
16  17          }
18  19   ThumbImage()
20          {
21              initializeComponent();
22  23      }
24  }
为了能够激活存取事件,我们需要 在OutofBrowserMainpage主窗口页面添加按钮控件,其样式调用自资源文件resources.xaml,对于资源样式调用这里不再赘述,如果不明白的,请看“Expression Blend实例中文教程系列文章

Silverlight实例教程 - Out of Browser存取本地文件系统

StackPanel  ="toolbar"  BACkground ="#FF3A3A3A"  Grid.columnSpan ="2"  Orientation ="Horizontal" ="0,1"  Grid.Row ="0"                          Border  BorderBrush =" {Staticresource GlossyBlack_strokeGradient} "  BorderThickness ="1"  CornerRadius  Padding                              StackPanel                                  Orientation ="Horizontal"                                      Button  Width ="56" ="80"  Style {Staticresource BlackGlossyButton} ="1,0"  Foreground ="White"  x:Name ="openFileBtn"  Click ="openFileBtn_Click"                                          Button.Content                                                                                               VerticalAlignment ="Top"  HorizontalAlignment ="Center"  source ="/SilverlightOOBDemo;component/Images/Open.png" @H_102_403@ Stretch ="None" TextBlock  ="Bottom"  text ="浏览"  textwrapping ="Wrap" Button Border IsTabStop ="false"   x:Name ="aboutBtn" ="" ="?"  FontSize ="20"  FontWeight ="Bold" ="DarkCyan"   Margin 25  ="帮助" 26  27  28  29  30  31  32                       同时,为了能够载入本地“我的图片”目录中的图片文件,我们需要在OutofBrowserMainpage中使用一个ListBox控件,载入上面我们创建的ThumbImage控件来显示,所有图片略缩图列表,
1  < ListBox  Grid.column ="0"   x:Name ="lsMyPictures"  SELEctionMode ="Single"  Style =" {Staticresource GlossyBlackListBox} "  ItemContainerStyle {Staticresource ListBoxItemStylE}  BorderBrush ="Transparent"  BACkground  ScrollViewer.HorizontalScrollBarVisibility ="Auto"  ScrollViewer.VerticalScrollBarVisibility  Margin ="3,10,30"   ></ ListBox >
 现在,我们可以为openfilebtn按钮控件创建事件,使其响应用户操作,打开对应目录进行文件浏览
void  openFileBtn_Click( object  sender, routedEventArgs E)
if  (Application.Current.HaSELEvatedPermissions)
                var imageFiles   directory.EnumerateFiles(Environment.GetFolderPath(Environment.SpecialFolder.MyPictures),  " *.jpg " , SearchOption.AllDirectories);
foreach  (var imagePath  in  imageFiles)
                {
                    AddImageToList(  FileInfo(imagePath));
                }
            }
        }
在上面代码中,如果用户已经提升了OOB应用权限(Application.Current.HaSELEvatedPermissions),将通过Environment中的GetFolderPath方法获取到本地“My..”目录下的文件,其中Environment.SpecialFolder可以设定特殊目录。更多详细, 请看MSDN解释

Silverlight实例教程 - Out of Browser存取本地文件系统

在上面代码中,有一个方法AddImageToList,将文件路径信息读取,然后将图片文件信息进行绑定到ListBox
 AddImageToList(FileInfo fileinfo)
            FileStream fileStream   fileinfo.openRead();
            Image img   Image();
            BitmapImage bi   BitmapImage();
            bi.Setsource(fileStream);
            img.Margin   Thickness(5d);
            img.Stretch   Stretch.UniformToFill;
            img.source   bi;
try  { img.Tag   fileinfo.FullName; }
catch  { }
            ThumbImage thumbnail   ThumbImage();
            thumbnail.originalImage   img;
            lsMyPictures.Items.Add(thumbnail);
在读取“我的图片”目录信息后,将各个图片载入到ThumbImage控件中,然后使用ListBox承载各个图片,这样也就完成了OOB应用对本地目录的浏览。其效果如下:

Silverlight实例教程 - Out of Browser存取本地文件系统

通过以上的代码,我们可以快速修改,浏览“我的文档”,“我的音乐”和“我的视频”等目录;在OutofBrowserMainPage页面添加代码
ListBox  Grid.column ="lsMyDocuments"  SELEctionMode ="Single" {Staticresource GlossyBlackListBox}  ItemContainerStyle {Staticresource ListBoxItemStylE}  BorderBrush ="Transparent"  ScrollViewer.HorizontalScrollBarVisibility ="Auto"  ScrollViewer.VerticalScrollBarVisibility ></ ListBox  AddDocToList()
2  3              var path   Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
4              lsMyDocuments.Itemssourc  System.IO.Directory.EnumerateFiles(path);
5  然后在openFileBtn_Click事件中调用AddDocToList();即可获取到“我的文档”文件列表,其他目录与其类似,就不再做代码演示,大家可以自己尝试,如果遇到问题,我们可以一起讨论 。

Silverlight实例教程 - Out of Browser存取本地文件系统

看到这里,有的朋友可能会问,既然已经可以实现浏览本地目录功能,是不是也应该可以对本地目录文件进行操作呢?答案是肯定的。当OOB应用获取到权限提升后,则可以使用File类对文件进行操作,例如,移动文件删除文件等。对目前的项目我们进行简单的修改,演示如何将“我的文档”目录的文件,移动到“我的音乐”目录中,并且删除源目录的相同文件
首先在OutofBrowserMainPage.xaml页面添加一个新的ListBox,承载“我的音乐”目录文件
="Vertical" ="200" Text ="我的音乐"  VerticalAlignment ="Center" ="lsMymusics"  在后台代码添加,浏览载入“我的音乐”目录;
 AddMusicToList()
 Environment.GetFolderPath(Environment.SpecialFolder.Mymusic);
            lsMymusics.Items.Clear();
            directoryInfo myDirectory   directoryInfo(path);
 (FileInfo file   myDirectory.EnumerateFiles())
                lsMymusics.Items.Add(filE);
简单修改“我的文档”ListBox代码,和后台代码
="我的文档"             lsMyDocuments.Items.Clear();
                lsMyDocuments.Items.Add(filE);
// lsMyDocuments.Itemssource = System.IO.Directory.EnumerateFiles(path); 运行后即可得到如下效果

Silverlight实例教程 - Out of Browser存取本地文件系统

下面我们想实现,点击按钮事件后,将“我的文档”目录中的选中文件,移动到“我的音乐”目录中,
首先,在应用的ToolBar中添加一个移动按钮moveFileBtn

Silverlight实例教程 - Out of Browser存取本地文件系统

实现moveFileBtn被点击后,移动文件到“我的音乐”目录,
 moveFileBtn_Click(             FileInfo SELEctedFile   (FileInfo)lsMyDocuments.SELEctedValue;
String  path   formatPath  .Format( {0}\\{1} :rgb(128, path, SELEctedFile.Name);
 ( ! File.Exists(formatPath))
                File.Move(SELEctedFile.FullName, formatPath);
                File.delete(SELEctedFile.FullName);
            LoadFiles();
 LoadFiles()
            AddDocToList();
            AddMusicToList();
这里我们用的是最基本的File文件类操作文件的移动和删除,当然,这需要OOB应用被提升信任权限后,才可以操作,否则,将提示权限错误
这样,我们就可以查看演示了,当运行应用后,“我的文档”和“我的音乐”两个目录将被载入文件列表,选中“我的文档”中任一文件,然后点击“移动”按钮,@R_879_10585@该文件被移动到“我的音乐”目录中,而在“我的文档”中的源文件已经被删除

Silverlight实例教程 - Out of Browser存取本地文件系统

通过上文,我们可以了解到Silverlight Out of Browser的可信任应用对本地目录和文件的操作方法以及基本API的用法下一篇,我们将通过另外一个实例演示更多Out of Browser的可信任应用的强大功能
 

本文出自 “Kevin Fan博客,请务必保留此出处http://www.voidcn.com/article/p-owkbvcbq-bke.html

大佬总结

以上是大佬教程为你收集整理的Silverlight实例教程 - Out of Browser存取本地文件系统全部内容,希望文章能够帮你解决Silverlight实例教程 - Out of Browser存取本地文件系统所遇到的程序开发问题。

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

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