2013-03-23 35 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); 
    } 
} 
相关问题