Как сделать привязку элемента XAML Slider только к разрешенным значениям? - PullRequest
2 голосов
/ 17 июня 2009

У меня есть слайдер с минимальным значением 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 ]

8 голосов
/ 17 июня 2009

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

<Slider IsSnapToTickEnabled="True"
        Maximum="1" />
2 голосов
/ 17 июня 2009

из 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"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...