2013-03-23 50 views
7

是否有任何方法可以爲整個應用程序啓用ToolTipService.ShowOnDisabled = true,或者是否必須手動爲我的WPF應用程序中的每個單獨控件設置它?是否可以爲整個應用程序啓用ToolTipService.ShowOnDisabled = true

我不認爲重新設定每一個控件是一個很好的解決方案。

+0

您可以隨時創建'FrameworkElement',那不是適用於可視化樹的所有元素的風格? – 2013-03-23 14:56:22

回答

7

您可以覆蓋屬性元數據TooltipService.ShowOnDisabled和它的默認值設置爲true (by default value is false),這將適用於所有的控件在您的應用程序。

將這個代碼在你App.xaml.cs -

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

這是一個很好的解決方案 – sacha 2014-10-23 08:45:17

0

您可以使用VisualTreeHelper類(msdn)和靜態方法ToolTipService.SetShowOnDisabledmsdn)。

我創建了簡單的類遍歷所有元素並將ShowOnDisabled屬性設置爲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); 
     } 
    } 
} 

例子:

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