Come posso garantire che la descrizione comando di un pulsante sia visibile solo quando il pulsante è disattivato?Visibilità tooltip WPF
A cosa è possibile associare la visibilità del tooltip?
Come posso garantire che la descrizione comando di un pulsante sia visibile solo quando il pulsante è disattivato?Visibilità tooltip WPF
A cosa è possibile associare la visibilità del tooltip?
È necessario impostare ToolTipService.ShowOnDisabled su True sul pulsante per rendere visibile la descrizione comando quando il pulsante è disattivato. È possibile associare ToolTipService.IsEnabled al pulsante per abilitare e disabilitare la descrizione comando.
Per chi vuole fare le stesse cose di me, ho postato l'intero xaml per il pulsante come risposta. Grazie per il vostro aiuto. –
Questa è la piena XAML del pulsante (basata sulla risposta di @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."/>
Una risposta leggermente modificata per quello che David Ward ha proposto. Ecco il codice completo
Aggiungi un convertitore di valore da resouces come questo
<Window.Resources>
<Converters:NegateConverter x:Key="negateConverter"/>
</Window.Resources>
Quindi definire seguente 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"/>
Il convertitore di valore simile a questa
[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();
}
}
Puoi fallo anche con un semplice trigger. Basta posizionare il seguente pezzo di codice in una finestra.
<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>
Questo è stato utile per vedere la sintassi per l'impostazione di 'ShowOnDisabled' tramite un setter' Stile'. – mungflesh
Quando "IS" è disabilitato? - intendevi "non è" disabilitato? – 4imble
Potrebbe avere senso visualizzare un suggerimento che descrive il motivo per cui non è possibile toccare questo pulsante. Se questo è l'intento di David, penso che abbia molto senso. – reuscam
Sì, credo, non ero schizzinoso. Ero sinceramente interessato :) – 4imble