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
在前文,我们讲述了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 4对于本地文件夹的存取,并非代表存取所有本地磁盘目录,目前为止,Silverlight 4 API仅支持存取“我的文档”,“我的音乐”,“我的图片”和“我的视频”目录以及“Program Files”和“Cookies”目录,而如果想对所有磁盘目录进行访问,则需要使用COR_499_11845@功能进行操作,我们将在下篇讲述,本篇将着重讲述Silverlight 4 API对“我的”系列目录的操作方法。
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
}
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.Ha
SELEvatedPermissions),将通过Environment中的GetFolderPath
方法获取到本地“My..”目录下的
文件,其中Environment.SpecialFolder可以设定特殊目录。更多详细,
请看MSDN解释。
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应用对本地目录的浏览。其效果如下:
通过以上的
代码,我们可以
快速修改,浏览“我的文档”,“我的音乐”和“我的视频”等目录;在OutofBrowserMainPage
页面添加代码:
1
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.Itemssource
System.IO.Directory.EnumerateFiles(path);
5
然后在openFileBtn_Click事件中调用AddDocToList();即可获取到“我的文档”文件列表,其他目录与其类似,就不再做代码演示,大家可以自己尝试,如果遇到问题,我们可以一起讨论 。
看到这里,有的朋友可能会问,既然已经可以实现浏览本地目录
功能,是不是也应该可以对本地目录
文件进行操作呢?答案是肯定的。当OOB应用
获取到权限提升后,则可以使用File类对
文件进行操作,例如,移动
文件,
删除文件等。对目前的项目我们进行简单的
修改,演示如何将“我的文档”目录的
文件,移动到“我的音乐”目录中,并且
删除源目录的相同
文件,
首先在OutofBrowserMainPage.xaml
页面添加一个新的List
Box,承载“我的音乐”目录
文件;
="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);
运行后即可得到如下效果:
下面我们想实现,点击按钮事件后,将“我的文档”目录中的选中
文件,移动到“我的音乐”目录中,
首先,在应用的ToolBar中
添加一个移动按钮moveFileBtn
实现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_1
0585@该
文件被移动到“我的音乐”目录中,而在“我的文档”中的源
文件已经被
删除。
通过上文,我们可以了解到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,请注明来意。