我有一个启动器页面(MainPage1.xaml)。有一个按钮可以从设备中选择视频文件。现在我想在下一页(MainPage2.xaml)上播放所选文件。如何在下一页上获取此选定文件StorageFile file
?
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 :(得分:1)
您必须覆盖页面中的OnNavigatedTo()
方法(下一页),期望StorageFile
:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
if (e.Parameter != null)
{
StorageFile file = (StorageFile)e.Parameter;
}
}
希望这会有所帮助..
答案 1 :(得分:0)
覆盖DestinationPage中的OnNavigatedTo
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
var parameters = e.Parameter; // it will give your file reference
}
答案 2 :(得分:0)
这有两个部分:如其他答案中所述,Navigate方法的第二个参数将传递给NavigationEventArgs.Parameter中的OnNavigatedTo。
这对基本类型有用,但对于StorageFile来说还不够。引自Frame.Navigate docs:
parameter Object传递给目标页面的导航参数; 必须具有要支持的基本类型(字符串,字符,数字或GUID) 使用GetNavigationState进行参数序列化。
StorageFile可用于直接导航,但由于它不可序列化,因此可能会在后台堆栈中丢失,同时暂停等等。
而不是直接传递StorageFile将其存放在全局字典中,并传递一个字符串或GUID键,OnNavigatedTo方法可以使用该键来查找另一侧的StorageFile。
对于StorageFile的特定情况,您可以使用FutureAccessList。见Track recently used files and folders