Ciao Raf,
grazie per la risposta.
On 29/07/2013 09.48, Raffaele Rialdi [MVP] wrote:
> Ciao,
> lo scenario che descrivi si presta molto di più ad essere sviluppato con
> MVVM piuttosto che con la gestione eventi.
Sì, decisamente meglio così! :-)
Peraltro sto cercando di evtiare come la peste tutto ciò che non sia
100% MVVM...
> Tanto per darti un'idea, ogni volta che vuoi un contesto di backend
> differente (cioè un ViewModel che si occupi di una parte di user
> interface) è sufficiente che quella gerarchia di UI abbia il suo
> DataContext impostato sul corrispondente ViewModel.
> Nel tuo esempio avresti:
> - shell bindata al ViewModel della shell
...ce l'ho!
> - tab (uno o più) bindati al/ai ViewModel dei tab
...ce l'ho!
> - tutti i viewmodel comunicano via mediator pattern la cui
> implementazione di solito è "affogata" nell'implementazione di MVVM che
> scegli.
Ecco, questo mi manca. Il mediator devo implementarlo io? Magari usando
un sistema di messaging/weak event? Ma non è un bel po' di codice da
scrivere a mano?
Io ho fatto una cosa del genere: nel bottone con la "x" che chiude il
tab item, ho messo:
<Button Command="{Binding DataContext.CloseCommand,
RelativeSource={RelativeSource FindAncestor, AncestorType=Window}}" ...>
ed effettivamente il mio CloseCommand, definito nel viewmodel della
shell, viene correttamente richiamato. Il problema è che da dentro al
metodo non c'è modo di tenere traccia di quale tab abbia effettivamente
invocato il comando!
Suggerimenti?
> Un buon kit è MVVM light che offre molto di più di quanto ti serve in
> questo scenario.
Visto che il progetto a cui sto lavorando è molto "didattico", vorrei
evitare di passare tramite MVVM. Ho "rubacchiato" un po' da Radical (e
conto di inserirlo pesanemente a breve), ma nella fase attuale
preferisco scrivere codice a mano. :-)
> Se invece vuoi andare con gli eventi ovviamente dovrai gestirti tutto
> nei code-behind e redirigere le richieste su tue classi per
> omogenenizzre le richieste, ma è decisamente più complesso.
Già... quindi questa soluzione la scartiamo senza neanche un po' di
rimorso. :-)
Grazie,
Giulio
--