UWP: Öffnen
des Dateiexplorers aus einer Windows App
Ich möchte
aus meiner Windows 10 App den Dateiexplorer starten und dabei einen Ordner
öffnen, dessen Pfad ich beim Start übergeben möchte.
(UWP,
Universal Windows Platform Anwendung)
Lösung:
Hierzu
verwendet man den Launcher in Window 10. Der Launcher
kann Dateien, Verzeichnisse, Suchergebnisse und Web-Pfade öffnen.
Über Launcher.LaunchFolderAsync(folder)
kann man ein Verzeichnis Objekt zur Anzeige öffnen.
Damit man aber ein Verzeichnis übergeben kann, muss
man dieses zuvor mit Storagefolder.GetFolderFromPathAsync(Path) ermitteln.
private async void menuItem_Open_Explorer(object sender, RoutedEventArgs e)
{
//--------------<
menuItem_Open_Explorer() >--------------
//< get Folder >
string sPath = Path;
StorageFolder folder= await StorageFolder.GetFolderFromPathAsync(sPath);
//</ get Folder >
//< open File-Explorer
>
await Launcher.LaunchFolderAsync(folder);
//</ open File-Explorer
>
//--------------</
menuItem_Open_Explorer() >--------------
}
|
Hierfür werden die Namespaces für den Folder und den Launcher
benötigt:
using Windows.System; //Launcher
using Windows.Storage; //Files File.AccessMode
|
Im gezeigten Beispiel starte ich das Open Explorer
Event mit einem Flyout-Menü. Dabei wird
der Click
Event -> menuItem_open_Explorer gestartet
<TextBlock x:Name="ctlTitel" Grid.Column="1" Text="Folder" FontFamily="Arial" FontSize="14" TextTrimming="Clip" TextWrapping="Wrap" IsTextSelectionEnabled="True" VerticalAlignment="Center" Margin="3,0,0,0"
IsHitTestVisible="True" RightTapped="ctlTitel_RightTapped" >
<FlyoutBase.AttachedFlyout >
<MenuFlyout x:Name="menuFolderTitle" Placement="Right" >
<MenuFlyoutItem Text="Open Explorer" FlowDirection="LeftToRight" Click="menuItem_Open_Explorer"> </MenuFlyoutItem>
</MenuFlyout>
</FlyoutBase.AttachedFlyout>
</TextBlock>
|
Das Context-Menü Open Explorer zum Auslösen des Events
Hieraus folgt dass der Dateiexplorer als separate
Anwendung gestartet wird
Und dabei den angegebenen Ordner öffnen