Ta sztuczka przyciągania jest przydatna, ale ma ograniczenia, na przykład jeśli chcesz pokazać tylko podzbiór ważnych tików. Odniosłem sukces z dwiema alternatywami: albo powiązanie z liczbą całkowitą, albo zaokrąglenie nowej wartości. Oto połączony przykład:
public int MyProperty { get; set; }
private void slider1_ValueChanged(object sender,
RoutedPropertyChangedEventArgs<double> e)
{
(sender as Slider).Value = Math.Round(e.NewValue, 0);
}
<Slider
Name="slider1"
TickPlacement="TopLeft"
AutoToolTipPlacement="BottomRight"
ValueChanged="slider1_ValueChanged"
Value="{Binding MyProperty}"
Minimum="0" Maximum="100" SmallChange="1" LargeChange="10"
Ticks="0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100"/>
Nie mam pojęcia, jak wydajność któregokolwiek z nich wypada w porównaniu z trikiem, ale nie miałem żadnych problemów *.
* Jeśli również przypiszesz wartość suwaka do typu pola tekstowego, zauważysz, że co jakiś czas, jeśli używasz myszy, pole tekstowe będzie pokazywać dziesiętne. Jeśli jednocześnie utworzysz powiązanie z intem, pusty ciąg spowoduje zgłoszenie wyjątku konwersji, który na krótko spowalnia interfejs użytkownika. Te problemy nie były na tyle poważne, żebym szukał rozwiązań.