Aprire file e cartelle con una selezione

API importanti

Accedi a file e cartelle consentendo all'utente di interagire con una selezione. È possibile usare le classi FileOpenPicker e FileSavePicker per accedere ai file e CartellaPicker per accedere a una cartella.

Nota

 Per un esempio completo, vedi l'esempio di utilità di selezione file.

Prerequisiti

Interfaccia utente di selezione file

Una selezione file visualizza informazioni per orientare gli utenti e offrire loro un'esperienza uniforme per l'apertura o il salvataggio dei file.

Tali informazioni includono:

  • Percorso corrente
  • Elementi selezionati dall'utente
  • Albero dei percorsi che l'utente può esplorare. I percorsi includono posizioni nel file system, come la cartella Musica o Download, nonché le app che implementano un contratto di selezione file, come Fotocamera, Foto e Microsoft OneDrive.

Un'app per l'e-mail potrebbe visualizzare una selezione file per permettere all'utente di selezionare gli allegati.

a file picker with two files picked to be opened.

Come funzionano le selezioni file

Tramite una selezione la tua app può accedere ai file e alle cartelle, esplorarli e salvarli nel sistema dell'utente. La tua app riceve tali selezioni come oggetti StorageFile e StorageFolder, sui quali puoi poi intervenire.

La selezione usa una singola interfaccia unificata per permettere all'utente di selezionare file e cartelle dal file system o da altre app. I file selezionati da altre app sono come file dal file system: vengono restituiti come oggetti StorageFile . In generale, la tua app può gestire questi file come fa con gli altri oggetti di questo tipo. Le altre app rendono disponibili i propri file aderendo ai contratti di selezione file. Se vuoi che la tua app fornisca file, un percorso di salvataggio o aggiornamenti dei file ad altre app, vedi Integrazione con i contratti di selezione file.

Ad esempio, potresti chiamare la selezione file nella tua app per consentire all'utente di aprire un file. In questo caso la tua app è l'app chiamante. La selezione file interagisce con il sistema e/o le altre app in modo tale che l'utente possa esplorare e selezionare il file. Quando l'utente sceglie un file, la selezione file lo restituisce all'app. Ecco il processo per il caso in cui l'utente sceglie un file da un'app di fornitura, come OneDrive.

a diagram that shows the process of one app getting a file to open from another app using the file picker as an interface bewteen the two apps.

Selezionare un singolo file: elenco completo del codice

var picker = new Windows.Storage.Pickers.FileOpenPicker();
picker.ViewMode = Windows.Storage.Pickers.PickerViewMode.Thumbnail;
picker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.PicturesLibrary;
picker.FileTypeFilter.Add(".jpg");
picker.FileTypeFilter.Add(".jpeg");
picker.FileTypeFilter.Add(".png");

Windows.Storage.StorageFile file = await picker.PickSingleFileAsync();
if (file != null)
{
    // Application now has read/write access to the picked file
    this.textBlock.Text = "Picked photo: " + file.Name;
}
else
{
    this.textBlock.Text = "Operation cancelled.";
}

Selezionare un singolo file: istruzioni dettagliate

L'uso di una selezione file comporta la creazione e personalizzazione di un oggetto selezione file e quindi la visualizzazione della selezione file in modo tale che l'utente possa selezionare uno o più elementi.

  1. Creare e personalizzare un FileOpenPicker

    var picker = new Windows.Storage.Pickers.FileOpenPicker();
    picker.ViewMode = Windows.Storage.Pickers.PickerViewMode.Thumbnail;
    picker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.PicturesLibrary;
    picker.FileTypeFilter.Add(".jpg");
    picker.FileTypeFilter.Add(".jpeg");
    picker.FileTypeFilter.Add(".png");
    

    Imposta le proprietà dell'oggetto selezione file rilevanti per gli utenti e per la tua app.

    In questo esempio viene creata una visualizzazione visiva avanzata e visiva di immagini in una posizione comoda che l'utente può scegliere impostando tre proprietà: ViewMode, SuggestedStartLocation e FileTypeFilter.

    • Impostando ViewMode sul valore di enumerazione ThumbnailPickerViewMode, verrà creata una visualizzazione avanzata grazie all'uso di anteprime delle immagini per rappresentare i file nella selezione file. Scegli questa tecnica per la selezione di file grafici, come immagini o video. In caso contrario, usare PickerViewMode.List. Un’app per l’e-mail ipotetica con le funzionalità Allega immagine o video e Allega documento imposterebbe ViewMode in modo appropriato in base alla funzionalità prima di visualizzare la selezione file.

    • L'impostazione di SuggestedStartLocation su Immagini usando PickerLocationId.PicturesLibrary avvia l'utente in una posizione in cui è probabile che trovino immagini. Imposta SuggestedStartLocation su una posizione appropriata per il tipo di file da selezionare, ad esempio Musica, Immagini, Video o Documenti. Gli utenti possono spostarsi in altre posizioni dalla posizione iniziale.

    • L'uso di FileTypeFilter per specificare i tipi di file mantiene l'utente incentrato sulla selezione di file rilevanti. Per sostituire i tipi di file precedenti in FileTypeFilter con nuovi tipi di file, usa ReplaceAll invece di Add.

  2. Visualizzare la selezione per apertura file

    • Per selezionare un singolo file

      Windows.Storage.StorageFile file = await picker.PickSingleFileAsync();
      if (file != null)
      {
          // Application now has read/write access to the picked file
          this.textBlock.Text = "Picked photo: " + file.Name;
      }
      else
      {
          this.textBlock.Text = "Operation cancelled.";
      }
      
    • Per selezionare più file

      var files = await picker.PickMultipleFilesAsync();
      if (files.Count > 0)
      {
          StringBuilder output = new StringBuilder("Picked files:\n");
      
          // Application now has read/write access to the picked file(s)
          foreach (Windows.Storage.StorageFile file in files)
          {
              output.Append(file.Name + "\n");
          }
          this.textBlock.Text = output.ToString();
      }
      else
      {
          this.textBlock.Text = "Operation cancelled.";
      }
      

Selezionare una cartella: listato completo del codice

var folderPicker = new Windows.Storage.Pickers.FolderPicker();
folderPicker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.Desktop;
folderPicker.FileTypeFilter.Add("*");

Windows.Storage.StorageFolder folder = await folderPicker.PickSingleFolderAsync();
if (folder != null)
{
    // Application now has read/write access to all contents in the picked folder
    // (including other sub-folder contents)
    Windows.Storage.AccessCache.StorageApplicationPermissions.
    FutureAccessList.AddOrReplace("PickedFolderToken", folder);
    this.textBlock.Text = "Picked folder: " + folder.Name;
}
else
{
    this.textBlock.Text = "Operation cancelled.";
}

Suggerimento

Ogni volta che l'app accede a un file o a una cartella tramite una selezione file, aggiungere tale elemento agli elenchi FutureAccessList o MostRecentlyUsedList dell’app per tenerne traccia. Puoi trovare altre informazioni sull’uso di questi elenchi in Come tenere traccia di cartelle e file usati di recente.