如何为工具提示设置样式的 InitialShowDelay?
How to set the InitialShowDelay of a style for a tooltip?
我正在尝试为工具提示设置样式延迟。为此,我使用了依赖项 属性.
这是风格:
<Style TargetType="ToolTip" x:Key="ToolTipDefaultStyle">
<Setter Property="ToolTipService.ShowOnDisabled" Value="true"/>
<Setter Property="ToolTipService.InitialShowDelay" Value="{Binding PlacementTarget.(ap:ToolTipAttachedProperty.InitialShowDelay), RelativeSource={RelativeSource AncestorType=ToolTip}}"/>
<Setter Property="ToolTipService.ShowDuration" Value="{Binding PlacementTarget.(ap:ToolTipAttachedProperty.ShowDuration), RelativeSource={RelativeSource AncestorType=ToolTip}}"/>
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding PlacementTarget.(ap:ToolTipAttachedProperty.Texto), RelativeSource={RelativeSource AncestorType=ToolTip}}" MaxWidth="400" TextWrapping='Wrap' />
</StackPanel>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
这是观点:
<StackPanel Name="spTiposIva" Orientation="Vertical" Margin="5,0,0,0"
ap:ToolTipAttachedProperty.Texto="{Binding TiposIvaTooltip}"
ap:ToolTipAttachedProperty.InitialShowDelay="10000"
ap:ToolTipAttachedProperty.ShowDuration="{StaticResource TooltipDisplayTime}">
<StackPanel.ToolTip>
<ToolTip Style="{StaticResource ToolTipDefaultStyle}"/>
</StackPanel.ToolTip>
</StackPanel>
文本显示正确,但初始显示延迟是默认值,不会延迟 10 秒。
如何设置延迟?
谢谢。
其他属性,例如ShowOnDisabled
也不行。这是因为您在 ToolTip
本身或以它为目标的样式中设置了附加的 ToolTipService
属性。相反,您必须在工具提示关联的控件上设置这些属性,而不是工具提示本身。
如果您直接将它们附加到 StackPanel
或以适合它的样式,它将起作用,例如:
<StackPanel Name="spTiposIva" Orientation="Vertical" Margin="5,0,0,0"
ToolTipService.ShowOnDisabled="True"
ToolTipService.InitialShowDelay="10000"
ToolTipService.ShowDuration="{StaticResource TooltipDisplayTime}"
ToolTip="Binding TiposIvaTooltip">
<!-- ...your content. -->
</StackPanel>
您可以直接将工具提示服务属性附加到控件。您不需要为 ToolTipService
已经提供的相同内容创建自己的附加属性。这似乎是一种间接级别,但您可以做到。您可以在下面找到有效样式的示例。
在上面的示例中,您可以拆分 ToolTip
样式并为 StackPanel
创建样式。
<Style TargetType="{x:Type StackPanel}" x:Key="StackPanelDefaultStyle">
<Setter Property="ToolTipService.ShowOnDisabled" Value="true"/>
<Setter Property="ToolTipService.InitialShowDelay" Value="{Binding (ap:ToolTipAttachedProperty.InitialShowDelay), RelativeSource={RelativeSource Self}}"/>
<Setter Property="ToolTipService.ShowDuration" Value="{Binding (ap:ToolTipAttachedProperty.ShowDuration), RelativeSource={RelativeSource Self}}"/>
</Style>
<Style TargetType="ToolTip" x:Key="ToolTipDefaultStyle">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding PlacementTarget.(ap:ToolTipAttachedProperty.Texto), RelativeSource={RelativeSource AncestorType=ToolTip}}" MaxWidth="400" TextWrapping='Wrap' />
</StackPanel>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
另一种方法可能是创建其他控件样式所基于的基本样式。它与 StackPanel
的样式相同,但将 FrameworkElement
作为目标类型应用于所有控件。
<Style TargetType="{x:Type FrameworkElement}" x:Key="FrameworkElementDefaultStyle">
我正在尝试为工具提示设置样式延迟。为此,我使用了依赖项 属性.
这是风格:
<Style TargetType="ToolTip" x:Key="ToolTipDefaultStyle">
<Setter Property="ToolTipService.ShowOnDisabled" Value="true"/>
<Setter Property="ToolTipService.InitialShowDelay" Value="{Binding PlacementTarget.(ap:ToolTipAttachedProperty.InitialShowDelay), RelativeSource={RelativeSource AncestorType=ToolTip}}"/>
<Setter Property="ToolTipService.ShowDuration" Value="{Binding PlacementTarget.(ap:ToolTipAttachedProperty.ShowDuration), RelativeSource={RelativeSource AncestorType=ToolTip}}"/>
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding PlacementTarget.(ap:ToolTipAttachedProperty.Texto), RelativeSource={RelativeSource AncestorType=ToolTip}}" MaxWidth="400" TextWrapping='Wrap' />
</StackPanel>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
这是观点:
<StackPanel Name="spTiposIva" Orientation="Vertical" Margin="5,0,0,0"
ap:ToolTipAttachedProperty.Texto="{Binding TiposIvaTooltip}"
ap:ToolTipAttachedProperty.InitialShowDelay="10000"
ap:ToolTipAttachedProperty.ShowDuration="{StaticResource TooltipDisplayTime}">
<StackPanel.ToolTip>
<ToolTip Style="{StaticResource ToolTipDefaultStyle}"/>
</StackPanel.ToolTip>
</StackPanel>
文本显示正确,但初始显示延迟是默认值,不会延迟 10 秒。
如何设置延迟?
谢谢。
其他属性,例如ShowOnDisabled
也不行。这是因为您在 ToolTip
本身或以它为目标的样式中设置了附加的 ToolTipService
属性。相反,您必须在工具提示关联的控件上设置这些属性,而不是工具提示本身。
如果您直接将它们附加到 StackPanel
或以适合它的样式,它将起作用,例如:
<StackPanel Name="spTiposIva" Orientation="Vertical" Margin="5,0,0,0"
ToolTipService.ShowOnDisabled="True"
ToolTipService.InitialShowDelay="10000"
ToolTipService.ShowDuration="{StaticResource TooltipDisplayTime}"
ToolTip="Binding TiposIvaTooltip">
<!-- ...your content. -->
</StackPanel>
您可以直接将工具提示服务属性附加到控件。您不需要为 ToolTipService
已经提供的相同内容创建自己的附加属性。这似乎是一种间接级别,但您可以做到。您可以在下面找到有效样式的示例。
在上面的示例中,您可以拆分 ToolTip
样式并为 StackPanel
创建样式。
<Style TargetType="{x:Type StackPanel}" x:Key="StackPanelDefaultStyle">
<Setter Property="ToolTipService.ShowOnDisabled" Value="true"/>
<Setter Property="ToolTipService.InitialShowDelay" Value="{Binding (ap:ToolTipAttachedProperty.InitialShowDelay), RelativeSource={RelativeSource Self}}"/>
<Setter Property="ToolTipService.ShowDuration" Value="{Binding (ap:ToolTipAttachedProperty.ShowDuration), RelativeSource={RelativeSource Self}}"/>
</Style>
<Style TargetType="ToolTip" x:Key="ToolTipDefaultStyle">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding PlacementTarget.(ap:ToolTipAttachedProperty.Texto), RelativeSource={RelativeSource AncestorType=ToolTip}}" MaxWidth="400" TextWrapping='Wrap' />
</StackPanel>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
另一种方法可能是创建其他控件样式所基于的基本样式。它与 StackPanel
的样式相同,但将 FrameworkElement
作为目标类型应用于所有控件。
<Style TargetType="{x:Type FrameworkElement}" x:Key="FrameworkElementDefaultStyle">