Einzelne Eigenschaften einer ObservableCollection(Of Class) ändern - DataGrid in View wird nicht upgedatet

  • WPF MVVM

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

    Einzelne Eigenschaften einer ObservableCollection(Of Class) ändern - DataGrid in View wird nicht upgedatet

    Guten Morgen allerseits :-),

    Ich habe folgenden Code:

    VB.NET-Quellcode

    1. Private Sub DatenUebernehmen_Execute(obj As Object)
    2. Dim Objekt As String = DirectCast(obj, String)
    3. Select Case Objekt
    4. Case "Interpret"
    5. For i = 0 To RipList.Count - 1
    6. RipList(i).Interpret = Interpret
    7. Next
    8. End Select
    9. End Sub


    Ich habe eine RipList mit Titelinfomrationen. Interpret ist an die .Text-Eigenschaft einer TextBox gebunden. Nun soll auf Knopfruck dieser Interpret in die Eigenschaften .Interpret der RipList übernommen werden. Das funktioniert.

    Die RipList soll in einem DataGrid angezeigt werden. Das Binding funktioniert und ist auf TwoWay eingestellt:

    ItemsSource="{Binding RipList, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"

    VB.NET-Quellcode

    1. Private _RipList As ObservableCollection(Of Model.MP3BurnInfo)
    2. Public Property RipList As ObservableCollection(Of Model.MP3BurnInfo)
    3. Get
    4. Return _RipList
    5. End Get
    6. Set(value As ObservableCollection(Of Model.MP3BurnInfo))
    7. _RipList = value
    8. RaisePropertyChanged()
    9. End Set
    10. End Property


    Nur wird mein DataGrid nicht geupdatet... Weiss jemand woran das liegt oder muss ich da mühsam mit RipList.Clear arbeiten und dann die kompletten Datensätze wieder mit .Add zufügen?

    Freu mich auf eure Antworten

    Grüssle, kafffee :)
    Wie EdR schon gesagt hat, du änderst ja nicht die ObservableCollection, sondern du änderst eine Property eines Elements darin. (RipList(i).Interpret = Interpret)
    Das einzelne Element, sprich dein MP3BurnInfo, muss dann benachrichtigen, wenn sich was daran ändert
    Dumm ist der, der dumm ist. Nicht andersrum!
    @Schmittmuthelm

    Ah jetzt ja... Es hat klick gemacht :)

    Edit:
    Aber das neu laden der OC in das DataGrid kann man nicht erzwingen oder? Bin mit MVVM unterwegs...
    Weil bevor ich jetzt mit meinen Properties in der MP3BurnInfo das volle Programm fahre... Die hab ich bis jetzt nur deklariert ohne Setter und Getter geschweige denn RaiseProperty Changed...

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

    kafffee schrieb:

    Weil bevor ich jetzt mit meinen Properties in der MP3BurnInfo das volle Programm fahre...

    Das machste ja auch nicht. Du machst eine MP3BurnInfoViewModel Klasse. Diese Mappt Properties einer Modelklasse.
    Ja, das ist ne fiese arbeit, ist aber so.

    Aus dem Kopf

    VB.NET-Quellcode

    1. Public Class Mp3BurnInfoViewModel
    2. Inherits ViewModelBase
    3. Friend ReadOnly _modelObject as Mp3BurnInfo
    4. public Sub new()
    5. _modelObject = new Mp3BurnInfo()
    6. End sub
    7. Friend Sub new(Mp3BurnInfo modelObject)
    8. _modelObject = modelObject
    9. End sub
    10. Public PRoperty Interpret() as string
    11. Get
    12. Return _modelObject.Interpret
    13. End Get
    14. Set
    15. _modelObject.Interpret = value
    16. RaisePRopertyChanged()
    17. End Set
    18. End Property
    19. End Class


    PS: Ich habe mir das Codevorlagen in VS gebaut, die erleichtern das enorm.
    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. ##

    @Nofear23m

    Hahaha :) , dachte mir schon dass das jetzt kommt....
    Weil ist gut wenn man an den Daten noch was machen will gelle?
    Aber in Zeile 7 hast glaubich was mit C# verwechselt...

    Das heisst ich lass mein Model komplett in Ruhe und arbeite dann nur noch mit dem MP3BurnInfoViewModel richtig?

    Hats die Vorlagen irgendwo zum Download?

    kafffee schrieb:

    Aber in Zeile 7 hast glaubich was mit C# verwechselt...

    Danke, bessere ich aus. Mach in letzter Zeit viel mit C# und das war ja nur aus dem Kopf geschrieben.

    kafffee schrieb:

    und arbeite dann nur noch mit dem MP3BurnInfoViewModel

    Richtig.

    kafffee schrieb:

    Hats die Vorlagen irgendwo zum Download?

    Im Moment nur als C#, aber....
    Ich werde wenn ich an dem jeweiligen Punkt in meiner Tutorialreihe bin, jeweils immer solch eine Vorlage mit zum Download anbieten, also dranbleiben ;)

    Sind aber easy selbst zu machen, dauert nur 10 Minuten, spart aber Stunden.
    Ich hatte gestern eine Klasse mit 25 Properties vor mir und da spart sowas schon enorm Zeit.

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