如何始终在拇指上显示滑块的当前位置

时间:2015-02-20 18:32:12

标签: wpf slider tooltip alwayson

如何在拇指下方显示工具提示/标签的滑块控件,在使用/不使用用户拖动的情况下显示值(时间跨度)。

我试过AutoToolTipPlacement =" BottomRight" AutoToolTipPrecision =" 3"在我的滑块上。 但只有在我拖动拇指时才会显示工具提示。即使我使用按钮控件调用播放滑块,我也希望显示它。(如视频播放器)

重点是减少用户控件的大小,避免为计时器或位置添加额外的标签。

如果我的方向错误,请向我提出更好的建议。谢谢!

1 个答案:

答案 0 :(得分:12)

您可以重新设置Thumb的样式以显示此效果。以下是一个示例,其中显示圆Thumb,其父.Value的{​​{1}}属性显示在圆圈内。

Slider

我使用了<Style TargetType="{x:Type Thumb}"> <Setter Property="Focusable" Value="false"/> <Setter Property="OverridesDefaultStyle" Value="true"/> <Setter Property="Height" Value="20"/> <Setter Property="Width" Value="20"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type Thumb}"> <Canvas SnapsToDevicePixels="true"> <Grid Height="20" Width="20"> <Ellipse x:Name="Background" Fill="#FFA3A3A3" Height="20" Width="20" Stroke="#FFDADADA"/> <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="Black" FontSize="9" Text="{Binding Value, RelativeSource={RelativeSource AncestorType={x:Type Slider}}, Converter={StaticResource ConvertToIntegerConverter}}"/> </Grid> </Canvas> <ControlTemplate.Triggers> <Trigger Property="IsMouseOver" Value="true"> <Setter Property="Fill" TargetName="Background" Value="#FFDADADA"/> </Trigger> <Trigger Property="IsDragging" Value="true"> <Setter Property="Fill" TargetName="Background" Value="#FFF2F2F2"/> </Trigger> <Trigger Property="IsEnabled" Value="false"> <Setter Property="Fill" TargetName="Background" Value="#FFF2F2F2"/> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style> 来确保显示的值始终是整数,因为正常的IValueConverter属性是小数。您可能希望使用自己的转换器来正确格式化要显示的信息。

enter image description here

您可以通过重新设置.Value的样式,使文字或数字显示在任意位置。

修改

如果您想在实际拇指上方或下方显示文字,那么它对样式的影响相当小:

Thumb

enter image description here