2013-03-23 5 views
7

C'è un modo per abilitare ToolTipService.ShowOnDisabled = true per l'intera applicazione o devo impostarlo manualmente per ogni singolo controllo nella mia applicazione WPF?È possibile abilitare ToolTipService.ShowOnDisabled = true per l'intera applicazione

Non penso che il restyling di ogni controllo sia una buona soluzione.

+0

È sempre possibile creare uno stile per 'FrameworkElement', non sarebbe che applica a tutti gli elementi della struttura ad albero visuale? –

risposta

7

È possibile sostituire i metadati di proprietà per TooltipService.ShowOnDisabled e impostarne il valore di default per true (by default value is false) e si applicherà a tutti i controlli nell'applicazione.

mettere questo codice nel tuo App.xaml.cs -

static App() 
    { 
     ToolTipService.ShowOnDisabledProperty.OverrideMetadata(typeof(Control), 
        new FrameworkPropertyMetadata(true)); 
    } 
+1

Questo è un piacere, ottima soluzione – sacha

0

È possibile utilizzare la classe VisualTreeHelper (msdn) e il metodo statico ToolTipService.SetShowOnDisabled (msdn).

Ho creato una classe semplice per scorrere tutti gli elementi e impostare la proprietà ShowOnDisabled su True.

class ToolTipServiceHelper 
{  
    public void EnumVisual(Visual myVisual) 
    { 
     for (int i = 0; i < VisualTreeHelper.GetChildrenCount(myVisual); i++) 
     { 
      Visual childVisual = (Visual)VisualTreeHelper.GetChild(myVisual, i);     
      ToolTipService.SetShowOnDisabled(childVisual, true); 
      EnumVisual(childVisual); 
     } 
    } 
} 

Esempio di utilizzo:

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
     ToolTipServiceHelper ttsh = new ToolTipServiceHelper(); 
     ttsh.EnumVisual(this.Content as Visual); 
    } 
}