Thủ thuật snap rất tiện dụng nhưng có những hạn chế, chẳng hạn như nếu bạn muốn chỉ hiển thị một tập hợp con các tick hợp lệ. Tôi đã thành công với hai lựa chọn thay thế: hoặc liên kết với một số nguyên hoặc làm tròn giá trị mới. Đây là một ví dụ kết hợp:
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"/>
Tôi không biết hiệu suất của cả hai như thế nào so với thủ thuật chụp nhanh nhưng tôi không gặp bất kỳ khó khăn nào *.
* Nếu bạn cũng liên kết giá trị của thanh trượt với một loại trường văn bản, bạn sẽ thấy rằng, thỉnh thoảng nếu sử dụng chuột, trường văn bản sẽ hiển thị số thập phân. Nếu bạn cũng liên kết với một int đồng thời, chuỗi trống sẽ khiến một ngoại lệ chuyển đổi được ném ra khiến giao diện người dùng bị sa lầy trong thời gian ngắn. Những vấn đề này chưa đủ nghiêm trọng để tôi tìm kiếm giải pháp.