WPF Tooltip Visibility - PullRequest
       15

WPF Tooltip Visibility

25 голосов
/ 30 июня 2010

Как я могу убедиться, что всплывающая подсказка кнопки видна только когда кнопка отключена?

С чем можно связать видимость подсказки?

Ответы [ 4 ]

35 голосов
/ 30 июня 2010

Вам нужно будет установить ToolTipService.ShowOnDisabled на True на кнопке, чтобы всплывающая подсказка вообще отображалась, когда кнопка отключена.Вы можете привязать ToolTipService.IsEnabled к кнопке, чтобы включить и отключить всплывающую подсказку.

27 голосов
/ 30 июня 2010

Это полный 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."/>
9 голосов
/ 25 апреля 2013

Вы можете сделать это, используя простой триггер.Просто поместите следующий фрагмент кода в окно.

<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>
4 голосов
/ 19 октября 2012

Немного измененный ответ на то, что предложил Дэвид Уорд. Вот полный код

Добавить преобразователь значения в ресурсы, подобные этому

<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();
    }
  }
...