对于XAML中的样式,我需要这样的东西:
<Application.Resources> #if DEBUG <Style TargetType="{x:Type ToolTip}"> <Setter Property="FontFamily" Value="Arial"/> <Setter Property="FlowDirection" Value="LeftToRight"/> </Style> #else <Style TargetType="{x:Type ToolTip}"> <Setter Property="FontFamily" Value="Tahoma"/> <Setter Property="FlowDirection" Value="RightToLeft"/> </Style> #endif </Application.Resources>
我最近不得不这样做,当我无法轻松找到任何清晰的示例时,它是如此的简单,这让我感到惊讶。我所做的是将以下内容添加到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”标签,但这种方法看起来不太清晰且易于使用。