2009-07-01 9 views
6

Voglio mostrare il testo di un suggerimento di qualsiasi controllo nella mia app wpf all'interno di una barra di stato, quando un tooltip sta per essere aperto."Intercetta" l'apertura di qualsiasi tooltip a livello di intero

Ovviamente potrei provare a ricorrere in modo ricorsivo attraverso tutti i controlli figlio della finestra principale e impostare l'evento ToolTipOpening sempre allo stesso metodo. Ma c'è un modo più semplice?

Qualcosa come un evento Application.Current.AnyToolTipOpening?

risposta

9

Certo, provate questo:

EventManager.RegisterClassHandler(typeof(FrameworkElement), FrameworkElement.ToolTipOpeningEvent, new ToolTipEventHandler(ToolTipHandler)); 

che registra un gestore per tutte le classi che derivano da FrameworkElement.

tuo metodo del gestore potrebbe essere simile a questo:

private void ToolTipHandler(object sender, ToolTipEventArgs e) { 
     // To stop the tooltip from appearing, mark the event as handled 
     e.Handled = true; 
     FrameworkElement source = e.Source as FrameworkElement; 
     if (source != null) { 
      MessageBox.Show(source.ToolTip.ToString()); // or whatever you like 
     } 
    } 
1

grazie, che hanno lavorato. Inoltre, per far scomparire il testo della barra di stato quando il mouse lascia il controllo con il suggerimento:

EventManager.RegisterClassHandler(typeof(FrameworkElement), 
        MouseLeaveEvent, new MouseEventHandler(ClearText)); 
Problemi correlati