2012-04-02 5 views
0

In vielen ViewModels benötige ich eine Sammlung von einem anderen ViewModel. Grundsätzlich hat jedes ViewModel eine List-Eigenschaft vom Typ ObservableCollection. und die meiste Zeit benötigt ViewA ViewModelA (für CRUD) und ViewModelB.List (nur zum Lesen).Wann sollten wir ein ViewModel von einem anderen ViewModel aus referenzieren?

Was ist der empfohlene Ansatz hier?

  1. eine ViewModelB in ViewModelA injizieren und eine EntityBList Eigenschaft
  2. Add/kopieren Sie die gleiche Prozedur GetList in ViewModelA von ViewModelB aussetzen?
  3. in ViewA XAML Referenz sowohl ViewModelA und viewModelB

Antwort

0

Ich verwende generell die Option 1. Ein SharedViewModel-Singleton in View-Modelle einfügen, die die Daten gut funktionieren. Es ist auch einfach, bei Bedarf zusätzliche gemeinsame Daten hinzuzufügen.

0

1) über diese nicht sicher.

2) Wenn Sie Code duplizieren, gibt es im Allgemeinen eine bessere Lösung.

Sie könnten das Singleton-Muster verwenden und eine Klasse haben, die Ihre Sammlungen enthält. Dann greift jedes Viewmodel auf dieselbe Liste zu. Nennen Sie es DataAccessor oder etwas Ähnliches.

3) Ich hätte keine Ansicht Referenz zwei verschiedene Viewmodels. Warum verschmelzen Sie Viewmodel A und B nicht einfach? Warum sind sie derzeit getrennt, wenn beide mit ViewA arbeiten?

+0

Nach Rücksprache mit mehreren Quellen, ist es am besten, mit 1) Injektion zu gehen. Was die Option 3) betrifft, ist dies ein ziemlich häufiges Szenario. ViewModelB wird sowohl in ViewA (als schreibgeschütztes Objekt, wahrscheinlich als Referenzobjekt) als auch ViewB (CRUD) verwendet. – Goran

Verwandte Themen