wpf: come mostrare la descrizione comando quando il pulsante è disabilitato dal comando?


162

Sto cercando di mostrare una descrizione comando indipendentemente dallo stato dei pulsanti, ma questo non sembra fare il trucco:

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

Come posso mostrare la descrizione comando quando il pulsante è disabilitato a causa del comando. CanExecute restituisce false?

Nota:

ToolTipService.ShowOnDisabled = "true" funziona come un incantesimo. Il motivo per cui non ha funzionato nel mio esempio è perché lo stile associato al pulsante ridefinisce la piastra di controllo e ha disattivato il hit-test sul pulsante quando il pulsante è stato disabilitato (IsHitTestVisible = false). La riattivazione del hit test nella piastra di controllo ha fatto apparire la descrizione comandi quando il pulsante era disabilitato.


possibile duplicato di WPF Tooltip Visibility
— GU.

Sto usando ToolTipService.ShowOnDisabled, ma non funziona.
— Marius,

1
Elimina questa domanda. Ho fatto un piccolo progetto di test e ToolTipService.ShowOnDisabled funziona bene.
— Marius,

15
Sono contento che questa domanda non sia stata cancellata. Ha risposto rapidamente e accuratamente a una domanda / problema che ho avuto, che è la ragione esatta per cui vengo a SO in primo luogo. Grazie per essere Lazy (tm) Marius. :-)
— Jere.Jones,

Mi scusi, c'è un modo in cui posso mostrarlo solo quando disabilitato?
— avvocato

Risposte:



26

Questo è un buon metodo da aggiungere al tuo codice di avvio

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

Puoi spiegare cosa fa questo? Dire che è un buon metodo all'avvio non spiega.
— Rabbino

Assicura che per qualsiasi classe ereditata da Control, i tooltip vengano mostrati anche se l'istanza di Control è disabilitata
— sacha barber

3
È ironico che gli utenti abbiano più bisogno della descrizione del comando quando il controllo è disabilitato, poiché vogliono sapere perché il controllo è disabilitato. Questo è un buon esempio di default in WPF che non è corretto nella maggior parte delle volte. Quindi vale la pena cambiarlo.
— Contango

2

Rendi visibile la descrizione comandi per TUTTI i pulsanti e le caselle di controllo disabilitati:

<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>

Le BasedOn=...impedisce che si perdono tutti gli altri stili che sono stati applicati alla casella di controllo o pulsante prima. Se non si utilizzano altri stili per pulsante o casella di controllo, è possibile rimuovere le BasedOn=..parti

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.