Diferentes vistas / plantillas de datos basadas en la variable miembro

Tengo un modelo de vista llamado

<code> ViewModelClass 
</code>

que contiene un booleano.

Tengo otro modelo de vista que contiene

<code>ObservableCollection<ViewModelClass> m_allProjects;
</code>

Entonces tengo esto en mi opinión:

<code><DataTemplate>
   <views:ProjectInfoView x:Key="ProjectInfoDetailTemplate"/>
</DataTemplate>

<ItemsControl Grid.Row="1" Grid.Column="0"
              ItemsSource="{Binding AllProjects}"
              ItemTemplate="{StaticResource ProjectInfoDetailTemplate}"
              Margin="10,28.977,10,10">
</ItemsControl >
</code>

Ahora quiero, basado en el valor booleano de la colección AllProjects, usar una plantilla de datos diferente. ¿Cuál es la mejor manera de hacer esto?

Sé que puedo hacer esto con diferentes ViewModels y usar un tipo de objeto ViewModel-base, pero prefiero usar solo 1 modelo de vista.

EDITAR:

Quiero hacer esto con disparadores de datos. ¿Puede alguien proporcionarme algún código por favor?

Respuestas a la pregunta(2)

Su respuesta a la pregunta