2013-03-23 13 views
7

Czy jest jakiś sposób włączenia ToolTipService.ShowOnDisabled = true dla całej aplikacji lub czy muszę ustawić ją ręcznie dla każdej kontrolki w mojej aplikacji WPF?Czy można włączyć ToolTipService.ShowOnDisabled = true dla całej aplikacji?

Nie sądzę, że zmiana każdej kontroli jest dobrym rozwiązaniem.

+0

zawsze można utworzyć styl 'FrameworkElement', które nie odnoszą się do wszystkich elementów w drzewie wizualnych? –

Odpowiedz

7

Można zastąpić metadanych właściwości dla TooltipService.ShowOnDisabled i ustawić jej wartość domyślną true (by default value is false) i będzie mieć zastosowanie do wszystkich kontroli w aplikacji.

Umieść ten kod w swoim App.xaml.cs -

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

Ths działa gratka, świetne rozwiązanie – sacha

0

Można użyć VisualTreeHelper klasę (msdn) i metody statycznej ToolTipService.SetShowOnDisabled (msdn).

Stworzyłem prostą klasę do iteracji przez wszystkie elementy i ustawię właściwość ShowOnDisabled na 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); 
     } 
    } 
} 

Przykład użycia:

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