Ich musste dies kürzlich tun und war überrascht, wie einfach es war, wenn ich keine eindeutigen Beispiele finden konnte. Ich habe AssemblyInfo.cs Folgendes hinzugefügt:
#if DEBUG
[assembly: XmlnsDefinition( "debug-mode", "Namespace" )]
#endif
Verwenden Sie dann das AlternateContent-Tag des Markup-kompatiblen Namespace, um Ihren Inhalt basierend auf der Präsenz dieser Namespace-Definition auszuwählen:
<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>
Wenn nun DEBUG definiert ist, wird auch der "Debug-Modus" definiert, und der Namespace "d" ist vorhanden. Dadurch wählt das AlternateContent-Tag den ersten Codeblock aus. Wenn DEBUG nicht definiert ist, wird der Fallback-Codeblock verwendet.
Dieser Beispielcode wurde nicht getestet, aber es ist im Grunde dasselbe, was ich in meinem aktuellen Projekt verwende, um einige Debug-Schaltflächen bedingt anzuzeigen.
Ich habe einen Blog-Beitrag mit einem Beispielcode gesehen, der sich auf das "Ignorable" -Tag stützte, aber das schien viel weniger klar und einfach zu verwenden als diese Methode.