ToolTip工具提示控件

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. 两种使用方式对比

  1. 简写形式(最常用)

直接给 ToolTip 赋值文本,WPF 自动封装。

  1. 完整显式写法

当提示需要复杂布局、图片、样式时,用完整写法。

7. 常见坑

  1. ❌ 控件 IsEnabled="False" 禁用状态时:默认 ToolTip 不会弹出

解决:使用 ToolTipService.ShowOnDisabled="True"

复制代码
<Button Content="禁用按钮" IsEnabled="False" 
        ToolTip="该按钮不可点击"
        ToolTipService.ShowOnDisabled="True"/>
  1. ❌ ToolTip 内容太长,不会自动换行 解决:设置 TextBlock 的TextWrapping="Wrap"

  2. ❌ 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

相关推荐
Vae_Mars5 小时前
WPF中如何实现单位转换
wpf
samble14 小时前
从零搭建灌装监控系统(十七):LiveCharts 实时温度曲线
c#·wpf·mvvm·modbus·工业控制
光泽雨2 天前
WPF中的依赖属性
wpf
海马2 天前
Spring Cloud 开发知识整理
spring·spring cloud·wpf
闻哥2 天前
分布式任务调度框架:XXL-Job / ElasticJob / DolphinScheduler / SchedulerX 架构对比与选型
分布式·架构·wpf
预立科技2 天前
CDN(内容分发网络)知识总结
网络·wpf·cdn
FuckPatience3 天前
WPF DataGrid 行根据某个属性循环变色动画
wpf
一条闲鱼_mytube5 天前
高并发短链接系统设计
wpf
一个天蝎座 白勺 程序猿6 天前
IoTDB集群扩容:从慌乱到从容的经验分享
数据库·wpf·时序数据库·iotdb