ICHARM
ICHARM
【WinRT】历遍指定文件夹获取该文件夹下的文件名列表
【WinRT】历遍指定文件夹获取该文件夹下的文件名列表

首先需要说明的是:WinRT只支持访问自己安装包下的文件夹(调试时自动生成安装包文件夹并把工程文件编译好复制过去),和一些公共库文件夹,比如视频、图片、文档之类的。

哀差闷在做一个图片浏览器的小作业,右边有个listbox的文件列表,想实现的就是自动扫描指定的文件夹,并将所有的文件显示在这个listbox里。

历遍文件夹获取文件名

下面是扫描工程文件夹下的images文件夹里的所有图片,并实现listbox的数据绑定。注意要引入using Windows.Storage;

List imglst = new List();
            public async void AutoImgList()
            {
                //获取程序安装包下的文件夹名列表
                var folderName = Windows.ApplicationModel.Package.Current.InstalledLocation.GetFoldersAsync();
                IReadOnlyList rootFolder = await folderName;
                //历遍文件夹名列表
                foreach (StorageFolder imgFolder in rootFolder)
                {   
                    //找到images文件夹
                    if (imgFolder.Name == "images")
                    {
                        //获取images文件夹里的文件名列表
                        IReadOnlyList imgfile = await imgFolder.GetFilesAsync();
                        //将文件名和路径添加进listbox的数据源里
                        foreach (StorageFile images in imgfile)
                        {
                            ImageList b = new ImageList();
                            b.PictureName = images.Name;
                            imglst.Add(b);
                        }
                    }
                }
                //为listbox绑定数据源
                lstBoxPictureList.ItemsSource = imglst;

            }

 

有关函数的具体使用说明可以查看MSDN的文档ApplicationData.LocalFolderStorageFolder.GetFoldersAsync

其实还有个更简单的函数StorageFolder.GetItemsAsync()

listbox的Item点击事件

另外哀差闷还想实现点击listbox里的某一项,在右边把这个选择的图片显示出来。

哀差闷在这里主要遇到了两个问题:

1.怎么获取被选择项的相关信息

解决方法:

ImageList imgTemp = lstBoxPictureList.SelectedItem as ImageList;//使用listbox_Name.Selected获得当前选择项。ImageList是这个listbox的数据模型

2.怎么为image控件的Source绑定源

解决方法:

Windows.UI.Xaml.Media.Imaging.BitmapImage bitmapimage = new Windows.UI.Xaml.Media.Imaging.BitmapImage(new Uri(“ms-appx:///images/”+imgTemp.PictureName));
ImageView.Source = bitmapimage;

          
private void lstBoxPictureList_SelectionChanged(object sender, SelectionChangedEventArgs e)
       {
           ImageList imgTemp = lstBoxPictureList.SelectedItem as ImageList;
           Windows.UI.Xaml.Media.Imaging.BitmapImage bitmapimage = new Windows.UI.Xaml.Media.Imaging.BitmapImage(new Uri("ms-appx:///images/"+imgTemp.PictureName));
           ImageView.Source = bitmapimage;
       }

值得一说的是:listbox 的Item事件应该在listbox标签中引入,若不是在listbox里面的textblock里面引入。这个错误浪费了我两个小时!

总结

感谢MSDN大神的相助。【WinRT】怎么实现历遍指定文件夹并返回该文件夹所有的文件名

发表评论

textsms
account_circle
email

ICHARM

【WinRT】历遍指定文件夹获取该文件夹下的文件名列表
首先需要说明的是:WinRT只支持访问自己安装包下的文件夹(调试时自动生成安装包文件夹并把工程文件编译好复制过去),和一些公共库文件夹,比如视频、图片、文档之类的。 哀差闷在做…
扫描二维码继续阅读
2015-12-18