MVVM Light Toolkit - RelayCommands, DelegateCommands, und ObservableObjects

Ich habe gerade angefangen, Experimentieren mit Laurent Bugnion ist MVVM Light Toolkit. Ich denke, ich werde wirklich wie es, aber ich habe ein paar Fragen stellen.

Bevor ich zu Ihnen, lassen Sie mich erklären, wo ich denn herkomme. Derzeit benutze ich eine Kombination von Josh Smith MVVM-Foundation und ein weiteres Projekt auf Codeplex genannt MVVM Toolkit. Ich benutze ObservableObject und Messenger von MVVM Foundation und DelegateCommand und CommandReference von MVVM Toolkit.

Die einzige wirkliche überschneidung zwischen MVVM-Foundation und MVVM Toolkit ist, dass Sie beide haben eine Implementierung für ICommand: MVVM-Foundation hat RelayCommand und MVVM Toolkit hat DelegateCommand. Von diesen beiden ist die DelegateCommand erscheint zu sein mehr anspruchsvolle. Es beschäftigt CommandManagerHelper verwendet schwache Referenzen um Speicherverluste zu vermeiden.

Mit dieser sagte, hier sind meine Fragen:

  1. Warum MVVM Light verwenden RelayCommand eher als DelegateCommand? Ist die Verwendung von schwachen Referenzen in einem ICommand unnötige oder nicht empfohlen, für einige Grund?

  2. Warum gibt es keine ObservableObject im MVVM-Light? ObservableObject ist im Grunde nur der Teil der ViewModelBase implementiert INotifyPropertyChanged, aber es ist sehr bequem, um als eine separate Klasse, weil die view-Modelle sind nicht die einzigen Objekte, die umgesetzt werden müssen INotifyPropertyChanged. Zum Beispiel, sagen wir, Sie haben ein DataGrid bindet, um eine Liste der Person Objekte. Wenn eine der Eigenschaften in Person kann sich ändern, während der Benutzer anzeigen, die einem DataGrid Person implementieren muss INotifyPropertyChanged. (Mir ist klar, dass, wenn Person automatisch generiert wird, mit so etwas wie LinqToSql, wird es wahrscheinlich bereits implementiert INotifyPropertyChanged, aber es gibt Fälle, wo ich brauche, um Ansicht-spezifische Versionen von entity-model-Objekte, sagen, weil ich brauche, um einen Befehl zu unterstützen, eine button-Spalte in einem DataGrid.)

Dank.

P. S. Hier ist der code für DelegateCommand aus dem MVVM Toolkit:

https://docs.google.com/document/pub?id=1ApCx5SbCfHi5fBhv8Ki3zA6j34sp2t80LQZdj89v8cU

InformationsquelleAutor devuxer | 2011-01-04
Schreibe einen Kommentar