標籤:style blog http color 使用 io strong 檔案 ar
原文出自:http://www.bcmeng.com/fileopenpicker/
今天小夢給大家分享一下 windows phone 8.1中的檔案選取器,和之前的windows phone8的不同,在windows phone8中如果要選擇照片,可以直接用照片選取器,但是這在windows phone8.1中沒有了,windows phone8.1 增加了檔案選取器.相比之下,檔案選取器不僅可以選擇照片,還可以選擇各類檔案,手機和SD卡都可以,還可以尋找網路中其他裝置所共用的檔案,還可以在Onedrive上瀏覽並選擇需要的檔案.
檔案選取器分為:FileOpenPicker和FileSavePicker倆類.前者用來開啟已經存在的任何檔案,後者可以建立新檔案或者覆蓋同名檔案.
我們先來看FileOpenPicker.常用屬性:
- FileTypeFilter:檔案類型過濾器,是一個string類型的列表,每一個元素為一個有效副檔名.
- CommitButtonText:提交按鈕上顯示的文本.
- ContinuationData: 利用ContinuationData 來記錄一些資訊,以保證應用恢複時能擷取應用掛起的資訊.
注意:SuggestedStartLocation和ViewMode屬性在windows phone 8.1中是無效的!僅在windows 8.1中有效.
倆個方法:
- PickSingleFileAndContinue:選取單個檔案並繼續
- PickMultipleFilesAndContinue 選取多個檔案並繼續
下面我們來看一個具體樣本,利用檔案選取器選擇一張照片:
首先執行個體化FileOpenPicker對象,設定檔案類型,設定 ContinuationData
FileOpenPicker openPicker = new FileOpenPicker(); openPicker.FileTypeFilter.Add(".jpg"); openPicker.ContinuationData["Operation"] = "Image"; openPicker.PickSingleFileAndContinue();
然後處理OnActivated事件:
protected override void OnActivated(IActivatedEventArgs args) { if (args is FileOpenPickerContinuationEventArgs) { Frame rootFrame = Window.Current.Content as Frame; if (!rootFrame.Navigate(typeof(MainPage))) { throw new Exception("Failed to create target page"); } var p = rootFrame.Content as MainPage; p.FilePickerEvent = (FileOpenPickerContinuationEventArgs)args; } Window.Current.Activate();}
最後在使用檔案選取器的頁面處理返回的資料:
private FileOpenPickerContinuationEventArgs _filePickerEventArgs = null; public FileOpenPickerContinuationEventArgs FilePickerEvent { get { return _filePickerEventArgs; } set { _filePickerEventArgs = value; ContinueFileOpenPicker(_filePickerEventArgs); } } public async void ContinueFileOpenPicker(FileOpenPickerContinuationEventArgs args) { if ((args.ContinuationData["Operation"] as string) == "Image" && args.Files != null && args.Files.Count > 0) { StorageFile file = args.Files[0]; IRandomAccessStream fileStream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read); BitmapImage bitmapImage = new BitmapImage(); bitmapImage.SetSource(fileStream); image.Source = bitmapImage; } }
使用FileOpenPicker的方法就是這樣,擷取其他檔案時,不同的地方是檔案類型的設定以及返回資料的處理.
windows phone 8.1開發:檔案選取器FileOpenPicker