Вы можете попробовать обработчик ValueChanged
.
private void Slider_ValueChanged(
object sender,
RoutedPropertyChangedEventArgs<double> e)
{
var slider = sender as Slider;
var tick = slider.Ticks
.Where(xx => Math.Abs(e.NewValue - xx) < slider.LargeChange);
if (tick.Any())
{
var newValue = tick.First();
if (e.NewValue != newValue)
{
DispatcherInvoke(() => slider.Value = newValue);
}
}
}
Пример Slider
имел следующие настройки:
<Slider Ticks="100.0"
Minimum="0.0"
Maximum="500.0"
Value="75.0"
SmallChange="1.0"
LargeChange="10.0"
ValueChanged="Slider_ValueChanged" />