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 对象的工具提示内容。 下面的示例演示如何将 TextBox 的 ToolTip 属性设置为包含在 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 类上设置等效的附加属性。
有关如何设置属性以使用 ToolTip 和 ToolTipService 属性指定工具提示内容位置的示例,请参阅定位 ToolTip。
设置工具提示样式
可以通过定义自定义 Style 来设置 ToolTip 的样式。 下面的示例定义一个名为 Simple
的 Style,它演示如何通过设置 Background、Foreground、FontSize 和 FontWeight 来偏移 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 类提供以下属性用于设置工具提示显示时间:InitialShowDelay、BetweenShowDelay 和 ShowDuration。
使用 InitialShowDelay 和 ShowDuration 属性指定显示 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>