11

我可以制作一个可以应用于每个控件的所有工具提示的工具提示样式吗?

我试过了,但我无法获取样式中的内容(工具提示文本),它在工具提示中显示空文本:

<Style TargetType="{x:Type ToolTip}" >
        <Setter Property="OverridesDefaultStyle" Value="true" />
        <Setter Property="HasDropShadow" Value="True" />
        <Setter Property="Foreground" Value="White" />
        <Setter Property="FontSize" Value="12" />
        <Setter Property="Placement" Value="Bottom" />
        <Setter Property="VerticalOffset" Value="0" />
        <Setter Property="Padding" Value="8" />

        <Setter Property="HorizontalContentAlignment" Value="Center" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type ToolTip}" >
                    <StackPanel Margin="7,1" >
                      <Border Background="#FFF7F7CC" CornerRadius="1" >
                            <TextBlock Margin="1" Foreground="Black" HorizontalAlignment="Center" VerticalAlignment="Top" Text="{TemplateBinding ToolTip}"/>
                        </Border>
                    </StackPanel>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

为了使用这种风格,我必须在控件中放置一个单独的 Tooltip 标签,例如将工具提示应用于边框,

<Border>
    <Border.ToolTip>
          <ToolTip ToolTip="This is tooltip text"  />
    </Border.ToolTip>
........
.........
</Border>

但是有没有什么方法可以让 tooltipstyle 应用于所有带有相同标签中提到的工具提示的控件。例如。

<Border BorderBrush="Transparent" Background="Transparent" Cursor="Help" ToolTip="This is Tooltip" >
.....
.....
</Border>

让我知道是否需要任何进一步的细节。感谢期待。

4

1 回答 1

6

是的,你的方法会奏效。但是需要在控制模板中进行一些小的更改。将 TextBlock 替换为 ContentPresenter。

                <ControlTemplate TargetType="{x:Type ToolTip}" >
                    <StackPanel Margin="7,1" >
                        <Border Background="#FFF7F7CC" CornerRadius="1" >
                        <ContentPresenter Margin="1" HorizontalAlignment="Center" VerticalAlignment="Top" />
                        </Border>
                    </StackPanel>
                </ControlTemplate>
于 2013-06-21T07:03:02.030 回答