Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Verwenden Sie die Windows App SDK-Datei- und Ordnerauswahl, um Benutzern das Durchsuchen und Auswählen von Dateien oder Ordnern in Ihrer WinUI-App zu ermöglichen. Die Auswahl-APIs bieten eine vertraute Windows-Umgebung, mit der Benutzer ihre Geräte- und Cloudspeicherorte navigieren können. In diesem Artikel erfahren Sie, wie Sie Datei öffnende Auswahlen und Ordnerauswahlen implementieren, ihr Verhalten anpassen und die ausgewählten Ergebnisse in Ihrer App behandeln.
Die Klassen " FileOpenPicker " und " FileSavePicker " von Windows App SDK erstellen ein Auswahldialogfeld, in dem Benutzer den Namen und speicherort einer Datei angeben können, die geöffnet oder gespeichert werden soll. Mit der FolderPicker-Klasse können Sie einen Ordner auswählen.
Informationen zur Verwendung eines Pickers zum Speichern von Dateien finden Sie unter Speichern einer Datei mit einem Windows App SDK Picker.
Wichtige APIs
In diesem Artikel werden die folgenden APIs verwendet:
Dateiauswahl-UI
Eine Dateiauswahl zeigt Informationen an, um Benutzer zu orientieren und beim Öffnen oder Speichern von Dateien eine konsistente Erfahrung zu bieten.
Diese Informationen umfassen:
- Der aktuelle Speicherort
- Das Element oder die Elemente, das der Benutzer auswählt
- Ein Baum von Speicherorten, zu denen der Benutzer browsen kann. Zu diesen Speicherorten gehören Dateisystemspeicherorte wie der Ordner "Musik" oder "Downloads" sowie Apps, die den Vertrag für die Dateiauswahl implementieren (z. B. "Kamera", "Fotos" und "Microsoft OneDrive").
Möglicherweise verfügen Sie über eine App, mit der Benutzer Dateien öffnen oder speichern können. Wenn der Benutzer diese Aktion initiiert, ruft ihre App die Dateiauswahl auf, wodurch die Dateiauswahl-UI angezeigt wird:
Funktionsweise von Auswahlwerkzeugen in Ihrer App
Mit einer Auswahl kann Ihre App auf Dateien und Ordner im System des Benutzers zugreifen, durchsuchen und speichern. Ihre App empfängt diese Auswahlen als einfache PickFileResult - und PickFolderResult-Objekte , die den Pfad zu der ausgewählten Datei oder dem ausgewählten Ordner bereitstellen.
Die Auswahl verwendet eine einzelne, einheitliche Schnittstelle, die es dem Benutzer ermöglicht, Dateien und Ordner aus dem Dateisystem oder aus anderen Apps auszuwählen. Dateien, die aus anderen Apps ausgewählt wurden, sind wie Dateien aus dem Dateisystem. Im Allgemeinen kann Ihre App auf die gleiche Weise wie andere Objekte darauf zugreifen. Andere Apps stellen Dateien zur Verfügung, indem sie an Verträgen für die Dateiauswahl teilnehmen.
Sie können beispielsweise die Dateiauswahl in Ihrer App aufrufen, damit Der Benutzer eine Datei öffnen kann. Diese Aktion macht Ihre App zur Anruf-App. Die Dateiauswahl interagiert mit dem System und anderen Apps, damit der Benutzer navigieren und die Datei auswählen kann. Wenn Der Benutzer eine Datei auswählt, gibt die Dateiauswahl den Pfad dieser Datei zu Ihrer App zurück.
Auswählen einer Datei zum Öffnen eines Beispiels
Der folgende Code zeigt, wie sie die FileOpenPicker-Klasse verwenden, damit der Benutzer eine einzelne Datei wie ein Foto auswählen kann. Der Code legt Eigenschaften für die Auswahl fest, um sein Aussehen und Verhalten anzupassen, und zeigt dann die Auswahl für den Benutzer mithilfe der PickSingleFileAsync-Methode an. Wenn der Benutzer eine Datei auswählt, liest die App den Inhalt der Datei und speichert sie in einer Variablen.
using Microsoft.Windows.Storage.Pickers;
var openPicker = new FileOpenPicker(this.AppWindow.Id)
{
// (Optional) Specify the initial location for the picker.
// If the specified location doesn't exist on the user's machine, it falls back to the DocumentsLibrary.
// If not set, it defaults to PickerLocationId.Unspecified, and the system will use its default location.
SuggestedStartLocation = PickerLocationId.DocumentsLibrary,
// (Optional) specify the text displayed on the commit button.
// If not specified, the system uses a default label of "Open" (suitably translated).
CommitButtonText = "Choose selected files",
// (Optional) specify file extension filters. If not specified, defaults to all files (*.*).
FileTypeFilter = { ".txt", ".pdf", ".doc", ".docx" },
// (Optional) specify the view mode of the picker dialog. If not specified, defaults to List.
ViewMode = PickerViewMode.List,
};
var result = await openPicker.PickSingleFileAsync();
if (result is not null)
{
var content = System.IO.File.ReadAllText(result.Path);
}
else
{
// Add your error handling here.
}
Dies ist dasselbe Beispiel in C++:
#include <winrt/Microsoft.Windows.Storage.Pickers.h>
#include <fstream>
#include <string>
using namespace winrt::Microsoft::Windows::Storage::Pickers;
FileOpenPicker openPicker(this->AppWindow().Id());
// (Optional) Specify the initial location for the picker.
// If the specified location doesn't exist on the user's machine, it falls back to the DocumentsLibrary.
// If not set, it defaults to PickerLocationId.Unspecified, and the system will use its default location.
openPicker.SuggestedStartLocation(PickerLocationId::DocumentsLibrary);
// (Optional) specify the text displayed on the commit button.
// If not specified, the system uses a default label of "Open" (suitably translated).
openPicker.CommitButtonText(L"Choose selected files");
// (Optional) specify file extension filters. If not specified, defaults to all files (*.*).
openPicker.FileTypeFilter().ReplaceAll({ L".txt", L".pdf", L".doc", L".docx" });
// (Optional) specify the view mode of the picker dialog. If not specified, defaults to List.
openPicker.ViewMode(PickerViewMode::List);
auto result{ co_await openPicker.PickSingleFileAsync() };
if (result)
{
std::ifstream fileReader(result.Path().c_str());
std::string text((std::istreambuf_iterator<char>(fileReader)), std::istreambuf_iterator<char>());
winrt::hstring hText = winrt::to_hstring(text);
}
else
{
// Add your error handling here.
}
Auswählen mehrerer Dateien zum Öffnen des Beispiels
Sie können dem Benutzer auch die Auswahl mehrerer Dateien ermöglichen. Der folgende Code zeigt, wie Sie die FileOpenPicker-Klasse verwenden, damit der Benutzer mehrere Dateien wie Fotos auswählen kann. Der Prozess ist identisch, aber die PickMultipleFilesAsync-Methode gibt eine Sammlung von Dateipfaden anstelle eines einzelnen Pfads zurück.
using Microsoft.Windows.Storage.Pickers;
var openPicker = new FileOpenPicker(this.AppWindow.Id);
var results = await openPicker.PickMultipleFilesAsync();
if (results.Count > 0)
{
var pickedFilePaths = results.Select(f => f.Path);
foreach (var path in pickedFilePaths)
{
var content = System.IO.File.ReadAllText(path);
}
}
else
{
// Add your error handling here.
}
Verwenden Sie den folgenden Code, um denselben Vorgang in C++ auszuführen:
#include <winrt/Microsoft.Windows.Storage.Pickers.h>
#include <fstream>
#include <string>
using namespace winrt::Microsoft::Windows::Storage::Pickers;
FileOpenPicker openPicker(this->AppWindow().Id());
auto results{ co_await openPicker.PickMultipleFilesAsync() };
if (results.Size() > 0)
{
for (auto const& result : results)
{
std::ifstream fileReader(result.Path().c_str());
std::string text((std::istreambuf_iterator<char>(fileReader)), std::istreambuf_iterator<char>());
winrt::hstring hText = winrt::to_hstring(text);
}
}
else
{
// Add your error handling here.
}
Beispiel für einen Ordner auswählen
Wenn Sie einen Ordner mithilfe der FolderPicker-Klasse auswählen möchten, verwenden Sie den folgenden Code. Dieser Code erstellt eine Ordnerauswahl, zeigt sie dem Benutzer mithilfe der PickSingleFolderAsync-Methode an und ruft den Pfad des ausgewählten Ordners in einem PickFolderResult -Objekt ab. Wenn der Benutzer einen Ordner auswählt, ruft die App den Pfad des Ordners ab und speichert ihn zur späteren Verwendung in einer Variablen.
using Microsoft.Windows.Storage.Pickers;
var folderPicker = new FolderPicker(this.AppWindow.Id)
{
// (Optional) Specify the initial location for the picker.
// If the specified location doesn't exist on the user's machine, it falls back to the DocumentsLibrary.
// If not set, it defaults to PickerLocationId.Unspecified, and the system will use its default location.
SuggestedStartLocation = PickerLocationId.DocumentsLibrary,
// (Optional) specify the text displayed on the commit button.
// If not specified, the system uses a default label of "Open" (suitably translated).
CommitButtonText = "Select Folder",
// (Optional) specify the view mode of the picker dialog. If not specified, default to List.
ViewMode = PickerViewMode.List,
};
var result = await folderPicker.PickSingleFolderAsync();
if (result is not null)
{
var path = result.Path;
}
else
{
// Add your error handling here.
}
Verwenden Sie den folgenden Code, um denselben Vorgang in C++ auszuführen:
#include <winrt/Microsoft.Windows.Storage.Pickers.h>
using namespace winrt::Microsoft::Windows::Storage::Pickers;
FolderPicker folderPicker(this->AppWindow().Id());
// (Optional) Specify the initial location for the picker.
// If the specified location doesn't exist on the user's machine, it falls back to the DocumentsLibrary.
// If not set, it defaults to PickerLocationId.Unspecified, and the system will use its default location.
folderPicker.SuggestedStartLocation(PickerLocationId::DocumentsLibrary);
// (Optional) specify the text displayed on the commit button.
// If not specified, the system uses a default label of "Open" (suitably translated).
folderPicker.CommitButtonText(L"Select Folder");
// (Optional) specify the view mode of the picker dialog. If not specified, default to List.
folderPicker.ViewMode(PickerViewMode::List);
auto result{ co_await folderPicker.PickSingleFolderAsync() };
if (result)
{
auto path{ result.Path() };
}
else
{
// Add your error handling here.
}
Tipp
Wenn Ihre App über eine Auswahl auf eine Datei oder einen Ordner zugreift, fügen Sie sie der FutureAccessList oder MostRecentlyUsedList Ihrer App hinzu, um sie mithilfe der Windows-Runtime-APIs (WinRT) nachverfolgen zu können. Weitere Informationen finden Sie unter Nachverfolgen von zuletzt verwendeten Dateien und Ordnern.
Die Benutzeroberfläche für die Ordnerauswahl sieht wie folgt aus:
Verwandte Inhalte
Windows developer