Совместное использование файла на Windows Phone 8.1
Кто-нибудь может помочь мне написать свое собственное универсальное приложение для магазина Windows. Я хочу, чтобы моя страница xaml выбрала файл, а затем поделилась им с помощью контракта на Windows Phone 8.1 . Проблема заключается в моем приложении Windows Phone 8.1, когда я выбираю файл, он достигает точки останова и не распознает эту строку кода. IReadOnlyList selectedFiles = await filePicker.PickMultipleFilesAsync(). Это работает на версии Windows 8.1, а не версии Windows Phone 8.1 .
private async void SelectFilesButton_Click(object sender, RoutedEventArgs e)
{
FileOpenPicker filePicker = new FileOpenPicker
{
ViewMode = PickerViewMode.List,
SuggestedStartLocation = PickerLocationId.DocumentsLibrary,
FileTypeFilter = { "*" }
};
IReadOnlyList<StorageFile> pickedFiles = await filePicker.PickMultipleFilesAsync();
if (pickedFiles.Count > 0)
{
this.storageItems = pickedFiles;
// Display the file names in the UI.
string selectedFiles = String.Empty;
for (int index = 0; index < pickedFiles.Count; index++)
{
selectedFiles += pickedFiles[index].Name;
if (index != (pickedFiles.Count - 1))
{
selectedFiles += ", ";
}
}
NotifyUser(String.Format("Picked files: ") + selectedFiles + ".", NotifyType.StatusMessage);
ShareStep.Visibility = Visibility.Visible;
}
}
private void Button_Click(object sender, RoutedEventArgs e)
{
DataTransferManager dataTransferManager = DataTransferManager.GetForCurrentView();
dataTransferManager.DataRequested += new TypedEventHandler<DataTransferManager,
DataRequestedEventArgs>(this.ShareStorageItemsHandler);
// If the user clicks the share button, invoke the share flow programatically.
DataTransferManager.ShowShareUI();
}
private async void ShareStorageItemsHandler(DataTransferManager sender,DataRequestedEventArgs e)
{
DataRequest request = e.Request;
request.Data.Properties.Title = TitleInputBox.Text;
request.Data.Properties.Description = DescriptionInputBox.Text;
// Because we are making async calls in the DataRequested event handler,
// we need to get the deferral first.
DataRequestDeferral deferral = request.GetDeferral();
// Make sure we always call Complete on the deferral.
try
{
request.Data.SetStorageItems(this.storageItems);
}
finally
{
deferral.Complete();
}
}
2 ответа
В предварительном просмотре Win10 SDK это работает так же, как и в WinRT, поэтому как Phone, так и все остальное будет просто использовать PickMultipleFilesAsync.
API выбора файлов в Windows Phone 8.1 работает немного по-другому. Вместо FileOpenPicker.PickMultipleFilesAsync вам нужно вызвать FileOpenPicker.PickMultipleFilesAndContinue. Эта статья предоставляет гораздо больше контекста: https://msdn.microsoft.com/en-us/library/windows/apps/xaml/dn631755.aspx. Об этом также рассказывается в моем докладе о сборке здесь: http://channel9.msdn.com/Events/Build/2014/2-520.
Наконец, ответ на этот вопрос: Windows Phone, выберите файл с помощью PickSingleFileAndContinue или PickMultipleFilesAndContinue Stackru вопрос также имеет образец.