是否可以为整个应用程序启用ToolTipService.ShowOnDisabled = true

时间:2013-03-23 14:01:35

标签: c# wpf tooltip

有没有办法为整个应用程序启用ToolTipService.ShowOnDisabled = true,还是必须手动为我的WPF应用程序中的每个控件设置它?

我不认为重新设计每个控件都是一个很好的解决方案。

2 个答案:

答案 0 :(得分:8)

您可以覆盖ToolTipService.ShowOnDisabled的属性元数据,并将其默认值设置为true (by default value is false),它将应用于您应用中的所有控件。

将此代码放入App.xaml.cs

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

答案 1 :(得分: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);
    }
}