INotifyPropertyChanged/INotifyCollectionChanged

rated by 0 users
This post has 10 Replies | 2 Followers

Top 10 Partecipanti
Maschio
Post 268
Punteggio 4.907
petrux Posted: 02-22-2010 12.36
Ciao a tutti,

volevo farvi una domanda "tecnica". Ha senso che una entità X del mio
modello registri degli handler su eventi di tipo
PropertyChangedEventHandler/CollectionChangedEventHandler di una istanza
di un'altra entità Y del modello stesso?

Ciao e buona settimana,
Giulio
--
  • | Punteggio Post: 20
Top 10 Partecipanti
Post 143
Punteggio 2.560
Ciao Giulio,

You wrote on 22/02/2010 :
> volevo farvi una domanda "tecnica". Ha senso che una entit� X del mio
> modello registri degli handler su eventi di tipo
> PropertyChangedEventHandler/CollectionChangedEventHandler di una istanza
> di un'altra entit� Y del modello stesso?

secondo me no perch� non ha senso che una entit� di dominio implementi
quei contratti che sono tipici del rapporto con la UI.

Quale � lo scopo?

..m

--
Mauro Servienti
{C67C0157-5D98-4733-A75E-93CAEE4BADC8}
Microsoft MVP - Visual C# / MCP
http://mvp.support.microsoft.com
http://blogs.ugidotnet.org/topics
whynot [ at ] topics [ dot ] it
  • | Punteggio Post: 20
Top 10 Partecipanti
Maschio
Post 268
Punteggio 4.907
Ciao Mauro,

mauroservienti wrote:
> secondo me no perch� non ha senso che una entit� di dominio implementi
> quei contratti che sono tipici del rapporto con la UI.
>
> Quale � lo scopo?

Te lo spiego in maniera terra-terra.
Solite due entità: Foo e Bar

interface IFoo {
string Name { get; set; }
ICollection BarList { get; }
}

Quando viene aggiunto un elemento a BarList deve venir sollevato un
evento che dice alla UI (o a chi per lei) la property BarList è cambiata.
Suggerimenti?

Grazie e buona giornata,
Giulio

--
  • | Punteggio Post: 20
Top 10 Partecipanti
Maschio
Post 243
Punteggio 3.383

In questo caso il problema è che l'oggetto di dominio non è UI Friendly, dato che esponenndo una semplice ICollection non permette alla UI di capire quando il contenuto della collezione è cambiato. Una possibilità potrebbe essere quella di usare per la proprietà BarList una collezione che implementa la INotifyCollectionChanged. Altrimenti devi necessariamente usare dto oppure un oggetto che wrappa il tuo dominio e che permette un più facile binding.

Alk.

 

  • | Punteggio Post: 20
Top 10 Partecipanti
Post 143
Punteggio 2.560
Ciao Gian,

You wrote on 23/02/2010 :
> In questo caso il problema è che l'oggetto di dominio non è UI Friendly,
> dato che esponenndo una semplice ICollection non permette alla UI di capire
> quando il contenuto della collezione è cambiato. Una possibilità potrebbe
> essere quella di usare per la proprietà BarList una collezione che
> implementa la INotifyCollectionChanged. Altrimenti devi necessariamente usare
> dto oppure un oggetto che wrappa il tuo dominio e che permette un più facile
> binding.

dipende molto dal contesto ma personalmente opterei per wrappare
lasciando il dominio "duro e puro" :-)

> Alk.

..m

--
Mauro Servienti
{C67C0157-5D98-4733-A75E-93CAEE4BADC8}
Microsoft MVP - Visual C# / MCP
http://mvp.support.microsoft.com
http://blogs.ugidotnet.org/topics
whynot [ at ] topics [ dot ] it
  • | Punteggio Post: 20
Top 10 Partecipanti
Maschio
Post 268
Punteggio 4.907
Ciao Mauro,

mauroservienti wrote:
> dipende molto dal contesto ma personalmente opterei per wrappare
> lasciando il dominio "duro e puro" :-)

Quoto.
Ora, siamo arrivati al "nodo" fondamentale: i miei oggetti di dominio
sono a loro volta wrappati da oggetti ViewModel. Come fanno questi a
sapere quando il dominio è cambiato? (Considerate che nel mio scenario
gli stessi oggetti di dominio possono essere modificati
contemporaneamente da due view differenti).

Ciao e buona giornata,
Giulio

--
  • | Punteggio Post: 20
Top 10 Partecipanti
Post 143
Punteggio 2.560
Ciao Giulio,

You wrote on 24/02/2010 :
> Ora, siamo arrivati al "nodo" fondamentale: i miei oggetti di dominio
> sono a loro volta wrappati da oggetti ViewModel. Come fanno questi a
> sapere quando il dominio è cambiato? (Considerate che nel mio scenario
> gli stessi oggetti di dominio possono essere modificati
> contemporaneamente da due view differenti).

Messaging is the word :-)

Il ViewModel che wrappa il dominio sa che l'ha cambiato, va dal
broker/event aggregator e gli dice di sparare nell'etere un messaggio
che dice che la tal entit� � cambiata... se hai un altro ViewModel che
� interessato a essere notificato lui andr� dal broker e sottoscriver�
le notifiche per il tal messaggio a questo punto, se necessario, i 2
comunicano.

> Ciao e buona giornata,
> Giulio

..m

--
Mauro Servienti
{C67C0157-5D98-4733-A75E-93CAEE4BADC8}
Microsoft MVP - Visual C# / MCP
http://mvp.support.microsoft.com
http://blogs.ugidotnet.org/topics
whynot [ at ] topics [ dot ] it
  • | Punteggio Post: 20
Top 10 Partecipanti
Maschio
Post 268
Punteggio 4.907
Ciao Mauro,

mauroservienti wrote:
> Messaging is the word :-)


IO HO VISTO LA LUCEEEEEE!!!

;-)

Ciao,
Giulio
--
  • | Punteggio Post: 20
Top 10 Partecipanti
Post 143
Punteggio 2.560
Ciao Giulio,

You wrote on 24/02/2010 :
> Ciao Mauro,
>
> mauroservienti wrote:
>> Messaging is the word :-)
>
> IO HO VISTO LA LUCEEEEEE!!!

se ti interessa ti posso girare una implementazione asic di un motore
di "brokering", � uno dei sample che ho usato ain un meeting a venezia.
Girami una mail se ti interessa.

> ;-)
>
> Ciao,
> Giulio
> --

..m

--
Mauro Servienti
{C67C0157-5D98-4733-A75E-93CAEE4BADC8}
Microsoft MVP - Visual C# / MCP
http://mvp.support.microsoft.com
http://blogs.ugidotnet.org/topics
whynot [ at ] topics [ dot ] it
  • | Punteggio Post: 35
Top 10 Partecipanti
Maschio
Post 243
Punteggio 3.383

Concordo anche io che un sistema di brokering, ti fa scrivere più codice, ma ti tiene il dominio pulito ed è veramente la soluzione migliore. Alla lunga i benefici si vedono :)

alk.

  • | Punteggio Post: 5
Top 10 Partecipanti
Maschio
Post 268
Punteggio 4.907
Ciao Mauro,

mauroservienti wrote:
> se ti interessa ti posso girare una implementazione asic di un motore
> di "brokering", � uno dei sample che ho usato ain un meeting a venezia.
> Girami una mail se ti interessa.

Ok, ho il tuo indirizzo.
Adesso ti scrivo.

Ciao e grazie,
Giulio
--
  • | Punteggio Post: 5
Pagina 1 di 1 (11 elementi) | RSS
Powered by Community Server (Commercial Edition), by Telligent Systems