Comment puis-je m'assurer que l'info-bulle d'un bouton n'est visible que lorsque le bouton est désactivé?WPF Tooltip Visibility
À quoi puis-je lier la visibilité de l'infobulle?
Comment puis-je m'assurer que l'info-bulle d'un bouton n'est visible que lorsque le bouton est désactivé?WPF Tooltip Visibility
À quoi puis-je lier la visibilité de l'infobulle?
Vous devez définir ToolTipService.ShowOnDisabled sur Vrai sur le bouton afin que l'info-bulle soit visible lorsque le bouton est désactivé. Vous pouvez lier ToolTipService.IsEnabled sur le bouton pour activer et désactiver l'info-bulle.
Pour tous ceux qui veulent faire les mêmes choses que moi, j'ai posté le xaml complet pour le bouton comme réponse. Merci pour votre aide. –
Ceci est la pleine XAML du bouton (basé sur la réponse de @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."/>
Une réponse légèrement modifiée pour ce que David Ward a proposé. Voici le code complet
Ajouter un convertisseur de valeur à resouces comme celui-ci
<Window.Resources>
<Converters:NegateConverter x:Key="negateConverter"/>
</Window.Resources>
Définissez ensuite suivant 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"/>
Le convertisseur de valeur ressemble à ce
[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();
}
}
Vous pouvez Faites-le en utilisant un déclencheur simple aussi. Placez simplement le morceau de code suivant dans une fenêtre.
<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>
C'était pratique pour voir la syntaxe de définition de 'ShowOnDisabled' via un setter' Style'. – mungflesh
Lorsque "IS" est désactivé? - Voulez-vous dire "n'est pas" désactivé? – 4imble
Il peut être judicieux d'afficher une info-bulle décrivant pourquoi vous ne pouvez pas toucher ce bouton. Si telle est l'intention de David, je pense que cela a beaucoup de sens. – reuscam
Ouais, je suppose, je n'étais pas difficile. J'étais vraiment intéressé :) – 4imble