2010-11-05 18 views
6

Sie müssen in Windows XP und Windows Vista/7 native benutzerdefinierte .Net OpenFileDialog-Dateien erstellen. Fügen Sie neue Steuerelemente usw. hinzu. Gibt es eine Möglichkeit, Standard-OpenFileDialog in .Net (WPF speziell) anzupassen? Ich habe die Lösungen wie OpenFileDialogEx durchgeschaut, aber all das WINAPI-Einhängen ist für mich nicht akzeptabel. Vielleicht kann man native Dialoge über Reflection oder sowas extrahieren? Wie ist der native OpenFileDialog in Windows Vista/7 implementiert? Ist es in WPF geschrieben? Danke im Voraus.Anpassen von OpenFileDialog in .Net

Grüße, Pavel.

Antwort

3

Gewöhnen Sie sich daran, weil das, was es braucht. OpenFileDialog wird nicht in WPF geschrieben, der Dialog existiert als nicht verwalteter Code in Windows. Der verwaltete Wrapper verwendet GetOpenFileName() für ältere Versionen, die IFileOpenDialog COM-Schnittstelle für aktuelle. Für letzteres wurde die IFileDialogCustomize-Schnittstelle entwickelt, um den Dialog anzupassen.

Diese Schnittstellen sind nur aus einem C++ - Programm, einer klassischen Geißel der Shell-Programmierung, einfach zu verwenden. Die Unterstützung von XP-Rechnern ist ebenfalls ein erhebliches Problem. Realistisch gesehen sind Sie mit dem Legacy-Dialog über GetOpenFileName() beschäftigt. Was macht dieses Code-Projekt?

3

Es gibt einen Wrapper für den OpenFileDialog im Windows API Code Pack. Es bringt Sie um eine Menge der Schwierigkeit von P/Invoking es selbst. Sie können es aus WPF, aus Windows Forms, was auch immer verwenden.

+0

Die Verbindung ist tot. Gibt es es noch irgendwo? –

+1

Ich glaube nicht. Es war für Windows 7-Sachen, und in geringerem Maße für Windows-8-Sachen, und war nicht dafür gedacht, so lange hier zu bleiben. Es bewegte sich von einem Ort zum anderen, sieht aber so aus, als ob es sich nicht ein drittes Mal bewegt hätte. Einige Leute haben Kopien zur Verfügung gestellt - sie sind nicht offiziell, also verwenden Sie mit Vorsicht. http://stackoverflow.com/questions/24081665/windows-api-code-pack-where-is-it –

2

Sie können einen Blick auf diese CodeProject Verbindung werfen.

Es ist eine interessante Möglichkeit, um fast jeden gewünschten Dateidialog zu erstellen. Und der Autor enthält einen Link zu einer WPF-Version sowie den ursprünglichen Artikel, der mit XP geschrieben wurde.