2010-06-30 140 views
20

如何确保按钮的工具提示仅在禁用按钮时可见?WPF工具提示可见性

我可以将工具提示的可见性绑定到什么地方?

+0

何时“禁用”? - 你的意思是“不是”禁用? – 4imble 2010-06-30 12:15:31

+8

显示工具提示可能会有意义,说明您无法触摸此按钮的原因。如果这是戴维的意图,我认为这很有道理。 – reuscam 2010-06-30 12:17:57

+1

是的,我想是的,我没有挑剔。我只是真正感兴趣:) – 4imble 2010-06-30 12:20:38

回答

28

您需要在按钮上将ToolTipService.ShowOnDisabled设置为True才能在禁用Button时使Tooltip可见。您可以在按钮上绑定ToolTipService.IsEnabled以启用和禁用工具提示。

+1

对于任何想和我做同样事情的人,我已经发布了按钮的完整xaml作为答案。 感谢您的帮助。 – 2010-06-30 13:54:41

20

这是按钮全XAML(基于@Quartermeister的答案)

<Button 
    x:Name="btnAdd" 
    Content="Add" 
    ToolTipService.ShowOnDisabled="True" 
    ToolTipService.IsEnabled="{Binding ElementName=btnAdd, Path=IsEnabled, Converter={StaticResource boolToOppositeBoolConverter}}" 
    ToolTip="Appointments cannot be added whilst the event has outstanding changes."/> 
3

稍微修改回答什么大卫沃德建议。下面是完整的代码

添加值转换器resouces这样

<Window.Resources> 
    <Converters:NegateConverter x:Key="negateConverter"/> 
</Window.Resources> 

然后定义下面的XAML

<Button 
    x:Name="btnAdd" 
    Content="Add" 
    ToolTipService.ShowOnDisabled="True" 
    ToolTipService.IsEnabled="{Binding RelativeSource={RelativeSource self}, Path=IsEnabled, Converter={StaticResource negateConverter}}" 
    ToolTip="Hi guys this is the tool tip"/> 

值变换器看起来像这样

[ValueConversion(typeof(bool), typeof(bool))] 
    public class NegateConverter : IValueConverter 
    { 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
    return !((bool)value); 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
    } 
8

你可以也使用简单的触发器来做到这一点。只需将下面的一段代码放入一个窗口即可。

<StackPanel Orientation="Vertical" HorizontalAlignment="Center" VerticalAlignment="Center"> 
    <CheckBox Name="chkDisabler" Content="Enable/disable button" Margin="10" /> 
    <Button Content="Hit me" Width="200" Height="100" IsEnabled="{Binding ElementName=chkDisabler, Path=IsChecked}"> 
     <Button.Style> 
      <Style TargetType="{x:Type Button}"> 
       <Setter Property="ToolTipService.ShowOnDisabled" Value="true" /> 
       <Setter Property="ToolTip" Value="{x:Null}" /> 
       <Style.Triggers> 
        <Trigger Property="IsEnabled" Value="False"> 
         <Setter Property="ToolTip" Value="Hi, there! I'm disabled!" /> 
        </Trigger> 
       </Style.Triggers> 
      </Style> 
     </Button.Style> 
    </Button> 
</StackPanel> 
+0

通过'Style'设置器,可以方便地查看设置'ShowOnDisabled'的语法。 – mungflesh 2016-08-12 10:55:43