我最近不得不这样做,当我无法轻松找到任何清晰的示例时,它是如此的简单,这让我感到惊讶。我所做的是将以下内容添加到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,将使用后备代码块。
此示例代码未经测试,但与我在当前项目中有条件地显示一些调试按钮所用的基本上相同。
我确实看到了一篇博客文章,其中包含一些示例代码,这些示例代码依赖于“ Ignorable”标签,但这种方法看起来不太清晰且易于使用。