Как сделать привязку элемента 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"/>
Решение
Установите для 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"/>