Snap hilesi kullanışlıdır, ancak sınırlamaları vardır, örneğin yalnızca geçerli işaretlerin bir alt kümesini göstermek istiyorsanız. İki alternatifle başarılı oldum: ya bir tam sayıya bağlan ya da yeni değeri yuvarla. İşte birleşik bir örnek:
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"/>
Her ikisinin de performansının anlık hile ile karşılaştırılması hakkında hiçbir fikrim yok ama herhangi bir sorun yaşamadım *.
* Kaydırıcının değerini bir tür metin alanına da bağlarsanız, fareyi kullanıyorsanız, arada bir, metin alanında ondalık sayılar göstereceğini göreceksiniz. Aynı zamanda bir int'e bağlanırsanız, boş dize, kullanıcı arayüzünü kısa süreliğine tıkayan bir dönüştürme istisnasının atılmasına neden olur. Bu sorunlar benim çözüm aramam için yeterince ciddi olmadı.