Diferentes vistas / plantilla de datos basada en la variable miembro

Tengo un modelo de vista llamado

ViewModelClass 

que contiene un booleano

Tengo otro modelo de vista que contiene

 ObservableCollection m_allProjects; 

Entonces tengo esto en mi opinión:

      

Ahora quiero, basado en boolean en All-Collections-collection, usar una datatemplate diferente. ¿Cuál es la mejor manera de hacer esto?

Sé que puedo hacer esto con diferentes ViewModels y usar un tipo de objeto basado en ViewModel, pero prefiero solo usar 1 view model.

EDITAR:

Quiero hacer esto con desencadenadores de datos. ¿Alguien puede proporcionarme algún código, por favor?

Usualmente uso un ContentControl para mostrar los datos y cambio el ContentTemplate en un activador basado en la propiedad que cambia.

Aquí hay un ejemplo que publiqué en mi blog que intercambia una plantilla basada en una propiedad vinculada

              

Un DataTemplateSelector también funcionará, pero solo si la propiedad que determina qué plantilla mostrar no cambia, ya que los DataTemplateSelectors no responden para cambiar las notificaciones. Usualmente los evito si es posible ya que también prefiero mi lógica de selección de vista en mi vista para poder ver qué está pasando.

si desea cambiar la vista de elementos de control de elementos en el caso de ViewModelClass boolean, puede simplemente usar un estilo de disparo de datos en su control de usuario ProjectInfoView.