Frage

Ich versuche, den grundlegenden MVVM -Designansatz bei der Verwendung zu verstehen Itemscontrol durch Bindung durch es über DataTemplates zu Beobachtung Auf dem ViewModel.

Ich habe Beispiele gesehen, die an die Beobachtungspunkte binden Saiten, Ansichten, und ViewModels.

Die Bindung an Strings scheint nur für zu sein Demos, es ist die Bindung an "ViewModels, die Sammlungen von Ansichten enthalten, die Sammlungen von ViewModels enthalten"Dass die Kraft von WPF wirklich herauskommt.

Was ist Ihr Standardansatz für die Bindung von ElementeControl, ListView und Listbox für Sammlungen in einem ViewModel, wenn Sie das MVVM -Muster verwendeten, um zu binden? Ich suche Ratschläge aus solchen Erfahrungen:

  • Verwenden Sie immer die Beobachtung von <...> und listen Sie niemals <...> auf, weil ...
  • Etwas Besseres als ItemsControl, um eine Sammlung anzuzeigen, ist ...
  • Verwenden Sie ...
  • Verwenden Sie Sammlungen von Ansichten, wenn ... und Ansichtssammlungen, wenn ...
  • In 90% der Fälle erstelle ich ein itemscontrol und binde es an eine Beobachtung von Ansichten, die ihre eigenen ViewModels haben ...
War es hilfreich?

Lösung

Ich würde aus folgenden Gründen eine Beobachtung von ViewModels verwenden:

  • Die Beobachtungspanne enthält bereits Ereignisse zur Signalisierung, wenn sie geändert wurde (z. B. wenn Elemente aus der Sammlung hinzugefügt/entfernt werden).
  • Wir sind am ViewModel 'Layer', sodass es eine sauberere Trennung bietet, damit ein ViewModel eine Sammlung von ViewModels und nicht angesehen hat
  • Wenn Daten aus Elementen in der Sammlung geändert oder abgerufen werden müssen, können Sie diese Daten leichter ändern/zugreifen, wenn die Elemente ViewModels sind (wenn es sich um Ansichten handelt (wenn es sich um Ansichten handelt, werden Sie häufig den DataContext der Ansicht abgeben oder auf die UI -Elemente zugreifen).

Andere Tipps

Ich mag es, eine Beobachtung von ViewModels zu verwenden. Die Ansicht, die an die Sammlung bindet, kann eine DataTemplate definieren, die dem ViewModel seinen Look verleiht. Dies führt zu einer geringeren Kopplung zwischen den Komponenten.

Ich habe die gleiche Frage, ersetze aber die "Ansicht" durch "Modell". :)

Ich habe ein Modell mit einer Sammlung anderer Modelle. Ich möchte, dass mein ViewModel eine beobachtbare Sammlung anderer ViewModels hat, aber sobald ich sie so instanziiert, dass der Zusammenhang zwischen dem Inhalt der Modellsammlung verloren geht. Muss ich jetzt damit beginnen, alle Ereignisse aus den ViewModels Observable Collection zurück zur Modelssammlung zu verkabeln?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top