Delen via


Bestanden en mappen openen met een selectiehulpmiddel

Belangrijke API's

Verkrijg toegang tot bestanden en mappen door de gebruiker te laten communiceren met een kiesfunctie. U kunt de FileOpenPicker en FileSavePicker klassen gebruiken voor toegang tot bestanden en de FolderPicker om toegang te krijgen tot een map.

Opmerking

 Zie het bestandkiezervoorbeeldvoor een volledig voorbeeld.

Opmerking

In een desktop-app (waaronder WinUI 3-apps), kunt u bestands- en mapkiezers gebruiken uit Windows.Storage.Pickers. Als de desktop-app verhoging vereist, hebt u echter een andere benadering nodig omdat deze API's niet zijn ontworpen om te worden gebruikt in een app met verhoogde rechten. Zie FileSavePicker voor een voorbeeld.

Vereiste voorwaarden

Gebruikersinterface voor bestandskiezer

Een bestandskiezer geeft informatie weer om gebruikers te richten en een consistente ervaring te bieden bij het openen of opslaan van bestanden.

Deze informatie omvat:

  • De huidige locatie
  • Het item of de items die de gebruiker heeft gekozen
  • Een boomstructuur met locaties waarnaar de gebruiker kan bladeren. Deze locaties omvatten bestandssysteemlocaties, zoals de map Muziek of Downloads, evenals apps die het contract voor bestandskiezer implementeren (zoals Camera, Foto's en Microsoft OneDrive).

Een e-mail-app kan een bestandskiezer weergeven voor de gebruiker om bijlagen te kiezen.

een bestandskiezer met twee bestanden die moeten worden geopend.

Hoe kiezers werken

Met een kiezer kan uw app bestanden en mappen openen, bladeren en opslaan op het systeem van de gebruiker. Uw app ontvangt deze selecties als StorageFile en StorageFolder objecten, waarop u vervolgens kunt werken.

De kiezer maakt gebruik van één geïntegreerde interface waarmee de gebruiker bestanden en mappen uit het bestandssysteem of vanuit andere apps kan kiezen. Bestanden die zijn gekozen uit andere apps zijn net als bestanden uit het bestandssysteem: ze worden geretourneerd als StorageFile objecten. In het algemeen kan uw app hierop op dezelfde manier werken als andere objecten. Andere apps maken bestanden beschikbaar door deel te nemen aan bestandskiezercontracten. Als u wilt dat uw app bestanden, een opslaglocatie of bestandsupdates voor andere apps biedt, raadpleegt u Integratie met bestandskiezercontracten.

U kunt bijvoorbeeld de bestandskiezer in uw app aanroepen, zodat uw gebruiker een bestand kan openen. Hierdoor wordt uw app de aanroepende app. De bestandskiezer communiceert met het systeem en/of andere apps om de gebruiker te laten navigeren en het bestand te kiezen. Wanneer uw gebruiker een bestand kiest, retourneert de bestandskiezer dat bestand naar uw app. Dit is het proces voor het geval dat de gebruiker een bestand kiest vanuit een app die wordt verstrekt, zoals OneDrive.

een diagram dat het proces toont waarbij een app een bestand opent vanuit een andere app, gebruikmakend van de bestandskiezer als interface tussen de twee apps.

Eén bestand kiezen: volledige codevermelding

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.";
}

Kies één bestand: stapsgewijs

Als u een bestandskiezer gebruikt, moet u een bestandskiezerobject maken en aanpassen en vervolgens de bestandskiezer weergeven, zodat de gebruiker een of meer items kan kiezen.

  1. Een FileOpenPicker- maken en aanpassen

    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");
    

    Stel eigenschappen in voor het bestandskiezerobject dat relevant is voor uw gebruikers en app.

    In dit voorbeeld wordt een uitgebreide, visuele weergave van afbeeldingen gemaakt op een handige locatie waaruit de gebruiker kan kiezen door drie eigenschappen in te stellen: ViewMode, SuggestedStartLocationen FileTypeFilter.

    • Als u ViewMode instelt op de PickerViewModeMiniatuurweergave opsommingswaarde, zorgt dit voor een rijke, visuele weergave door gebruik te maken van miniatuurafbeeldingen om bestanden in de bestandskiezer weer te geven. Doe dit voor het kiezen van visuele bestanden, zoals afbeeldingen of video's. Gebruik anders PickerViewMode.List. Een hypothetische e-mail-app met de functies Afbeelding of video bijvoegen en Document bijvoegen zou de ViewMode geschikt maken voor de functie voordat de bestandskiezer wordt weergegeven.

    • Als u SuggestedStartLocation instelt op Afbeeldingen met behulp van PickerLocationId.PicturesLibrary wordt de gebruiker gestart op een locatie waar ze waarschijnlijk afbeeldingen vinden. Stel SuggestedStartLocation in op een locatie die geschikt is voor het type bestand dat wordt gekozen, bijvoorbeeld Muziek, Afbeeldingen, Video's of Documenten. Vanaf de beginlocatie kan de gebruiker naar andere locaties navigeren.

    • Als u FileTypeFilter gebruikt om bestandstypen op te geven, blijft de gebruiker gericht op het kiezen van bestanden die relevant zijn. Als u eerdere bestandstypen in de FileTypeFilter- wilt vervangen door nieuwe vermeldingen, gebruikt u ReplaceAll- in plaats van toevoegen.

  2. FileOpenPicker weergeven

    • Een enkel bestand kiezen

      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.";
      }
      
    • Meerdere bestanden kiezen

      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.";
      }
      

Kies een map: volledige codevermelding

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.";
}

Aanbeveling

Wanneer uw app een bestand of map opent met een selectievenster, voegt u het toe aan de FutureAccessList of MostRecentlyUsedList om het te blijven volgen. Meer informatie over het gebruik van deze lijsten vindt u in Onlangs gebruikte bestanden en mappen bijhouden.

Zie ook

Windows.Storage.Pickers

bestanden, mappen en bibliotheken

Integratie met bestandskiezercontracten