Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Ja, ich habe das MVVM-Pattern wie es beschrieben ist, implementiert. ... Allerdings habe ich nur eine Zweiteilung und keine Dreiteilung - das ViewModel in der "Mitte" fehlt bei mir. Ist das schlimm?
Ich versuche mal Licht ins Dunkel zu bringen: Die Eigenschaften meiner Klassen, die ich in WPF anzeigen möchte, habe ich jetzt mit "INotifyPropertyChanged-Logik" versehen. Die GUI enthält im Code-Behind eine ObservableCollection, mit mehreren Klassenobjekten. In XAML programmiere ich dann DataTemplates, die die Klassen anzeigen können, indem sie Steuerelemente mit {Binding Path=PropertyName} an meine Klasse binden. Dann binde ich ein ItemsControl an die ObservableCollection, dass mir die Klassen dann anzeigt. So habe ich MVVM verstanden!?
Ahh, dann geht es also darum, ein ViewModel als DataContext zu verwenden? Und das ViewModel soll dann nicht meine eigene Klasse sein, sondern ein Wrapper dafür? Nur wie sorge ich dann dafür, dass der DataContext richtig angezeigt wird? Wie bisher mit DataTemplates? Was für einen DataType bekommen die denn? Den des ViewModels oder den des Models?In deinem Falle wäre deine Oberfläche die View (Window oder UserControls oder beides in Kombination), deren DataContext-Properties die entsprechenden ViewModels zugewiesen bekommen. Deine eigenen Klassen wiederum stellen die Models dar und werden in den ViewModels instanziert.
Lass solche persönlichen Angriffe lieber bleiben, meine sind härter.
... und diese Signatur kürzer!
- übersichtlicher
- logischer
- verständlicher
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »QuickAndDirty« (16.06.2015, 22:27)
Lass solche persönlichen Angriffe lieber bleiben, meine sind härter.
... und diese Signatur kürzer!
- übersichtlicher
- logischer
- verständlicher
C#-Quelltext |
|
1 2 3 4 5 6 |
public ObservableCollection<Effect> EffectCollection { get; set;} public AppViewModel { EffectCollection = new ObservableCollection<Effect>(); } |
Lass solche persönlichen Angriffe lieber bleiben, meine sind härter.
... und diese Signatur kürzer!
- übersichtlicher
- logischer
- verständlicher
Müssen die Objekte, die die ObservableCollection enthält wirklich nicht INotifyPropertyChanged implementieren?
Mit View ist also keine Listbox, sondern das Fenster gemeint, wo die ListBox drin ist? Dann bekommt auch das Fenster mein ViewModel als DataContext?
Lass solche persönlichen Angriffe lieber bleiben, meine sind härter.
... und diese Signatur kürzer!
- übersichtlicher
- logischer
- verständlicher
Müssen die Objekte, die die ObservableCollection enthält wirklich nicht INotifyPropertyChanged implementieren?
Nein müssen sie wirklich nicht, ist auch hier Doku entsprechend dokumentiert. Einfach bis zur Überschrift Hinweise runterscrollen.
Dort steht dann im dritten Abschnitt, dass die ObservableCollection bereits das INotifyPropertyChanged-Interface implementiert und daher selbstständig auf Änderungen von Obejekten in der Liste hinweist.
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].
Lass solche persönlichen Angriffe lieber bleiben, meine sind härter.
... und diese Signatur kürzer!
- übersichtlicher
- logischer
- verständlicher
Werbeanzeige