2017-10-09 5 views
2

J'ai une page de lancement (MainPage1.xaml) .Il y a un bouton pour sélectionner le fichier vidéo de l'appareil. Maintenant, je veux lire ce fichier sélectionné sur la page suivante (MainPage2.xaml). Comment puis-je obtenir ce fichier selcted StorageFile file sur la page suivante?Comment transmettre les détails d'un fichier sélectionné à une autre page - 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

Quel est le problème avec votre code? Quelle partie ne fonctionne pas? – AVK

+0

comment accéder à ce 'fichier' sur la page suivante? – user2431727

+1

inside onNavigatedto Événement do Fichier StorageFile = e.Parameter comme StorageFile'. Ceci est dans 'MainPage2' – AVK

Répondre

1

Vous devez remplacer la méthode OnNavigatedTo() dans votre page (page suivante) qui attend la StorageFile:

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

Hope this helps ..

+0

Cela fonctionnera de manière incohérente pour un StorageFile. Le paramètre doit être un type de base –

+0

Merci de partager l'information à travers votre réponse .. il est vraiment utile .. la réponse que j'avais recommandée était basée entièrement sur la question qui a été posée .. – Pratyay

0

Override OnNavigatedTo dans DestinationPage

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

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

Il y a deux parties à ceci: comme noté dans d'autres réponses, le deuxième argument de la méthode Navigate sera passé à OnNavigatedTo dans le NavigationEventArgs.Parameter.

Ceci est bon pour les types de base, mais n'est pas suffisant pour un fichier StorageFile. Citation du Frame.Navigate docs:

Paramètre Objet Paramètre de navigation à transmettre à la page cible; doit avoir un type de base (chaîne, caractère, numérique ou GUID) pour prendre en charge la sérialisation des paramètres à l'aide de GetNavigationState.

Le StorageFile travaillera pour une navigation directe, mais étant donné que ce n'est pas sérialisable il peut se perdre dans la pile de secours, tout en suspendant, etc.

Au lieu de passer le StorageFile directement arrimer dans un dictionnaire global et passez une chaîne ou une clé GUID que la méthode OnNavigatedTo peut utiliser pour rechercher le StorageFile de l'autre côté. Pour le cas spécifique d'un StorageFile, vous pouvez utiliser la liste FutureAccessList. Voir Track recently used files and folders