C# 如何阻止工具提示继承文本块样式?
我已经在我的应用程序资源中定义了一种样式,我希望我的所有文本块都使用它:C# 如何阻止工具提示继承文本块样式?,c#,wpf,xaml,tooltip,textblock,C#,Wpf,Xaml,Tooltip,Textblock,我已经在我的应用程序资源中定义了一种样式,我希望我的所有文本块都使用它: <Style TargetType="{x:Type TextBlock}"> <Setter Property="Effect"> <Setter.Value> <DropShadowEffect BlurRadius="1" ShadowDepth="0" /> </Setter.Value>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Effect">
<Setter.Value>
<DropShadowEffect BlurRadius="1" ShadowDepth="0" />
</Setter.Value>
</Setter>
<Setter Property="Foreground" Value="White" />
<Setter Property="FontFamily" Value="Arial" />
<Setter Property="FontWeight" Value="Bold" />
</Style>
我不想在每一个文本块上都经过并明确地指定样式——我只想让它们自然地继承这个样式
不幸的是,当我定义工具提示时,该工具提示也会采用这种样式。我猜这是因为它的设计中包含了一个TextBlock
我可以接受的是,必须对每个已定义的工具提示进行检查并设置样式(因为它们在我的应用程序中使用较少),因此,如果有某种方法可以定义一个工具提示样式来覆盖继承的textblock样式,我可以这样做
那么,如何阻止工具提示继承TextBlock样式呢?在
TextBlock
上设置全局隐式样式是个糟糕的主意,这就是原因所在TextBlock
是显示文本的原语。最好只在需要的地方设置隐式TextBlock
样式,而不是普遍设置
或考虑使用<代码>标签>代码>而不是针对样式文本实例的<代码>文本块< /代码>,并具有隐式<代码>标签< /代码>样式。这就是
标签存在的原因之一。您可以设置填充/边距等样式,使其完全符合您的需要
但是,如果你想用快速、肮脏、简单的方法来解决一个糟糕的决定,你可以使用祖父在阿拉曼用以搞乱隆美尔将军的“内隐式”技巧:
<Style TargetType="ToolTip">
<Style.Resources>
<!-- Implicit style for TextBlocks within ToolTips -->
<Style TargetType="TextBlock">
<Setter Property="Foreground" Value="Black" />
<Setter Property="FontWeight" Value="Regular" />
<Setter Property="Effect" Value="{x:Null}" />
</Style>
</Style.Resources>
<Setter Property="Foreground" Value="Black" />
<Setter Property="FontWeight" Value="Regular" />
<Setter Property="Effect" Value="{x:Null}" />
</Style>
在TextBlock
上设置全局隐式样式是个糟糕的主意,这就是原因所在TextBlock
是显示文本的原语。最好只在需要的地方设置隐式TextBlock
样式,而不是普遍设置
或考虑使用<代码>标签>代码>而不是针对样式文本实例的<代码>文本块< /代码>,并具有隐式<代码>标签< /代码>样式。这就是
标签存在的原因之一。您可以设置填充/边距等样式,使其完全符合您的需要
但是,如果你想用快速、肮脏、简单的方法来解决一个糟糕的决定,你可以使用祖父在阿拉曼用以搞乱隆美尔将军的“内隐式”技巧:
<Style TargetType="ToolTip">
<Style.Resources>
<!-- Implicit style for TextBlocks within ToolTips -->
<Style TargetType="TextBlock">
<Setter Property="Foreground" Value="Black" />
<Setter Property="FontWeight" Value="Regular" />
<Setter Property="Effect" Value="{x:Null}" />
</Style>
</Style.Resources>
<Setter Property="Foreground" Value="Black" />
<Setter Property="FontWeight" Value="Regular" />
<Setter Property="Effect" Value="{x:Null}" />
</Style>
在TextBlock
上设置全局默认样式是个糟糕的主意,这就是原因所在。仅在需要的地方设置默认的TextBlock
样式,而不是全部设置。考虑使用<代码>标签>代码>而不是针对样式文本实例的<代码>文本块< /代码>。您可以设置填充/边距等样式,使其完全符合您的需要。在TextBlock
上设置全局默认样式是个糟糕的主意,这就是原因。仅在需要的地方设置默认的TextBlock
样式,而不是全部设置。考虑使用<代码>标签>代码>而不是针对样式文本实例的<代码>文本块< /代码>。您可以设置填充/边距等样式,使其完全符合您的需要。