ToolTip 概述

工具提示是一个小型的弹出窗口,在用户将鼠标指针暂停在某个元素(如 Button)上时显示。 本主题介绍工具提示,并讨论如何创建和自定义工具提示内容。

什么是工具提示

当用户将鼠标指针移动到具有工具提示的元素上时,将在一段指定的时间内显示一个包含工具提示内容(例如,介绍控件功能的文本内容)的窗口。 如果用户将鼠标指针从控件上移开,该窗口将消失,因为工具提示内容无法接收焦点。

工具提示的内容可以包含一行或多行文本、图像、形状或其他可视内容。 通过将以下属性之一设置为工具提示内容来定义控件的工具提示。

使用哪个属性取决于定义工具提示的控件继承自 FrameworkContentElement 还是 FrameworkElement 类。

创建工具提示

以下示例演示如何通过将 Button 控件的 ToolTip 属性设置为文本字符串来创建简单的工具提示。

<Button ToolTip="Click to submit your information" 
        Click="SubmitCode" Height="20" Width="50">Submit</Button>

还可以将工具提示定义为 ToolTip 对象。 以下示例使用 XAML 将 ToolTip 对象指定为 TextBox 元素的工具提示。 请注意,该示例通过设置 FrameworkElement.ToolTip 属性来指定 ToolTip

<TextBox HorizontalAlignment="Left">ToolTip with non-text content
  <TextBox.ToolTip>
    <ToolTip>
      <DockPanel Width="50" Height="70">
        <Image Source="data\flower.jpg"/>
        <TextBlock>Useful information goes here.</TextBlock>
      </DockPanel>
    </ToolTip>
  </TextBox.ToolTip>
</TextBox>

以下示例使用代码来生成 ToolTip 对象。 该示例创建了一个 ToolTip (tt),并将其与 Button 关联。

button = new Button();
button.Content = "Hover over me.";
tt = new ToolTip();
tt.Content = "Created with C#";
button.ToolTip = tt;
cv2.Children.Add(button);
button = New Button()
button.Content = "Hover over me."
tt = New ToolTip()
tt.Content = "Created with Visual Basic"
button.ToolTip = tt
cv2.Children.Add(button)

还可以通过将工具提示内容包含在布局元素(如 DockPanel)中来创建未定义为 ToolTip 对象的工具提示内容。 下面的示例演示如何将 TextBoxToolTip 属性设置为包含在 DockPanel 控件中的内容。

<TextBox>
  ToolTip with image and text
  <TextBox.ToolTip>
       <StackPanel>
        <Image Source="data\flower.jpg"/>
        <TextBlock>Useful information goes here.</TextBlock>
      </StackPanel>
  </TextBox.ToolTip>

使用 ToolTipd 和 ToolTipService 类的属性

可以通过设置视觉属性和应用样式来自定义工具提示内容。 如果将工具提示内容定义为 ToolTip 对象,可以设置 ToolTip 对象的视觉属性。 否则,必须在 ToolTipService 类上设置等效的附加属性。

有关如何设置属性以使用 ToolTipToolTipService 属性指定工具提示内容位置的示例,请参阅定位 ToolTip

设置工具提示样式

可以通过定义自定义 Style 来设置 ToolTip 的样式。 下面的示例定义一个名为 SimpleStyle,它演示如何通过设置 BackgroundForegroundFontSizeFontWeight 来偏移 ToolTip 的位置并更改其外观。

<Style TargetType="ToolTip">
  <Setter Property = "HorizontalOffset" Value="10"/>
  <Setter Property = "VerticalOffset" Value="10"/>
  <Setter Property = "Background" Value="LightBlue"/>
  <Setter Property = "Foreground" Value="Purple"/>
  <Setter Property = "FontSize" Value="14"/>
  <Setter Property = "FontWeight" Value="Bold"/>
</Style>

使用 ToolTipService 的 Time Interval 属性

ToolTipService 类提供以下属性用于设置工具提示显示时间:InitialShowDelayBetweenShowDelayShowDuration

使用 InitialShowDelayShowDuration 属性指定显示 ToolTip 之前的延迟(通常很短暂),并且还指定 ToolTip 保持可见的时长。 有关详细信息,请参阅如何:延迟 ToolTip 的显示

BetweenShowDelay 属性确定当用户在不同控件之间快速移动鼠标指针时,这些控件的工具提示是否在没有初始延迟的情况下显示。 有关 BetweenShowDelay 属性的详细信息,请参阅使用 BetweenShowDelay 属性

以下示例演示如何为工具提示设置这些属性。

<Ellipse Height="25" Width="50" 
         Fill="Gray" 
         HorizontalAlignment="Left"
         ToolTipService.InitialShowDelay="1000"
         ToolTipService.ShowDuration="7000"
         ToolTipService.BetweenShowDelay="2000">
  <Ellipse.ToolTip>
    <ToolTip Placement="Right" 
             PlacementRectangle="50,0,0,0"
             HorizontalOffset="10" 
             VerticalOffset="20"
             HasDropShadow="false"
             Opened="whenToolTipOpens"
             Closed="whenToolTipCloses"
             >
      <BulletDecorator>
        <BulletDecorator.Bullet>
          <Ellipse Height="10" Width="20" Fill="Blue"/>
        </BulletDecorator.Bullet>
        <TextBlock>Uses the ToolTip Class</TextBlock>
      </BulletDecorator>
    </ToolTip>
  </Ellipse.ToolTip>
</Ellipse>

另请参阅