2017-10-09 79 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

相關問題