1

可以有人帮助我编写我自己的通用 Windows 商店应用程序我希望我的 xaml 页面选择一个文件,然后使用 windows phone 8.1 上的共享合同共享它。问题是我的 windows phone 8.1 应用程序,当我选择一个文件时它会遇到断点并且无法识别这行代码 IReadOnlyList pickFiles = 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();
        }
    }
4

2 回答 2

0

在 Win10 SDK 的预览版中,这与在 WinRT 上的工作方式相同,因此 Phone 和其他任何东西都只会使用 PickMultipleFilesAsync

于 2015-04-16T09:17:41.453 回答
0

Windows Phone 8.1 上的文件选择器 API 的工作方式略有不同。您需要调用 FileOpenPicker.PickMultipleFilesAndContinue 而不是 FileOpenPicker.PickMultipleFilesAsync。本文提供了更多上下文:https ://msdn.microsoft.com/en-us/library/windows/apps/xaml/dn631755.aspx 。这也包含在我的构建演讲中:http: //channel9.msdn.com/Events/Build/2014/2-520

最后,这个问题的答案:Windows Phone,pick file using PickSingleFileAndContinue or PickMultipleFilesAndContinue StackOverflow问题也有样例。

于 2015-04-16T07:48:57.440 回答