WPF Detailview an einen neuen Datensatz binden

  • VB.NET

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

    WPF Detailview an einen neuen Datensatz binden

    nAbend, da draußen
    Folgende Ausgangssituation:
    a) WPF-Oberfläche, die an einen Datacontext-Objekt gebunden ist. Der/die/das Datacontext hat bleistiftsweise eine Tabelle Personen mit Name und Pipapo
    b) Auf der Form ist oben eine Listbox, die an die Name-Eigenschaft gebunden ist. Dort soll keine Zeile hinzugefügt werden können.
    c) Darunter ist ein Grid mit der Detailview, die die zugehörigen Pipapos anzeigt.

    Das willich erreichen:
    Mit einem Button möchte ich jetzt die Collectionview auf einen neuen Datensatz "navigieren" lassen, so dass man die Pipapos im Detaiview ausfüllen kann.

    Und das findichnicht:
    Bei Dataset und Bindingsource gibs ja diverse Add-Methoden für Datarows. Bei der Collectionview find ich nix außer Navigation und Sortierung.

    Hat jemand eine Idee?

    Also ich hab was gefunden:

    VB.NET-Quellcode

    1. Public Sub AddPerson(vorname As String, name As String)
    2. Dim p As New Personen
    3. p.Name = vorname
    4. p.Vorname = name
    5. context.Personen.InsertOnSubmit(p)'Das ist des Datacontextdingens
    6. OnPropertyChanged("context")'hier hab ich versucht, die Änderung zu melden zwecks Aktualisierung
    7. End Sub

    Leider bleibt die gewünschte Aktualisiserung des Datagrid aus. Speichere und Lade ich des Context, taucht der neue Datensatz auf. Das eigentliche hinzufügen klappt also...
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Vatter“ ()

    Jo, DataContext ist da - gelinde gesagt bisserl verdreht

    VB.NET-Quellcode

    1. Public Property AddKunde As New RelayCommand( _
    2. Sub()
    3. Dim kd = New Kunde With {.Name = "Rumpelstilzchen"}
    4. Dim lst = DirectCast(Context.Kundes, IListSource).GetList
    5. lst.Add(kd)
    6. End Sub)
    Naja - ist kaum zu verstehen - siehs dir komplett an

    Irgendwo hatte ich sogar noch eine Extension-Method dazu gebaut - aber findich jetzt nicht.
    Kannstedir ja auch selbst ausdenken: eine Extension für System.Data.Linq.Table(Of T), die diese komische Casterei wegkapselt.
    Dateien
    • JoiningView00.zip

      (29,88 kB, 93 mal heruntergeladen, zuletzt: )

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

    Hallo EDR,
    sieht supi aus.
    Ich hatte vor, die Methode als Sub Add (Tabelle.Entetät) direkt in die vb der Context Class zu schreiben und dann im RelayCommand aufzurufen.
    Im Fenstercode werden die Textfelder für den neuen Eintrag an eine Person-Instanz im Mainmodel gebunden werden.
    Ich hab mir übrigens die RelayCommand von Josh Smith in VB übersetzt und die Aufrufe im MainModel.Root klappen hervorragend.

    Wie immer,

    DANKE
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup: