Слишком часто мне нужен слайдер WPF, который ведет себя как старый System.Windows.Forms.TrackBar. То есть мне нужен ползунок, который перемещается от X к Y, но позволяет пользователю перемещать его только в дискретных целочисленных позициях.
Как это сделать в WPF, если свойство Value на слайдере двойное?
Для тех, кто хочет привязаться к определенным позициям, вы также можете использовать
Ticks
свойство:источник
Уловка с привязкой удобна, но имеет ограничения, например, если вы хотите показать только подмножество допустимых отметок. Я добился успеха с двумя альтернативами: либо привязать к целому числу, либо округлить новое значение. Вот комбинированный пример:
Я понятия не имею, как производительность любого из них сравнивается с трюком с оснасткой, но у меня не было никаких проблем *.
* Если вы также привяжете значение ползунка к типу текстового поля, вы будете испытывать, что время от времени при использовании мыши в текстовом поле будут отображаться десятичные знаки. Если вы также привяжетесь к int в то же время, пустая строка вызовет исключение преобразования, которое ненадолго задержит пользовательский интерфейс. Эти проблемы были недостаточно серьезными, чтобы я мог искать решения.
источник
Ticks
значениям (0, 10, 20, ...), но все значения между ними (1, 2, ...) действительны и могут быть выбраны, например, клавишами со стрелками.IsSnapToTickEnabled
свойства.