Вы можете использовать триггер, чтобы изменить свойство Template ContentControl, которое обернет элемент управления, который вы хотите изменить. Проверьте это:
Добавить это к ресурсам:
<ControlTemplate x:Key="BoxTemplate">
<TextBox Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor,
AncestorType={x:Type ContentControl}},Path=Content}" />
</ControlTemplate>
<ControlTemplate x:Key="BlockTemplate" >
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor,
AncestorType={x:Type ContentControl}},Path=Content}" />
</ControlTemplate>
<ControlTemplate x:Key="TestTemplate" >
<StackPanel>
<CheckBox x:Name="Switch" />
<ContentControl x:Name="MyContent" Template="{StaticResource BoxTemplate}"
Content="Data is unique!" />
</StackPanel>
<ControlTemplate.Triggers>
<Trigger SourceName="Switch" Property="IsChecked" Value="True">
<Setter TargetName="MyContent"
Property="Template"
Value="{StaticResource BlockTemplate}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
Проверьте это с помощью другого ContentControl:
<ContentControl Template="{StaticResource TestTemplate}"/>
Я уверен, что это может быть оптимизировано, но должно поставить вас на путь.