You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于元素状态的WPF数据触发器:根据按钮状态修改Tooltip

完全通过XAML实现按钮启用/禁用状态对应的Tooltip切换

可以直接通过XAML的Trigger监听按钮自身的IsEnabled属性来实现,不需要依赖ViewModel的额外属性。因为按钮绑定Command后,IsEnabled会自动同步Command的CanExecute状态,所以直接基于这个属性做触发即可。

修改后的完整XAML代码如下:

<Button Name="OkButton" VerticalAlignment="Center" Command="{Binding Path=OkCommand}" 
        CommandParameter="{Binding}" Click="OkButtonClick" Content="OK">
    <Button.Style>
        <Style TargetType="{x:Type Button}">
            <Setter Property="ToolTipService.ShowOnDisabled" Value="True" />
            <Setter Property="ToolTip" Value="OK" />
            <Style.Triggers>
                <!-- 监听按钮自身的IsEnabled属性,禁用时切换Tooltip -->
                <Trigger Property="IsEnabled" Value="False">
                    <Setter Property="ToolTip" Value="OK Disabled" />
                </Trigger>
            </Style.Triggers>
        </Style>
    </Button.Style> 
</Button>

关键说明:

  • 用Trigger替代原来的DataTrigger,因为我们监听的是按钮自身的依赖属性IsEnabled,而非外部数据
  • ToolTipService.ShowOnDisabled="True"是必须的,它保证按钮处于禁用状态时依然能显示Tooltip
  • 按钮的IsEnabled会自动和绑定的OkCommand的CanExecute结果同步,无需额外配置

内容的提问来源于stack exchange,提问作者John Ingram

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 05:45:33