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.