DetailView Window befüllen mit SelectedItem aus MainWindow

  • WPF

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

    DetailView Window befüllen mit SelectedItem aus MainWindow

    Hallöchen,

    ich habe ein MainWindow das an mein ViewModel gebunden ist. Darin befindet sich eine Listbox.
    Nun wenn ich auf die Listbox doppelklicke oder einen Button drücke möchte ich gerne das sich zu dem Eintrag ein
    neues Fenster öffnet mit den Daten aus dem Selektiertem Listboxitem.
    Wie kann ich das bewerkstelligen?

    Die weitere Frage ist noch das neu hinzufügen. Da würde ich auch gerne ein neues Window haben mit einer Eingabemaske.
    Dabei würde ich dann gerne beim Speichern den Eintrag natürlich der ObservableCollection des MainWindowViewModels hinzufügen.

    Habt ihr da Anhaltspunkte? Google Suche ergibt immer sehr viel Code-Behind und da vieles bei WPF ja auch ohne geht dachte ich frag ich mal ob es da
    direkt was gibt zu.
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen
    Hallo,

    wie "hälst" du denn deine Daten - also wie bzw. wo im Code speicherst und lädst du sie?

    Wenn ich mit XMLs arbeite, habe ich immer eine Singleton Klasse, die eine ​List<MeineModellKlasse> als Property hatte. Diese kann ich dann in der Singleton Klasse als XML serialisieren und wieder laden lassen.
    Wenn ich jetzt ein neues Fenster öffnen will - hab ich für dieses ein ViewModel mit dem Property ​MeineModellKlasse. Wenn ich das ViewModel inistalisiere, kann ich im Konstruktor z.B. eine ID übergeben, und das ViewModeel sucht sich dann das Objekt aus der Liste in der Singleton klasse heraus.
    Wenn ich dann bei der Eingabemaske auf speichern klicke, dann schreibe ich einfach das aktuelle Objekt in die Singleton Klasse und führe in dem MainWindow eine "NeuLaden" Methode aus.

    So setzt ich das immer um - klappt -aber bestimmt gibt es auch "beessere" Wege...

    Viele Grüße
    Florian
    ----

    WebApps mit C#: Blazor
    Hallo @xChRoNiKx

    Das ist im Grunde simpel, oft kommt man aber nicht auf anhieb drauf. Ich nehme an du arbeitest mit MVVM und hast Services oder ähnliches um den Dialog zu öffnen.
    Egal wie du Dialoge öffnest und du die Daten haltest, ich schreib mal nen Pseudocode.


    VB.NET-Quellcode

    1. Dim newItem As New ItemViewModel()
    2. Dim addItemDialog As ModalDialogService = Services.GetService(Of IDialogService)
    3. If addItemDialog.Show(newItem) Then 'Den Dialog öffnen und das selectiere Object als ViewModel (DatenContext) übergeben
    4. ItemsObservableCollection.Add(newItem) 'Falls du CollectionChanged() nicht abfängst und deinem DataManager damit sagst das es ein neues Item gibt muss du dies danach auch noch machen.
    5. DataManager.SaveChanges()
    6. End If


    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. ##

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Nofear23m“ ()