2017-10-09 17 views
2

私はランチャーページ(MainPage1.xaml)を持っています。デバイスからビデオファイルを選択するボタンがあります。今度は、選択したファイルを次のページ(MainPage2.xaml)で再生します。次のページに、このファイルをどのように入手できますか?StorageFile file? DestinationPageでselecedファイルの詳細を別のページに渡す方法 - UWP?

private async void Button_Click(object sender, RoutedEventArgs e) 
    { 
     StorageFile file; 

     FileOpenPicker openPicker = new FileOpenPicker(); 
     foreach (string extension in FileExtensions.Video) 
     { 
      openPicker.FileTypeFilter.Add(extension); 
     } 
     file = await openPicker.PickSingleFileAsync(); 

     this.Frame.Navigate(typeof(MainPage2), file); 
    } 
+0

コードに何が問題がありますか。どの部分が機能していないのですか? – AVK

+0

次のページの「ファイル」にアクセスするには? – user2431727

+1

onNavigatedtoイベント内で 'StorageFile file = e.Parameter as StorageFile'を実行します。これは 'MainPage2'にあります – AVK

答えて

1

あなたはあなたのページStorageFile期待している(次ページ)にOnNavigatedTo()メソッドをオーバーライドする必要があります。このことができます

protected override void OnNavigatedTo(NavigationEventArgs e) 
{ 
    if (e.Parameter != null) 
    { 
     StorageFile file = (StorageFile)e.Parameter; 
    } 
} 

希望を..

+0

これはStorageFileに対して一貫して動作しません。パラメータは基本型でなければなりません –

+0

あなたの答えを使って情報を共有してくれてありがとう。本当に役に立ちました。私が勧めた答えは、質問された質問に完全に基づいていました。 – Pratyay

0

オーバーライドOnNavigatedTo

protected override void OnNavigatedTo(NavigationEventArgs e) 
{ 
    base.OnNavigatedTo(e); 

    var parameters = e.Parameter; // it will give your file reference 
} 
0

これには2つの部分があります。他の回答に記載されているように、Navigateメソッドの2番目の引数は、NavigationEventArgs.ParameterのOnNavigatedToに渡されます。

これは基本タイプには適していますが、StorageFileでは十分ではありません。 Frame.Navigate docsから引用:

パラメータは、ターゲットページに渡すナビゲーションパラメータをオブジェクト。 には、GetNavigationStateを使用して パラメータのシリアル化をサポートするための基本型(文字列、char、数値、またはGUID)が必要です。

代わりStorageFileを渡すなど、

をStorageFileが直接ナビゲーションのために働くだろうが、中断しながら、それは、バックスタックで迷子になることができ、シリアライズではありませんので、直接でそれを詰め込みますOnNavigatedToメソッドが他の側のStorageFileをルックアップするために使用できる文字列またはGUIDキーを渡します。

StorageFileの特定のケースでは、FutureAccessListを使用できます。

関連する問題