Zur Auswahl einer Datei aus dem Explorer ist unter WPF nicht viel Aufwand nötig. Das ist ganz einfach über eine OpenFileDialog()-Instanz zum ShowDialog-Befehl zu erreichen. Doch was ist, wenn man keine einzelne Datei, sondern gleich ein ganzes Verzeichnis auswählen möchte? Hierzu gibt es leider keine direkte Lösung. Dieses Beispiel zeigt, wie man dies trotz fehlender Funktionalität anbieten kann. Zuerst wird ein neues WPF-Projekt erstellt, der Oberfläche ein Button mitgegeben und ein Click-Event abonniert. Nun fügen wir der Click-Methode folgenden Code hinzu:
FolderBrowserDialog folderBrowserDialog = new FolderBrowserDialog(); HwndSource source = PresentationSource.FromVisual(this) as HwndSource; IWin32Window win = new OldWindow(source.Handle); DialogResult result = folderBrowserDialog.ShowDialog(win);
Wie der Name der Klasse FolderBrowserDialog schon sagt, sorgt dieser Code dafür, dass der Dialog zur Verzeichnisauswahl geöffnet wird. Allerdings ist diese Klasse unter WPF nicht bekannt, sie existiert nur unter WinForms. Um den Code funktionsfähig zu machen, ist es also notwendig, dem Projekt die entsprechende dll-Datei aus WinForms hinzuzufügen. Klicken Sie rechts auf das Projekt, gehen Sie zu Add | Reference und wählen Sie „System.Windows.Forms“ aus. Nun muss nur noch das using „IWin32Window = System.Windows.Forms.IWin32Window“ hinzugefügt werden und die Anwendung kann gestartet werden (Abb. 1).