WPF:当按钮被命令禁用时,如何显示工具提示?


162

我试图显示一个工具提示,而不管按钮状态如何,但这似乎并不能解决问题:

<Button Command="{Binding Path=CommandExecuteAction}" 
        ToolTip="{Binding Path=Description}" ToolTipService.ShowOnDisabled="true"
        Style="{StaticResource toolbarButton}">
   <Image Source="{Binding Path=Icon}"></Image>
</Button>

当按钮由于命令而被禁用时,如何显示工具提示.Execute是否返回false?

注意:

ToolTipService.ShowOnDisabled =“ true”就像一个超级按钮。这在我的示例中不起作用的原因是,与按钮相关联的样式重新定义了控件模板,并在禁用按钮时关闭了对按钮的点击测试(IsHitTestVisible = false)。在控件模板中重新启用命中测试后,当禁用按钮时,将显示工具提示。



我正在使用ToolTipService.ShowOnDisabled,但无法正常工作。
Marius 2010年

1
只需删除此问题即可。我做了一个小的测试项目,ToolTipService.ShowOnDisabled正常运行。
Marius

15
我很高兴这个问题没有被删除。它迅速而准确地回答了我所遇到的问题/问题,这正是我最初来到SO的确切原因。感谢您成为Lazy(tm)Marius。:-)
Jere.Jones,2010年

打扰一下,有什么方法可以让我只在禁用状态下显示它吗?
advapi

Answers:



26

这是添加到启动代码中的好方法

ToolTipService.ShowOnDisabledProperty.OverrideMetadata(
    typeof(Control),
    new FrameworkPropertyMetadata(true));

您能解释一下这是什么吗?说这是启动时的好方法并不能解释。
Stealth Rabbi

它可以确保对于从Control继承的任何类,即使禁用了Control实例,也会显示工具提示
sacha barber 19'Jan

3
具有讽刺意味的是,当用户禁用控件,他们最需要工具提示,因为他们想知道为什么禁用控件。这是WPF中默认值在大多数情况下都是错误的一个很好的例子。因此,值得进行更改。
Contango

2

使工具提示对所有禁用的按钮和复选框可见:

<Window.Resources>
    <Style TargetType="{x:Type Button}" BasedOn="{StaticResource {x:Type Button}}>
        <Setter Property="ToolTipService.ShowOnDisabled" Value="true"/>
    </Style>
    <Style TargetType="{x:Type CheckBox}" BasedOn="{StaticResource {x:Type CheckBox}}>
        <Setter Property="ToolTipService.ShowOnDisabled" Value="true"/>
    </Style>
</Window.Resources>

这样BasedOn=...可以防止您失去之前已应用到复选框或按钮的任何其他样式。如果您不对按钮或复选框使用任何其他样式,则可以删除BasedOn=..零件

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.