Wpf滑块中心刻度值

时间:2013-12-21 14:33:21

标签: wpf slider

我有一个最小值为-127且最大值为127的滑块。启动时,滑块位于中间,因此值为0。 是否可以在勾号处显示文本0,以便您可以看到中心的位置?

<Slider Margin="3"
            Minimum="-127"
            Maximum="127"
            TickPlacement="BottomRight"
            TickFrequency="2"
            IsSnapToTickEnabled="True"
            SmallChange="1" />

这是我滑块的图片。

slider with ticks, shown 0 value on center ticks

2 个答案:

答案 0 :(得分:0)

我认为单独使用滑块没有办法,我会尝试:

<StackPanel HorizontalAlignment="Center">
    <Slider Grid.Row="2" Margin="3" Width="150"
        Minimum="-127"
        Maximum="127"
        TickPlacement="BottomRight"
        TickFrequency="2"
        IsSnapToTickEnabled="True"
        SmallChange="1" />
    <TextBlock Text="0" HorizontalAlignment="Center" Margin="0,-5,0,0"/>
</StackPanel>
编辑:我刚刚意识到你并不陌生,所以你必须想到这个微不足道的解决方案......

答案 1 :(得分:0)

这就是我得到我想要的东西。我使用Slider下的DockPanel来布局TextBlocks。 一个用于中心0,一个用于设置最大值,另一个用于设置最小值。

我找不到任何能够达到我想要的其他解决方案。如果有,请在此处发布:)

XAML:

<StackPanel Orientation="Vertical">
    <Slider x:Name="SpeedSlider"
                    Margin="3"
                    Foreground="DarkGray"
                    Value="{Binding SliderValue, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                    Maximum="{Binding Steps,
                                                    Mode=TwoWay,
                                                    UpdateSourceTrigger=PropertyChanged}"
                    Minimum="{Binding MinSteps,
                                                    Mode=TwoWay,
                                                    UpdateSourceTrigger=PropertyChanged}"
                    SmallChange="2"
                    TickFrequency="4"
                    TickPlacement="BottomRight"
                    ToolTip="{Binding ElementName=SpeedSlider,Path=Value}">
    </Slider>
    <DockPanel>
        <TextBox DockPanel.Dock="Left"
                         Text="{Binding MinSteps,
                                                    Mode=TwoWay,
                                                    UpdateSourceTrigger=PropertyChanged}"
                         Width="100"
                         Background="Transparent"
                         IsReadOnly="True"
                         BorderThickness="0" />
        <TextBox DockPanel.Dock="Right"
                         Text="{Binding Steps,
                                                    Mode=TwoWay,
                                                    UpdateSourceTrigger=PropertyChanged}"
                         Width="100"
                         HorizontalContentAlignment="Right"
                         Background="Transparent"
                         IsReadOnly="True"
                         BorderThickness="0" />
        <TextBlock DockPanel.Dock="Right"
                             Text="0"
                             HorizontalAlignment="Center" />
    </DockPanel>
</StackPanel>

图像:

slider with text