WPF - FolderBrowserDialog

  • WPF

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von asusdk.

    WPF - FolderBrowserDialog

    Hi an alle,

    da ich mich gerad intensiv damit beschäftige WPF zu lernen, mache ich hin und wieder kleine Übungsprojekte, nun musste ich mit großem Erschrecken feststellen, das es augenscheinlich keinen FolderBrowserDialog unter WPF zu geben scheint, das empfinde ich als massiven und geradezu nicht hinzunehmenden Rückschritt.... Laut den meisten Beiträgen die ich im Netz dazu gefunden habe, solle man am einfachsten eine Referenz zu WinForms einbauen um den Dialog wie gewohnt zu nutzen, allerdings muss ich zugeben das mir diese Idee wiederstrebt, da diese sicherlich nicht im Sinne des Erfinders ist.

    Wie kann / soll ich dieses Problem umgehen ? In den meisten Bereichen ist die WPF wie ich mittlerweile weiss dem guten alten Forms deutlich überlegen, aber das halte ich für ein absolutes Nogo, (es fehlen ja noch ettliche andere Sachenn wie, z.B. das NumericUpDown, ColorDialog und mehr) weiss hier jemand Rat, oder noch besser weiss jemand ob/wann Microsoft gedenkt solch essentiele Controls nachzuliefern ?


    LG
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If
    Hi @asusdk,
    ich stand vor dem selben problem und hatte auch den win forms folderbrowser dialog genutzt.
    hab mir nun aber einen eigenen gebaut. Schau dir mal mein Projekt an: DropToZip - WPF, einfach Dateien zippen und mit Passwort sichern

    Dort hab ich einen eignen DialogFolderBrowser im Ordner Dialogs, im Projekt View.
    musst mal schauen, es gehören 2 Klassen aus dem Model dazu: DirectoryItem und DirectoryStructure, und ViewModels im ViewModelProjekt.
    das ganze ist über IoC gelöst.

    schau es dir mal an, wenn du fragen hast, kann ich gerne helfen.
    "Hier könnte Ihre Werbung stehen..."
    Hehe, ja, gucke ich mir gerne nochmal an, aber ich habe mir deinen SourceCode bereits angesehen, und davon abgesehen das es sich um C# handelt, habe ich hier leider das gleiche Problem wie bei allen WPF anwendungen, es ist MVVM, und somit kann ich dem Code nicht folgen.... MVVM steht gaaaaaanz weit hinten auf meiner ToDo-Liste, da es meine aktuellen fähigkeiten um Welten übersteigt, wenn ich es jemals begreifen werde, dauert das noch n paar Jährchen ^^.
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If
    Ob es wirklich 100% MVVM ist glaub ich nicht, aber du kannst mal in den CodeBehind des DialogFolderBrowser gucken, da rufe ich den standard FolderBrowser auf, das würde es ja für den Anfang tun. Wenn du nen eignen FolderBrowser bauen willst, wirst du um mvvm nicht drum herum kommen...
    "Hier könnte Ihre Werbung stehen..."

    asusdk schrieb:

    solle man am einfachsten eine Referenz zu WinForms einbauen um den Dialog wie gewohnt zu nutzen

    Das ist auch die beste Möglichkeit. Im Endeffekt geht es ja nur darum, dass du die gewünschte Funktionalität, sprich den Dialog, bekommst. Ob die Klasse jetzt im System.Windows.Forms oder System.Windows namespace untergebracht ist, ist dabei doch völlig irrelevant - was zählt ist das Ergebnis. ;)
    @MichaHo
    aber du kannst mal in den CodeBehind des DialogFolderBrowser gucken


    Ähm joa, ist aber leer ?
    Spoiler anzeigen

    C#-Quellcode

    1. using System;
    2. using System.Collections.Generic;
    3. using System.Linq;
    4. using System.Text;
    5. using System.Threading.Tasks;
    6. using System.Windows;
    7. using System.Windows.Controls;
    8. using System.Windows.Data;
    9. using System.Windows.Documents;
    10. using System.Windows.Input;
    11. using System.Windows.Media;
    12. using System.Windows.Media.Imaging;
    13. using System.Windows.Shapes;
    14. namespace de.mhoapps.DropToZip.View
    15. {
    16. /// <summary>
    17. /// Interaktionslogik für DialogFolderBrowser.xaml
    18. /// </summary>
    19. public partial class DialogFolderBrowser : DialogUserControlBase
    20. {
    21. public DialogFolderBrowser()
    22. {
    23. InitializeComponent();
    24. }
    25. }
    26. }


    und wenn ich den Source-Ordner öffne Fliegen mir 54 Fehler um die Ohren
    Spoiler anzeigen
    Schweregrad Code Beschreibung Projekt Datei Zeile Unterdrückungszustand
    Fehler XDG0008 Der Name "DialogUserControlBase" ist im Namespace "clr-namespace:de.mhoapps.DropToZip.View" nicht vorhanden. DropToZip.View DialogFolderBrowser.xaml 1
    Fehler CS0006 Metadatendatei "C:\Users\marco\Desktop\Neuer Ordner (3)\Model\DropToZip.Model\bin\Debug\netstandard2.0\DropToZip.Model.dll" wurde nicht gefunden. DropToZip.ViewModel C:\Users\marco\Desktop\Neuer Ordner (3)\ViewModel\DropToZip.ViewModel\CSC 1 Aktiv
    Fehler Das Tag "MainViewModel" ist im XML-Namespace "clr-namespace:de.mhoapps.DropToZip.ViewModel;assembly=DropToZip.ViewModel" nicht vorhanden. Zeile 11 Position 10. DropToZip.View C:\Users\marco\Desktop\Neuer Ordner (3)\View\DropToZip.View\Controls\ucMain.xaml 11
    Fehler Die Eigenschaft "AnimateFadeInProperty.Value" ist im XML-Namespace "clr-namespace:de.mhoapps.DropToZip.View;assembly=DropToZip.View" nicht vorhanden. Zeile 31 Position 25. DropToZip C:\Users\marco\Desktop\Neuer Ordner (3)\Application\DropToZip\MainWindow.xaml 31
    Fehler XDG0032 Die DataContext-Eigenschaft ist im Namespace "http://schemas.microsoft.com/expression/blend/2008" nicht vorhanden. DropToZip.View DialogFolderBrowser.xaml 8
    Fehler XDG0008 "Border" wird in einem Windows Presentation Foundation (WPF)-Projekt nicht unterstützt. DropToZip.View DialogFolderBrowser.xaml 10
    Fehler XDG0008 "StaticResource" wird in einem Windows Presentation Foundation (WPF)-Projekt nicht unterstützt. DropToZip.View DialogFolderBrowser.xaml 10
    Fehler XDG0008 "Grid" wird in einem Windows Presentation Foundation (WPF)-Projekt nicht unterstützt. DropToZip.View DialogFolderBrowser.xaml 11
    Fehler XDG0008 "Grid" wird in einem Windows Presentation Foundation (WPF)-Projekt nicht unterstützt. DropToZip.View DialogFolderBrowser.xaml 12
    Fehler XDG0008 "RowDefinition" wird in einem Windows Presentation Foundation (WPF)-Projekt nicht unterstützt. DropToZip.View DialogFolderBrowser.xaml 13
    Fehler XDG0008 "RowDefinition" wird in einem Windows Presentation Foundation (WPF)-Projekt nicht unterstützt. DropToZip.View DialogFolderBrowser.xaml 14
    Fehler XDG0008 "RowDefinition" wird in einem Windows Presentation Foundation (WPF)-Projekt nicht unterstützt. DropToZip.View DialogFolderBrowser.xaml 15
    Fehler XDG0008 "Border" wird in einem Windows Presentation Foundation (WPF)-Projekt nicht unterstützt. DropToZip.View DialogFolderBrowser.xaml 19
    Fehler XDG0008 "StaticResource" wird in einem Windows Presentation Foundation (WPF)-Projekt nicht unterstützt. DropToZip.View DialogFolderBrowser.xaml 19
    Fehler XDG0008 "TextBlock" wird in einem Windows Presentation Foundation (WPF)-Projekt nicht unterstützt. DropToZip.View DialogFolderBrowser.xaml 20
    Fehler XDG0008 "Grid" wird in einem Windows Presentation Foundation (WPF)-Projekt nicht unterstützt. DropToZip.View DialogFolderBrowser.xaml 20
    Fehler XDG0008 "Binding" wird in einem Windows Presentation Foundation (WPF)-Projekt nicht unterstützt. DropToZip.View DialogFolderBrowser.xaml 20
    Fehler XDG0008 "StaticResource" wird in einem Windows Presentation Foundation (WPF)-Projekt nicht unterstützt. DropToZip.View DialogFolderBrowser.xaml 23
    Fehler XDG0008 "StaticResource" wird in einem Windows Presentation Foundation (WPF)-Projekt nicht unterstützt. DropToZip.View DialogFolderBrowser.xaml 24
    Fehler XDG0008 "TreeView" wird in einem Windows Presentation Foundation (WPF)-Projekt nicht unterstützt. DropToZip.View DialogFolderBrowser.xaml 30
    Fehler XDG0008 "Grid" wird in einem Windows Presentation Foundation (WPF)-Projekt nicht unterstützt. DropToZip.View DialogFolderBrowser.xaml 30
    Fehler XDG0008 "Binding" wird in einem Windows Presentation Foundation (WPF)-Projekt nicht unterstützt. DropToZip.View DialogFolderBrowser.xaml 30
    Fehler XDG0008 "StaticResource" wird in einem Windows Presentation Foundation (WPF)-Projekt nicht unterstützt. DropToZip.View DialogFolderBrowser.xaml 30
    Fehler XDG0008 "TreeView" wird in einem Windows Presentation Foundation (WPF)-Projekt nicht unterstützt. DropToZip.View DialogFolderBrowser.xaml 31
    Fehler XDG0008 "LinearGradientBrush" wird in einem Windows Presentation Foundation (WPF)-Projekt nicht unterstützt. DropToZip.View DialogFolderBrowser.xaml 32
    Fehler XDG0008 "GradientStop" wird in einem Windows Presentation Foundation (WPF)-Projekt nicht unterstützt. DropToZip.View DialogFolderBrowser.xaml 33
    Fehler XDG0008 "StaticResource" wird in einem Windows Presentation Foundation (WPF)-Projekt nicht unterstützt. DropToZip.View DialogFolderBrowser.xaml 33
    Fehler XDG0008 "GradientStop" wird in einem Windows Presentation Foundation (WPF)-Projekt nicht unterstützt. DropToZip.View DialogFolderBrowser.xaml 34
    Fehler XDG0008 "StaticResource" wird in einem Windows Presentation Foundation (WPF)-Projekt nicht unterstützt. DropToZip.View DialogFolderBrowser.xaml 34
    Fehler XDG0008 "TreeView" wird in einem Windows Presentation Foundation (WPF)-Projekt nicht unterstützt. DropToZip.View DialogFolderBrowser.xaml 37
    Fehler XDG0008 "Style" wird in einem Windows Presentation Foundation (WPF)-Projekt nicht unterstützt. DropToZip.View DialogFolderBrowser.xaml 38
    Fehler XDG0008 "Type" wird in einem Windows Presentation Foundation (WPF)-Projekt nicht unterstützt. DropToZip.View DialogFolderBrowser.xaml 38
    Fehler XDG0008 "Setter" wird in einem Windows Presentation Foundation (WPF)-Projekt nicht unterstützt. DropToZip.View DialogFolderBrowser.xaml 39
    Fehler XDG0008 "Binding" wird in einem Windows Presentation Foundation (WPF)-Projekt nicht unterstützt. DropToZip.View DialogFolderBrowser.xaml 39
    Fehler XDG0008 "Setter" wird in einem Windows Presentation Foundation (WPF)-Projekt nicht unterstützt. DropToZip.View DialogFolderBrowser.xaml 40
    Fehler XDG0008 "Style" wird in einem Windows Presentation Foundation (WPF)-Projekt nicht unterstützt. DropToZip.View DialogFolderBrowser.xaml 41
    Fehler XDG0008 "Trigger" wird in einem Windows Presentation Foundation (WPF)-Projekt nicht unterstützt. DropToZip.View DialogFolderBrowser.xaml 42
    Fehler XDG0008 "Setter" wird in einem Windows Presentation Foundation (WPF)-Projekt nicht unterstützt. DropToZip.View DialogFolderBrowser.xaml 43
    Fehler XDG0008 "StaticResource" wird in einem Windows Presentation Foundation (WPF)-Projekt nicht unterstützt. DropToZip.View DialogFolderBrowser.xaml 43
    Fehler XDG0008 "Trigger" wird in einem Windows Presentation Foundation (WPF)-Projekt nicht unterstützt. DropToZip.View DialogFolderBrowser.xaml 45
    Fehler XDG0008 "Setter" wird in einem Windows Presentation Foundation (WPF)-Projekt nicht unterstützt. DropToZip.View DialogFolderBrowser.xaml 46
    Fehler XDG0008 "StaticResource" wird in einem Windows Presentation Foundation (WPF)-Projekt nicht unterstützt. DropToZip.View DialogFolderBrowser.xaml 46
    Fehler XDG0008 "Style" wird in einem Windows Presentation Foundation (WPF)-Projekt nicht unterstützt. DropToZip.View DialogFolderBrowser.xaml 49
    Fehler XDG0008 "Style" wird in einem Windows Presentation Foundation (WPF)-Projekt nicht unterstützt. DropToZip.View DialogFolderBrowser.xaml 50
    Fehler XDG0008 "Type" wird in einem Windows Presentation Foundation (WPF)-Projekt nicht unterstützt. DropToZip.View DialogFolderBrowser.xaml 50
    Fehler XDG0008 "Setter" wird in einem Windows Presentation Foundation (WPF)-Projekt nicht unterstützt. DropToZip.View DialogFolderBrowser.xaml 51
    Fehler XDG0008 "TreeView" wird in einem Windows Presentation Foundation (WPF)-Projekt nicht unterstützt. DropToZip.View DialogFolderBrowser.xaml 56
    Fehler XDG0008 "HierarchicalDataTemplate" wird in einem Windows Presentation Foundation (WPF)-Projekt nicht unterstützt. DropToZip.View DialogFolderBrowser.xaml 57
    Fehler XDG0008 "Binding" wird in einem Windows Presentation Foundation (WPF)-Projekt nicht unterstützt. DropToZip.View DialogFolderBrowser.xaml 57
    Fehler XDG0008 "StackPanel" wird in einem Windows Presentation Foundation (WPF)-Projekt nicht unterstützt. DropToZip.View DialogFolderBrowser.xaml 58
    Fehler XDG0008 "Image" wird in einem Windows Presentation Foundation (WPF)-Projekt nicht unterstützt. DropToZip.View DialogFolderBrowser.xaml 59
    Fehler XDG0008 "Binding" wird in einem Windows Presentation Foundation (WPF)-Projekt nicht unterstützt. DropToZip.View DialogFolderBrowser.xaml 59
    Fehler XDG0008 Der Name "StringToImageConverter" ist im Namespace "clr-namespace:de.mhoapps.DropToZip.View" nicht vorhanden. DropToZip.View DialogFolderBrowser.xaml 59
    Fehler The current .NET SDK does not support targeting .NET Standard 2.0. Either target .NET Standard 1.6 or lower, or use a version of the .NET SDK that supports .NET Standard 2.0. DropToZip.Model C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Sdks\Microsoft.NET.Sdk\build\Microsoft.NET.TargetFrameworkInference.targets 126


    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If
    Hast du das Projekt einmal kompiliert? Und hast du .net standard installiert?
    guck mal in den xaml vom dialogfolderbrowser, da wird das ucFolderEntry benutzt, da findest du im codebehind den code für das win forms folderbrowser... ist auskommentiert
    "Hier könnte Ihre Werbung stehen..."
    Kompilieren versucht, neu erstellen versucht, und bereinigen versucht, fehler bleiben wie se sind, was meinste mit .net standard ?

    codebehind den code für das win forms folderbrowser

    Ja, wie es ginge ist mir durchaus klar, ich höre nur im Hinterkopf wie Nofear sagen wurde: Das ist Pfusch ^^ daher dachte ich ja an irgendeine Alternative.

    P.S. offtopic: verlierst du bei einer derart exorbitanten Menge an Ordnern und klassen usw. nciht den Überblick ? Ich mein im Prinzip ist das doch so der Overkill für ein ZipProgramm oder ? (nur mein Eindruck)

    LG

    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If
    Zum FolderBrowser hätte ich auch ein beizutragen: Grundlagen - MVVM: "Binding-Picking" im Xaml-Editor (from Scratch, ohne WinForms-Abhängigkeit)
    Das ist jetzt (M)VVM, weil MVVM darf ich laut NoFear ja (möglicherweise) nicht sagen.
    "Möglicherweise", weil vlt. ists auch MVVM in seinem Sinne, weil für Dialoge gelten vlt. andere Vorschriften in seinem Sinne.

    asusdk schrieb:

    MVVM steht gaaaaaanz weit hinten auf meiner ToDo-Liste
    Das habich ja schon geäussert, dassich das zum Wpf-Lernen für eine gradezu widersinnige ToDo-Liste halte.

    Es kommen übrigens auch Commands vor - ich verwende sie als Mechanismus, um Button-Klickse ins Viewmodel zu transportieren (was ich ja als die Haupt-Aufgabe von Commands ansehe).

    Guck dir das Video an, vlt. kriegst du eine Ahnung, warum Wpf zu coden Spass machen kann.
    Das habich ja schon geäussert, dassich das zum Wpf-Lernen für eine gradezu widersinnige ToDo-Liste halte.


    @ErfinderDesRades Das ist mir durchaus bewusst, aber wie genau soll ich es denn zu lernen versuchen, wenn mir noch ettliche Grundlagen fehlen, und ich, sobald ich eine MVVM-Konforme Anwendung sehe, absolut nichts davon nachvollziehen kann, was leider nur dazu führen würde das ich wieder die Flinte ins Korn werfe ?
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If
    "absolut nichts" glaub ich dir nicht.

    Was für dich der beste Lerntyp ist, weiss ich allerdings auch nicht.
    Ich könnte mir vorstellen, du knöpfst dir eine Anwendung von mir vor, undfragst eins nach dem anderen, was du nicht verstehst.
    Eins nach dem anneren wohlgemerkt, nicht alles auf einmal.
    Und dann dauert es eben solange, wie's dauert.
    Vorstellen könnte ichmir das am Beispiel von Grundlagen - MVVM-Anwendungs-Struktur
    @ErfinderDesRades
    "absolut nichts" glaub ich dir nicht.


    Ich habe mir deine beiden Links angesehen, und jetzt, vor allem vom ersten ausgehend (BindingPicking) muss ich leider sagen, doch, ich verstehe hier absolut gar nichts. Das Projekt ist derartig erschlagend, das ich wie damals schon bei NoFears WPF-Notizen noch nicht mal weiss was ich fragen soll, da das gesamte Projekt für mich nur ein Riesen-Wirr-Warr aus gefühlt Hunderten Ordnern und Klassen darstellt. Und da kommt dann auch noch Xaml obendrauf, welches zwar mächtig aber einfach nur unangenehm zu lesen ist.
    Um so mehr MVVM ich sehe, um so mehr festigt sich bei mir der Wunsch, dieses möglichst gänzlich zu vermeiden... Gut mag zum Teil auch daran liegen dass ich nach wie vor keinen noch so kleeinen Vorteil an MVVM sehe, aber ja, irgendwann nehm ich es mir mal vor, evtl. werd ich eines besseren belehrt. Im Moment wäre ich erstmal froh überhaupt schöne UIs hinzukriegen, da sehe ich hier im Forum immer wieder sehr schönes, meine sehen dagegen immer nur hingerotzt aus, das will ich erstmal irgendwie hinkriegen, Commands gehen mittlerweile ganz gut, wobei ich es durchaus sehr umständlich finde dafür immer 3 Codeblöcke zu schreiben, statt einem simplen klick-Event, auch hier verstehe ich denn Sinn hinter dem Mehraufwand noch nicht, gut mit einer ausnahme, es ist praktisch, das sich daran gebundene Buttons selbst de/aktivieren aber das wars auch schon ^^

    Am erschwehrlichsten finde ich aktuell noch immer das DataContext zeugs, und das obwohl ich eigentlich nur ans CodeBehind binden muss/will, für mich noch unvorstellbar das dann mit mehreren unterschiedlichen Klassen machen zu müssen, da wird mir bereits schwindelig wenn ich nur dran denke. Ich will es gerne lernen, deswegen versuche ich es, aber umsomehr ich mich damit beschäftige, um so mehr denke ich das ich wohl ewig bei Forms hängen bleiben werde.

    Keine Ahnung warum es mir so schwer fällt ich habe einfach 0 Überblick wenn sich alles in eigene Klassen und ordner packt, dazu komt ncoh so vieles was mir nicht in den Kopf will. Naja Ende Oktober hab ich 2 Wochen Urlaub, werd mich dann wohl mal von Anfang bis Ende an NoFears Tutorial klemmen, in der hoffnung das der groschen fällt. Auch wenn mich langsam das gefühl beschleicht, dafür schlicht und ergreifend zu dumm zu sein


    Gibts sonst wirklich keine alternative zum FolderBrowserDialog ?
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „asusdk“ ()