Der Snap-Trick ist praktisch, weist jedoch Einschränkungen auf, z. B. wenn Sie nur eine Teilmenge gültiger Ticks anzeigen möchten. Ich hatte Erfolg mit zwei Alternativen: entweder an eine ganze Zahl binden oder den neuen Wert runden. Hier ist ein kombiniertes Beispiel:
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"/>
Ich habe keine Ahnung, wie die Leistung von beiden im Vergleich zum Snap-Trick ist, aber ich hatte keine Probleme *.
* Wenn Sie auch bind der Wert des Schiebers auf eine Art von Textfeld erleben Sie , dass jeder einmal in einer Weile mit der Maus , wenn verwendet, wird das Textfeld Dezimalstellen zeigen. Wenn Sie gleichzeitig auch an ein int binden, wird durch die leere Zeichenfolge eine Konvertierungsausnahme ausgelöst, die die Benutzeroberfläche kurzzeitig blockiert. Diese Probleme waren nicht schwerwiegend genug, um nach Lösungen zu suchen.