Diverse visualizzazioni / modelli di dati in base alla variabile membro

Ho chiamato un modello di vista

ViewModelClass 

che contiene un booleano.

Ho un altro modello di vista che contiene

 ObservableCollection m_allProjects; 

Quindi ho questo a mio avviso:

      

Ora voglio, in base al valore booleano nella raccolta di AllProjects, utilizzare un datatemplate differente. Qual è il modo migliore per farlo?

So che posso farlo con diversi ViewModels e usare un tipo di object ViewModel-base, ma preferisco usare solo il modello a 1 vista.

MODIFICARE:

Voglio farlo con i trigger di dati. Qualcuno può fornirmi un codice per favore?

Di solito uso un ContentControl per visualizzare i dati e sostituire il ContentTemplate in un trigger basato sulla proprietà che cambia.

Ecco un esempio che ho pubblicato sul mio blog che scambia un modello basato su una proprietà associata

              

Un DataTemplateSelector funzionerà anche, ma solo se la proprietà che determina quale modello mostrare non cambia poiché DataTemplateSelectors non risponde alle notifiche di modifica. Io di solito li evito, se ansible, dal momento che preferisco anche la mia logica di selezione della vista a mio avviso, così posso vedere che cosa sta succedendo.

se si desidera cambiare la vista item itemscontrol nel caso del booleano ViewModelClass, è ansible utilizzare semplicemente uno stile datatrigger nel controllo utente di ProjectInfoView.