2016-11-03 1 views
0

Ich baue ein WPF-Projekt und habe Prism implementiert. Ich habe eine DAL, wo ich eine Bibliothek habe, die die Verbindung zur DataBase namens Persistence behandelt, verwendet diese Bibliothek EntityFramework und hat einige Entitäten. Außerdem habe ich einige DomainModels, jetzt - was soll ich tun mit dem angegebenen Szenario:Sollte ich den EventAggregator verwenden oder INotifyPropertyChanged für meine Domänenmodelle implementieren, wenn ViewModels Änderungen an dem Modell mitgeteilt werden?

Ich habe 2 Viewmodels, die sowohl eine Referenz des ActiveUser (derjenige, der gerade angemeldet ist) haben als IUser Typ DomainModel, dass Wir bekommen über einen Service namens IUserService.

Lassen Sie sich sagen, dass diese IUser eine Eigenschaft hat Funds genannt, wenn ViewModel1IUser ändert - wie dieser Artikel i ViewModel2, dass es sich Änderungen an IUser und Funds sollte so die View aktualisiert werden, um die richtigen Daten.

  1. Do i INotifyPropertyChanged in meiner Models als auch meine Viewmodels implementieren, und dann sollte jeder ViewModel dann auf die PropertyChanged Ereignis hören, und in Abhängigkeit von der Eigenschaft, die geändert hat, entsprechend aktualisieren? (Ich finde diese Art von hässlichen obwohl)

  2. Verwenden Sie die EventAggregator und veröffentlichen/abonnieren Sie die Ereignisse, veröffentlichen von meinem DomainModels (?) Und abonnieren auf meinem ViewModels?

  3. Implementiere ich etwas wie eine PropertyObserver<TPropertySource> : IWeakEventListener Klasse?

Dank

+0

Ist Iuser Instanz Singleton? –

+0

@ SatyajitMohanty Nein, ist es nicht – Nicholas

Antwort

1

1. und 2. sollten beide den Job, würde ich für 2. gehen, wenn es nur wenige Veranstaltungen wie diese sind, sonst 1. weil es hält alles auf lokaler Ebene.

Und btw, wenn Sie für 1. gehen, gehen für 3. auch. Die PropertyObserver macht die Handhabung INotifyPropertyChanged viel einfacher, weil Sie nicht die Lebensdauer der beteiligten Objekte berücksichtigen müssen (um nicht von der schöneren Syntax zu sprechen).

Verwandte Themen