WPF - Notizbuch, 2-3 User,

  • WPF

Es gibt 63 Antworten in diesem Thema. Der letzte Beitrag () ist von Nofear23m.

    Hey,
    Ich Versuche mich seit ein paar Tagen an einer kleinen App (Adressbuch) zum üben und verstehen.
    Möchte es gleich in mvvm machen damit ich hinterher nicht nochmal umlernen muss, auch wenn es sich für so ein kleines Projekt nicht lohnt. Ich möchte damit lernen.

    Habe mir dazu 3 weitere Projekte in dem Hauptprojekt angelegt. Model, View, Viewmodel. Diese 3 sind als WPF Klassenbibliothek deklariert.
    Im Model habe ich eine Klasse namens Person angelegt, welche Eigenschaften wie Vorname, Nachname etc. Hat.
    Das View habe ich bereits in mehreren Usercontrols erstellt.
    Und nun hänge ich an dem Verständnis des Viewmodels.
    Hier hast du in deinen zahlreichen Beispielen immer ViewModelKlassen und Workspace genutzt. Alles beinhaltet wiederum Klassen mit Eigenschaften und mehr.
    Da verstehe ich nicht was die viewmodelklasse darstellt und was der Workspace.
    Vielleicht verwirrt es mich auch weil es wieder Klassen mit Eigenschaften sind.

    Kann mir das jemand genauer erläutern?
    Rechtschreibfehler betonen den künstlerischen Charakter des Autors.
    Hallo Akanel

    Akanel schrieb:

    Ich möchte damit lernen.

    Super :thumbup:

    Akanel schrieb:

    Diese 3 sind als WPF Klassenbibliothek deklariert.

    OK, jetzt kein direkter Fehler, aber hier sind denn unnötige verweise mit dabei. View = WPF Klassenbibliothek, Model = Normale Klassenbibliothek, ViewModel = Normale Klassenbibliothek

    Akanel schrieb:

    Da verstehe ich nicht was die viewmodelklasse darstellt und was der Workspace.
    Vielleicht verwirrt es mich auch weil es wieder Klassen mit Eigenschaften sind.

    Im Grunde ist ein Workspace nichts anderes als ein ViewModel nur benamse ich es gerne anders wenn ein ViewModel mehrere Views zusammenfasst und nenne dies dann gerne Workspace.
    Die Faustregel ist: Für jeden View ein ViewModel. Das ViewModel stellt alles bereit was ein View anzeigt.

    Habe ich aber das Hauptfenster habe ich hier viele Views (oder Teilebereiche) wie z.b. die Menüleiste, ein oder mehrere Hauptteile in der Mitte, eine Statusbar und vieleicht noch irgendwo ein weiteres Menü oder sowas.
    Jeder dieser Teilbereiche ist ja ein View für sich und hat also auch ein eigenes ViewModel (StatusBarViewModel, MenuBarViewModel, MainViewModel usw.)
    Diese fasse ich zusammen zu einem MainWorkspace welcher die jeweiligen ViewModels als Properties beinhaltet.

    Ich hoffe ich habe es halbwegs erklären können. Wenn nicht kann ich gerne "nachbessern" mit ner Zeichnung und nem Diagram.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Da ich noch auf Arbeit bin und gerade kein Visual Studio zur Hand habe, fasse ich mal kurz zusammen wie ich es verstanden habe.

    Pro View ( zb. uclStatusBar) benötigt man ein ViewModel ( zb. StatusBarVm)
    Du selbst unterteilt das ViewModel aber nochmal in die VieModelKlasse und den Workspace.
    Die Viewmodelklasse enthält demnach die Properties etc. Und die eigentliche Logik ist dann in dem Workspace.
    Rein theoretisch könnte aber auch alles in eine Datei. Dient halt der besseren Übersicht und Wartbarkeit, wenn man es verstanden hat.

    Wenn das soweit richtig ist, hören endlich die Kopfschmerzen auf.
    Dann hätte ich noch eine Frage, aber dazu erst wenn ich hier richtig lag.
    Vielen Dank für deine Mühe, Geduld und ausführliche Antwort.

    LG Sven
    Rechtschreibfehler betonen den künstlerischen Charakter des Autors.

    Akanel schrieb:

    Du selbst unterteilt das ViewModel aber nochmal in die VieModelKlasse und den Workspace.
    Die Viewmodelklasse enthält demnach die Properties etc. Und die eigentliche Logik ist dann in dem Workspace.

    Ne, alles ist dort wo es benötigt wird. Ich habe ja geschrieben das ein Workspace im Grunde auch eine normale ViewModel-klasse ist. Nur nenne ich diese einfach Workspace. Das kann jeder so machen wie er will.

    Sicher kann alles in eine Klasse. Es kann auch die ganze App in eine Klasse, die Übersicht leidet aber darunter.

    Ob du jetzt für jedes UserControl ein viewModel machst oder nicht bleibt dir überlassen und kommt immer darauf an.
    Du darfst dich jetzt nicht darauf verbeissen. Es gibt hier nix fixes. So in der Art ucl = View = ViewModel

    MVVM ist ein Pattern, da gibt es nur relativ wenig falsch oder richtig. Es ist ein Rezept. Ein Rezept kann man verfeinern nach beleieben oder mal auch eine Zutat weglassen ohne das plötzlich was ungenießbares rauskommt.

    Ich mach es immer so das ich mir mein Fenster vorstelle. Mach die Augen zu und stelle dir vor was du haben willst, wenn du da was du machen willst direkt in mehrere Teilbereich unterteilen würdest weist du das du mehrere ViewModels brauchen wirst.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##