1、ToolTip 就是悬浮提示框:
鼠标放到控件上,停留一小会儿,弹出一个小浮窗,用来展示补充说明文字。 几乎所有 WPF 可视控件(RadioButton、Button、TextBox、Grid、StackPanel)都自带 ToolTip 属性。
最简写法(直接赋值字符串)
<StackPanel x:Name="spCountry">
<RadioButton Content="中国" ToolTip="选择中国地区"></RadioButton>
<RadioButton Content="美国" ToolTip="选择美国地区"></RadioButton>
<RadioButton Content="俄罗斯" ToolTip="选择俄罗斯地区"></RadioButton>
</StackPanel>
鼠标悬浮在单选框上,就弹出提示。
2. ToolTip 高级用法:里面可以放任意 UI 元素(不只是文字!)
ToolTip 本身是一个ContentControl,所以内部可以放 StackPanel、图片、多行文本,甚至布局。
<Button Content="保存">
<Button.ToolTip>
<ToolTip>
<StackPanel>
<TextBlock Text="保存文件" FontWeight="Bold"/>
<TextBlock Text="快捷键:Ctrl+S" Foreground="Gray"/>
</StackPanel>
</ToolTip>
</Button.ToolTip>
</Button>
简写:直接写字符串时,WPF 会自动帮你隐式包装成 ToolTip 对象
3. 常用属性(控制悬浮行为)
<Button ToolTip="提示文字"
ToolTipService.ShowDuration="5000"
ToolTipService.InitialShowDelay="300"
ToolTipService.BetweenShowDelay="100">
</Button>
注意:这几个不是 ToolTip 自己的属性,是附加属性 ToolTipService(WPF 附加属性,非常重要知识点)
| 属性 | 含义 | 默认值 |
|---|---|---|
ToolTipService.InitialShowDelay |
鼠标放上去,等待多久才弹出提示(毫秒) | 约 400ms |
ToolTipService.ShowDuration |
提示框弹出后,持续显示多久自动消失 | 5000ms |
ToolTipService.BetweenShowDelay |
鼠标快速切换到别的控件,提示快速弹出的间隔 | 100ms |
示例:鼠标放上去立刻显示,并且持续 10 秒
<RadioButton Content="中国"
ToolTip="选择中国地区"
ToolTipService.InitialShowDelay="0"
ToolTipService.ShowDuration="10000"/>
4. 核心知识点:ToolTip 是独立的弹出层(Popup)
- ToolTip不属于控件视觉树,它是一个顶层 Popup 浮窗。
- 它不会占用布局空间,不会挤压你的界面元素。
- 默认跟随鼠标位置弹出。
5. 路由事件相关小重点
ToolTip 弹出 / 关闭有事件:Opened、Closed
<Button Content="测试" ToolTip="提示" ToolTip.Opened="ToolTip_Opened"/>
后台可以在弹出瞬间做一些动态加载内容。
6. 两种使用方式对比
-
简写形式(最常用)
直接给 ToolTip 赋值文本,WPF 自动封装。
-
完整显式写法
当提示需要复杂布局、图片、样式时,用完整写法。
7. 常见坑
- ❌ 控件
IsEnabled="False"禁用状态时:默认 ToolTip 不会弹出
解决:使用
ToolTipService.ShowOnDisabled="True"
<Button Content="禁用按钮" IsEnabled="False"
ToolTip="该按钮不可点击"
ToolTipService.ShowOnDisabled="True"/>
-
❌ ToolTip 内容太长,不会自动换行 解决:设置 TextBlock 的
TextWrapping="Wrap" -
❌ ToolTip 默认不能交互,不能点击里面的按钮,它只是悬浮提示。
如果需要能点击的弹出窗口,不要用 ToolTip,改用
Popup控件。
8. 与RadioButton 代码的
直接加到你现有的 XAML 里面测试:
<StackPanel x:Name="spCountry">
<RadioButton Content="中国" ToolTip="选择中国地区"></RadioButton>
<RadioButton Content="美国" ToolTip="选择美国地区"></RadioButton>
<RadioButton Content="俄罗斯" ToolTip="选择俄罗斯地区"></RadioButton>
</StackPanel>
鼠标悬浮在单选框上,就弹出提示。
9. 面试一句话考点
ToolTip 是 WPF 的附加属性,本质是顶层 Popup,默认鼠标悬停延迟弹出; ToolTipService 类提供附加属性用来控制延迟、禁用时是否显示。
1