是否可以启用ToolTipService ?整个应用程序的ShowOnDisabled=true

本文关键字:应用程序 ShowOnDisabled true 启用 ToolTipService 是否 | 更新日期: 2023-09-27 18:05:40

是否有任何方法可以为整个应用程序启用ToolTipService.ShowOnDisabled = true,或者我必须手动为WPF应用程序中的每个控件设置它?

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

是否可以启用ToolTipService ?整个应用程序的ShowOnDisabled=true

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

将此代码放入您的App.xaml.cs

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

您可以使用VisualTreeHelper类(msdn)和静态方法ToolTipService.SetShowOnDisabled (msdn)。

我创建了一个简单的类来遍历所有元素,并将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);
    }
}