Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[WPF][MVVM] Switch di viewmodel a runtime e DataTemplate

13 views
Skip to first unread message

Marco Sabatini

unread,
Jun 11, 2014, 3:54:19 AM6/11/14
to
Ciao a tutti!
Sto cercando di fare un piccolo tutorial a MVVM per un collega, e gli ho detto di studiarsi il celeberrimo esempio "MVVMDemoApp" di Josh Smith:

http://msdn.microsoft.com/en-us/magazine/dd419663.aspx

Aveva la bella soluzione di mostrare delle view costruite con datatemplates: a seconda del dato da mostrare, wpf si sceglieva il template abbinato e sceglieva la view giusta (vedere allcustomers e newcustomer nell'esempio).

Tutto bello, tutto elegante. Ma non funziona cambiando al volo il tipo di dato sottostante: cioè, un nuovo dato (cioè il viewmodel sottostante) viene mostrato con la sua bella view selezionata dal datatemplate, ma se si cambia un viewmodel al volo (per esempio un viewmodel padre che abbia una property di tipo childviewmodel che cambi alla bisogna) il wpf non refresha, non ri-renderizza le view.

Qual è la strada migliore per risolvere la cosa senza aggiungere troppa "roba"? (leggo in giro di usare styles e triggers, template selectors, se fosse possibile vorrei fare qualcosa di più "didattico")

le idee che ho avuto io:
- distruggere la view e ricrearla (ma da command, nei viewmodel, accedere alle view... brrrrr....)
- scatenare un qualche refresh, non so in che modo...

Grazie per qualsiasi suggerimento
Marcosabba

Marco Sabatini

unread,
Jun 11, 2014, 7:57:12 AM6/11/14
to
Il giorno mercoledì 11 giugno 2014 09:54:19 UTC+2, Marco Sabatini ha scritto:
[...]
> - distruggere la view e ricrearla
nel frattempo ho usato un itemscontrol bindato a una observablecollection che ogni volta viene svuotata (clear) e aggiunta del viewmodel che voglio mostrare.
Funziona. Se avete altre idee, grazie, per ora mi accontento :)
Ciao!

Mauro Servienti [MVP]

unread,
Jun 14, 2014, 3:57:09 PM6/14/14
to
Ciao Marco,

You wrote on 11/06/2014 :
> Tutto bello, tutto elegante. Ma non funziona cambiando al volo il tipo di
> dato sottostante: cioᅵ, un nuovo dato (cioᅵ il viewmodel sottostante) viene
> mostrato con la sua bella view selezionata dal datatemplate, ma se si cambia
> un viewmodel al volo (per esempio un viewmodel padre che abbia una property
> di tipo childviewmodel che cambi alla bisogna) il wpf non refresha, non
> ri-renderizza le view.

Questa cosa ᅵ decisamente sospetta, a me ha sempre funzionato che ᅵ un
piacere, riesci a mettere insieme un piccolo esempio che riproduce il
problema?

.m

--
blog @ //milestone.topics.it


0 new messages