Нещодавно мені довелося це зробити, і я був здивований тим, наскільки просто це було, коли я не міг легко знайти чітких прикладів. Що я зробив, це додав наступне до AssemblyInfo.cs:
#if DEBUG
[assembly: XmlnsDefinition( "debug-mode", "Namespace" )]
#endif
Потім, використовуйте тег AlternateContent для простори імен розмітки, що відповідає сумісності, щоб вибрати вміст на основі презентації цього простору імен:
<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>
Тепер, коли визначено DEBUG, буде також визначено "режим налагодження", і буде присутній простір імен "d". Це змушує тег AlternateContent вибрати перший блок коду. Якщо DEBUG не визначено, буде використаний резервний блок коду.
Цей зразок коду не тестувався, але в основному це те саме, що я використовую у своєму поточному проекті, щоб умовно показати деякі кнопки налагодження.
Я бачив допис у блозі з прикладом коду, який спирався на тег "Ігнорується", але це здавалося набагато менш зрозумілим та простим у використанні як цей метод.