2017-10-09 83 views
2

我有一个启动页面(MainPage1.xaml)。有一个按钮可以从设备中选择视频文件。现在我想在下一页播放选定的文件(MainPage2.xaml)。我怎样才能得到这个选择的文件StorageFile file在下一页?如何将选择的文件详细信息传递到另一页 - 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

你必须重写OnNavigatedTo()方法在你的页面(下一页),这是期待StorageFile

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

希望这有助于..

+0

这对于StorageFile将不一致地工作。该参数需要是一个基本的类型 –

+0

谢谢你通过你的答案分享信息..这是非常有用的..我所推荐的答案完全基于被问到的问题。 – Pratyay

0

覆盖的OnNavigatedTo在DestinationPage

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

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

有两个部分:如其他答案中所述,Navigate方法的第二个参数将传递给NavigationEventArgs.Parameter中的OnNavigatedTo。

这对基本类型很有用,但对于StorageFile来说是不够的。从Frame.Navigate docs引用:

参数Object传递给目标页面的导航参数; 必须具有使用GetNavigationState支持 参数序列化的基本类型(字符串,字符,数字或GUID)。

的StorageFile将用于直接导航工作,但因为它是不可序列可以迷失在返回堆叠,同时暂停,等

而是经过StorageFile直接收存它在中全局字典并传递OnNavigatedTo方法可用于查找另一侧的StorageFile的字符串或GUID键。

对于StorageFile的特定情况,您可以使用FutureAccessList。请参阅Track recently used files and folders

相关问题