2016-04-16 15 views
1

上のファイルを開きます。私はUniversap Appsのコンセプトに関する誤解があると思います。Windowsのユニバーサルアプリケーション:私はUSBドライブ上のXML-ファイルを選択し、開いて、それを読みたいUSBドライブ

私はこのコードを使用すると、私は取得エラー「パスへのアクセスは 『E:\フォルダ\ file.xml』が拒否されました。」それをロードしようとしたとき。

Dim picker As Windows.Storage.Pickers.FileOpenPicker = New Windows.Storage.Pickers.FileOpenPicker 
picker.ViewMode = Windows.Storage.Pickers.PickerViewMode.Thumbnail 
picker.FileTypeFilter.Add(".xml") 
Dim File As Windows.Storage.StorageFile = Await picker.PickSingleFileAsync 
Await Task.Run(Function() 
    If Not (File Is Nothing) Then 
    Task.Yield() 
    Dim loadedData As XDocument = XDocument.Load(File.Path) 
    End If 
End Function) 

ピッカーを使用してファイルを選択すると、ファイルアクセスが許可されます。だからおそらく、それはTask.Runにアクセスしているからでしょうか?私はのawaitを使用して、それを呼び出すことはできませんので、私は、それが動作しない機能にpicker.PickSingleFileAsyncを入れ

。 "Windows.Storage.StorageFile"と入力すると、タイプ 'System .__ ComObject'のオブジェクトをキャストできません。キャストエラーが発生しました。 "

何私の概念エラーで、どのように私はピッカーを使用してファイルを選択することができます(または私はピッカーよりも、何か他のものを使用する必要はありますか?)とオープンして(XML)を、それを読みますか?重要な場合:コードはボタンのクリックイベントに配置する必要があります。

答えて

2

あなたはFileオブジェクトへのアクセスのみを持っています。
ファイルのパスでアクセスできます。

このように動作するはずです:

Dim picker As Windows.Storage.Pickers.FileOpenPicker = New Windows.Storage.Pickers.FileOpenPicker 
    picker.ViewMode = Windows.Storage.Pickers.PickerViewMode.Thumbnail 
    picker.FileTypeFilter.Add(".xml") 
    Dim File As Windows.Storage.StorageFile = Await picker.PickSingleFileAsync 

    Dim Fl = Await File.OpenAsync(Windows.Storage.FileAccessMode.Read) 
    Dim inStream As Stream = Fl.AsStreamForRead() 

    Dim loadedData As XDocument = XDocument.Load(inStream) 
+0

は、それが私の一層の仕事/調査のための良い拠点です、ありがとう –

関連する問題