Мне недавно пришлось это сделать, и я был удивлен, насколько просто это было, когда я не мог легко найти какие-либо четкие примеры.Что я сделал, так это добавил в 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 не определен, будет использован блок кода Fallback.
Этот пример кода не был протестирован, но в основном это то же самое, что я использую в моем текущем проекте для условного отображения некоторых кнопок отладки.
Я видел сообщение в блоге с примером кода, в котором использовался тег «Ignorable», но он казался намного менее понятным и простым в использовании, чем этот метод.