Hace poco tuve que hacer esto y me sorprendió lo simple que era cuando no podía encontrar fácilmente ejemplos claros. Lo que hice fue añadir lo siguiente a AssemblyInfo.cs:
#if DEBUG
[assembly: XmlnsDefinition("debug-mode", "Namespace")]
#endif
A continuación, utilice la etiqueta AlternateContent del espacio de nombres de marcas-compatibilidad de elegir su contenido en función de la presense de esa definición de espacio de nombres:
<Window x:Class="Namespace.Class"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="debug-mode"
Width="400" Height="400">
...
<mc:AlternateContent>
<mc:Choice Requires="d">
<Style TargetType="{x:Type ToolTip}">
<Setter Property="FontFamily" Value="Arial"/>
<Setter Property="FlowDirection" Value="LeftToRight"/>
</Style>
</mc:Choice>
<mc:Fallback>
<Style TargetType="{x:Type ToolTip}">
<Setter Property="FontFamily" Value="Tahoma"/>
<Setter Property="FlowDirection" Value="RightToLeft"/>
</Style>
</mc:Fallback>
</mc:AlternateContent>
...
</Window>
Ahora , cuando se define DEBUG, también se definirá "debug-mode", y el espacio de nombres "d" estará presente. Esto hace que la etiqueta AlternateContent elija el primer bloque de código. Si DEBUG no está definido, se usará el bloque de código de respaldo.
Este código de ejemplo no se ha probado, pero es básicamente lo mismo que estoy usando en mi proyecto actual para mostrar de forma condicional algunos botones de depuración.
Vi una publicación de blog con un código de ejemplo que dependía de la etiqueta "Ignorable", pero parecía mucho menos claro y fácil de usar que este método.
¿Qué estás tratando de lograr? – tsells
Necesito tener diferentes estilos en el modo de depuración, para poder realizar una ejecución más liviana en el modo de depuración. –