如何才能使XAML Slider元素仅对允许的值进行捕捉?

时间:2009-06-17 08:24:55

标签: wpf xaml slider

我有一个最小值 0 且最大值 1 的滑块。

当我当前滑动它时,该值被设置为0到1之间的十进制值,例如的 0.2342343

但是,我希望该值仅为 0或1 (这样我的ViewModel属性只会在0或1时注册更改,而不是多次因为用户拖动它而0到1)。

如何使滑块值仅为0或1?我尝试过SmallChange,LargeChange和SnapsToDevicePixels,但这些都不起作用。

<Slider Name="TheLanguageIndexSlider"
        DockPanel.Dock="Bottom" 
        Minimum="0" 
        Maximum="1" 
        LargeChange="1"
        SmallChange="1"
        SnapsToDevicePixels="True"
        Width="100" 
        Margin="5" 
        Value="{Binding LanguageIndex}"
        HorizontalAlignment="Left"/>

2 个答案:

答案 0 :(得分:8)

IsSnapToTickEnabled设置为true,并为TickFrequency属性指定值1:

<Slider IsSnapToTickEnabled="True"
        Maximum="1" />

答案 1 :(得分:2)

来自msdn

<Slider Width="100" Value="50" Orientation="Horizontal" HorizontalAlignment="Left" 
    IsSnapToTickEnabled="True" Maximum="3" TickPlacement="BottomRight" 
    AutoToolTipPlacement="BottomRight" AutoToolTipPrecision="2" 
    Ticks="0, 1.1, 2.5, 3"/>

在你的情况下:

<Slider Name="TheLanguageIndexSlider"
    IsSnapToTickEnabled="True"
    Ticks="0, 1"
    DockPanel.Dock="Bottom" 
    Minimum="0" 
    Maximum="1" 
    LargeChange="1"
    SmallChange="1"
    SnapsToDevicePixels="True"
    Width="100" 
    Margin="5" 
    Value="{Binding LanguageIndex}"
    HorizontalAlignment="Left"/>