| 
 | 
	
 
 
  [源码下载] 
 
 
 
 
重新想象 Windows 8 Store Apps (25) - 选取器: 文件选取窗口, 文件夹选取窗口, 文件保存窗口   
作者:webabcd 
 
介绍 
重新想象 Windows 8 Store Apps 之 选取器 
 
 
- FileOpenPicker - 选择一个文件或多个文件
 
 - FolderPicker - 选择一个文件夹
 
 - FileSavePicker - 保存文件到指定路径
 
     
示例 
1、演示如何通过 FileOpenPicker 选择一个文件或多个文件 
Picker/FileOpenPickerDemo.xaml 
 
 
 
 
 
 
 
 
 
 
 
 
  Picker/FileOpenPickerDemo.xaml.cs 
 
 
 
/* 
* 演示如何通过 FileOpenPicker 选择一个文件或多个文件 
*  
* FileOpenPicker - 文件选择窗口 
*     ViewMode - 文件选择窗口的视图模式,Windows.Storage.Pickers.PickerViewMode 枚举(List 或 Thumbnail) 
*     SuggestedStartLocation - 文件选择窗口所显示的初始路径,Windows.Storage.Pickers.PickerLocationId 枚举 
*         DocumentsLibrary, ComputerFolder, Desktop,, Downloads, HomeGroup, MusicLibrary, PicturesLibrary,VideosLibrary 
*     FileTypeFilter - 允许显示在文件选择窗口的文件类型集合 
*     CommitButtonText - 文件选择窗口的提交按钮的显示文本,此按钮默认显示的文本为“打开” 
*     PickSingleFileAsync() -  弹出文件选择窗口,以让用户选择一个文件 
*     PickMultipleFilesAsync() - 弹出文件选择窗口,以让用户选择多个文件 
*/ 
using System; 
using System.Collections.Generic; 
using Windows.Storage; 
using Windows.Storage.AccessCache; 
using Windows.Storage.Pickers; 
using Windows.UI.Xaml; 
using Windows.UI.Xaml.Controls; 
namespace XamlDemo.Picker 
{ 
public sealed partial class FileOpenPickerDemo : Page 
{ 
public FileOpenPickerDemo() 
{ 
this.InitializeComponent(); 
} 
private async void btnPickFile_Click_1(object sender, RoutedEventArgs e) 
{ 
if (XamlDemo.Common.Helper.EnsureUnsnapped()) 
{ 
// 选择一个文件 
FileOpenPicker openPicker = new FileOpenPicker(); 
openPicker.CommitButtonText = "选中此文件"; 
openPicker.ViewMode = PickerViewMode.Thumbnail; 
openPicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary; 
openPicker.FileTypeFilter.Add(".jpg"); 
openPicker.FileTypeFilter.Add(".gif"); 
openPicker.FileTypeFilter.Add(".png"); 
// 弹出文件选择窗口 
StorageFile file = await openPicker.PickSingleFileAsync(); // 用户在“文件选择窗口”中完成操作后,会返回对应的 StorageFile 对象 
if (file != null) 
{ 
lblMsg.Text = "选中文件: " + file.Name; 
} 
else 
{ 
lblMsg.Text = "取消了"; 
} 
} 
} 
private async  void btnPickFiles_Click_1(object sender, RoutedEventArgs e) 
{ 
if (XamlDemo.Common.Helper.EnsureUnsnapped()) 
{ 
// 选择多个文件 
FileOpenPicker openPicker = new FileOpenPicker(); 
openPicker.ViewMode = PickerViewMode.List; 
openPicker.SuggestedStartLocation = PickerLocationId.DocumentsLibrary; 
openPicker.FileTypeFilter.Add("*"); 
// 弹出文件选择窗口 
IReadOnlyList files = await openPicker.PickMultipleFilesAsync(); // 用户在“文件选择窗口”中完成操作后,会返回对应的 StorageFile 对象 
if (files.Count > 0) 
{ 
lblMsg.Text = "选中文件: "; 
lblMsg.Text += Environment.NewLine; 
foreach (StorageFile file in files) 
{ 
lblMsg.Text += (file.Name); 
lblMsg.Text += Environment.NewLine; 
} 
} 
else 
{ 
lblMsg.Text = "取消了"; 
} 
} 
} 
} 
} 
   
2、演示如何通过 FolderPicker 选择一个文件夹 
Picker/FolderPickerDemo.xaml 
 
 
 
 
 
 
 
 
 
 
 
  Picker/FolderPickerDemo.xaml.cs 
 
 
 
