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
样式,而不是全部设置。考虑使用<代码>标签>代码>而不是针对样式文本实例的<代码>文本块< /代码>。您可以设置填充/边距等样式,使其完全符合您的需要。