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" 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实例中文教程系列文章” 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_249_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解释。 在上面代码中,有一个方法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应用对本地目录的浏览。其效果如下: 通过以上的代码,我们可以快速修改,浏览“我的文档”,“我的音乐”和“我的视频”等目录;在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页面添加一个新的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); 运行后即可得到如下效果: 下面我们想实现,点击按钮事件后,将“我的文档”目录中的选中文件,移动到“我的音乐”目录中, 首先,在应用的Toolbar中添加一个移动按钮movefileBtn 实现movefileBtn被点击后,移动文件到“我的音乐”目录, movefileBtn_Click( fileInfo selectedfile (fileInfo)lsMydocuments.SelectedValue;
string path formatPath .Format( {0}\{1} ( ! file.Exists(formatPath))
file.Move(selectedfile.Fullname, formatPath);
file.Delete(selectedfile.Fullname);
Loadfiles();
Loadfiles()
AddDocToList();
AddMusicToList();
这里我们用的是最基本的file文件类 *** 作文件的移动和删除,当然,这需要OOB应用被提升信任权限后,才可以 *** 作,否则,将提示权限错误。 这样,我们就可以查看演示了,当运行应用后,“我的文档”和“我的音乐”两个目录将被载入文件列表,选中“我的文档”中任一文件,然后点击“移动”按钮,就会发现该文件被移动到“我的音乐”目录中,而在“我的文档”中的源文件已经被删除。 通过上文,我们可以了解到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存取本地文件系统所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)