不幸的是,没有简单的方法可以做到这一点。理想情况下,您应该在 FrameworkElement 上设置 ToolTipService.InitialShowDelay 并让它从那里传播,但事实证明这似乎不起作用。
相反,您可以在要设置的每种类型的控件上设置它,例如:
<Style TargetType="RibbonButton">
<Setter Property="ToolTipService.InitialShowDelay" Value="2000"/>
</Style>
<Style TargetType="RibbonToggleButton">
<Setter Property="ToolTipService.InitialShowDelay" Value="2000"/>
</Style>
<Style TargetType="RibbonDropDownButton">
<Setter Property="ToolTipService.InitialShowDelay" Value="2000"/>
</Style>
等等
虽然这是一种非常冗长的方法,但至少您只需在每种类型的控件上设置它,而不是每个控件本身 - 如果您在功能区中使用它,那么只有少数控件可以开始和。
如果您想更改值,为了省去一些麻烦,您可能需要使用资源值来构建上述代码:
<sys:Int32 x:Key="ToolTipInitialShowDelay">2000</sys:Int32>
<Style TargetType="RibbonButton">
<Setter Property="ToolTipService.InitialShowDelay"
Value="{StaticResource ToolTipInitialShowDelay}"/>
</Style>
<Style TargetType="RibbonToggleButton">
<Setter Property="ToolTipService.InitialShowDelay"
Value="{StaticResource ToolTipInitialShowDelay}"/>
</Style>
<Style TargetType="RibbonDropDownButton">
<Setter Property="ToolTipService.InitialShowDelay"
Value="{StaticResource ToolTipInitialShowDelay}"/>
</Style>
或者,如果您还没有使用 BasedOn 样式,您可以将其缩短为:
<Style x:Key="ToolTipDefaults">
<Setter Property="ToolTipService.InitialShowDelay" Value="2000"/>
</Style>
<Style TargetType="RibbonButton" BasedOn="{StaticResource ToolTipDefaults}"/>
<Style TargetType="RibbonToggleButton" BasedOn="{StaticResource ToolTipDefaults}"/>
<Style TargetType="RibbonDropDownButton" BasedOn="{StaticResource ToolTipDefaults}"/>
这种方法的限制是一个样式只能基于一个父样式,所以如果你已经在使用这个模式,你将无法做到这一点。