/* 
* 演示如何通过 FolderPicker 选择一个文件夹 
*  
* FolderPicker - 文件夹选择窗口 
*     ViewMode - 文件夹选择窗口的视图模式,Windows.Storage.Pickers.PickerViewMode 枚举(List 或 Thumbnail) 
*     SuggestedStartLocation - 文件夹选择窗口所显示的初始路径,Windows.Storage.Pickers.PickerLocationId 枚举 
*         DocumentsLibrary, ComputerFolder, Desktop,, Downloads, HomeGroup, MusicLibrary, PicturesLibrary,VideosLibrary 
*     FileTypeFilter - 允许显示在文件夹选择窗口的文件类型集合(只能显示符合要求的文件,但是无法选中) 
*     CommitButtonText - 文件夹选择窗口的提交按钮的显示文本,此按钮默认显示的文本为“选择这个文件夹” 
*     PickSingleFolderAsync() - 弹出文件夹选择窗口,以让用户选择一个文件夹 
*/ 
using System; 
using Windows.Storage; 
using Windows.Storage.Pickers; 
using Windows.UI.Xaml; 
using Windows.UI.Xaml.Controls; 
namespace XamlDemo.Picker 
{ 
public sealed partial class FolderPickerDemo : Page 
{ 
public FolderPickerDemo() 
{ 
this.InitializeComponent(); 
} 
private async void btnPickFolder_Click_1(object sender, RoutedEventArgs e) 
{ 
if (XamlDemo.Common.Helper.EnsureUnsnapped()) 
{ 
// 选择一个文件夹 
FolderPicker folderPicker = new FolderPicker(); 
folderPicker.SuggestedStartLocation = PickerLocationId.Desktop; 
folderPicker.FileTypeFilter.Add(".docx"); 
folderPicker.FileTypeFilter.Add(".xlsx"); 
folderPicker.FileTypeFilter.Add(".pptx"); 
// 弹出文件夹选择窗口 
StorageFolder folder = await folderPicker.PickSingleFolderAsync(); // 用户在“文件夹选择窗口”中完成操作后,会返回对应的 StorageFolder 对象 
if (folder != null) 
{ 
lblMsg.Text = "选中文件夹: " + folder.Name; 
} 
else 
{ 
lblMsg.Text = "取消了"; 
} 
} 
} 
} 
} 
   
3、演示如何通过 FileSavePicker 保存文件到指定路径 
Picker/FileSavePickerDemo.xaml 
 
 
 
 
 
 
 
 
 
 
 
  Picker/FileSavePickerDemo.xaml.cs 
 
 
 
/* 
* 演示如何通过 FileSavePicker 保存文件到指定路径 
*  
* FileSavePicker - 文件保存窗口 
*     SuggestedStartLocation - 文件保存窗口所显示的初始路径,Windows.Storage.Pickers.PickerLocationId 枚举 
*         DocumentsLibrary, ComputerFolder, Desktop,, Downloads, HomeGroup, MusicLibrary, PicturesLibrary,VideosLibrary 
*     SuggestedFileName - 需要保存的文件的默认文件名 
*     SuggestedSaveFile - 需要保存的文件的默认 StorageFile 对象 
*     FileTypeChoices - 可保存的扩展名集合 
*     DefaultFileExtension - 默认扩展名 
*     CommitButtonText - 文件保存窗口的提交按钮的显示文本,此按钮默认显示的文本为“保存” 
*     PickSaveFileAsync() - 弹出文件保存窗口,以让用户保存文件 
*/ 
using System; 
using System.Collections.Generic; 
using Windows.Storage; 
using Windows.Storage.Pickers; 
using Windows.Storage.Provider; 
using Windows.UI.Xaml; 
using Windows.UI.Xaml.Controls; 
namespace XamlDemo.Picker 
{ 
public sealed partial class FileSavePickerDemo : Page 
{ 
public FileSavePickerDemo() 
{ 
this.InitializeComponent(); 
} 
private async void btnSaveFile_Click_1(object sender, RoutedEventArgs e) 
{ 
if (XamlDemo.Common.Helper.EnsureUnsnapped()) 
{ 
FileSavePicker savePicker = new FileSavePicker(); 
savePicker.SuggestedStartLocation = PickerLocationId.DocumentsLibrary; 
// 在扩展名选择框中将会显示:文本(.txt) 
savePicker.FileTypeChoices.Add("文本", new List() { ".txt" }); 
savePicker.SuggestedFileName = "webabcdFileSavePicker"; 
// 弹出文件保存窗口 
StorageFile file = await savePicker.PickSaveFileAsync(); // 用户在“文件保存窗口”中完成操作后,会返回对应的 StorageFile 对象 
if (file != null) 
{ 
/* 
* 运行到此,只是在目标地址创建了一个没有任何内容的空白文件而已,接下来开始向文件写入内容 
*/ 
// 告诉 Windows ,从此时开始要防止其它程序更新指定的文件 
                    CachedFileManager.DeferUpdates(file); 
// 将指定的内容保存到指定的文件 
string textContent = "I am webabcd"; 
await FileIO.WriteTextAsync(file, textContent); 
// 告诉 Windows ,从此时开始允许其它程序更新指定的文件 
FileUpdateStatus status = await CachedFileManager.CompleteUpdatesAsync(file); 
if (status == FileUpdateStatus.Complete) 
{ 
lblMsg.Text = "文件 " + file.Name + " 保存成功"; 
} 
lblMsg.Text += Environment.NewLine; 
lblMsg.Text += "FileUpdateStatus: " + status.ToString(); 
} 
else 
{ 
lblMsg.Text = "取消了"; 
} 
} 
} 
} 
} 
   
OK 
[源码下载] |   
 
 
 
 | 
  
 |