Как сделать привязку элемента XAML Slider только к разрешенным значениям?

StackOverflow https://stackoverflow.com/questions/1005765

  •  05-07-2019
  •  | 
  •  

Вопрос

У меня есть слайдер с минимальным значением 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"/>
Это было полезно?

Решение

Установите для IsSnapToTickEnabled значение true и присвойте значение 1 свойству TickFrequency :

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

Другие советы

от 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"/>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top