Freqüentemente, eu quero um controle deslizante WPF que se comporte como o System.Windows.Forms.TrackBar de antigamente. Ou seja, eu quero um controle deslizante que vai de X a Y, mas só permite que o usuário o mova em posições inteiras discretas.
Como fazer isso no WPF, já que a propriedade Value do Slider é dupla?
Para aqueles que desejam se ajustar a posições específicas , você também pode usar a
Ticks
propriedade:fonte
O truque do snap é útil, mas tem limitações, por exemplo, se você quiser mostrar apenas um subconjunto de ticks válidos. Tive sucesso com duas alternativas: vincular a um inteiro ou arredondar o novo valor. Aqui está um exemplo combinado:
Não tenho ideia de como o desempenho de qualquer um se compara ao truque de encaixe, mas não tive nenhum problema *.
* Se você também vincular o valor do controle deslizante a um tipo de campo de texto, verá que, de vez em quando, se estiver usando o mouse, o campo de texto mostrará decimais. Se você também vincular a um int ao mesmo tempo, a string vazia fará com que uma exceção de conversão seja lançada, paralisando brevemente a IU. Esses problemas não foram graves o suficiente para que eu procurasse soluções.
fonte
Ticks
valores (0, 10, 20, ...) mas todos os valores intermediários (1, 2, ...) são válidos e podem ser selecionados, por exemplo, com as teclas de seta.IsSnapToTickEnabled
propriedade.