2008-10-06 13 views

Respuesta

82

Si establece sus marcas de graduación de la manera correcta, puede utilizar IsSnapToTickEnabled. Esto funcionó bastante bien para mí. Ver MSDN para más detalles.

136

La respuesta simple es que se tome ventaja de la IsSnapToTickEnabled y TickFrequency propiedades. Es decir, activar y desactivar la frecuencia de ticks en 1.

O, en otras palabras ... aprovechar los tics ... pero no necesariamente tiene que mostrar los tics que está ajustando a.

revisa el siguiente trozo de xaml:

<Slider 
    Orientation="Vertical" 
    Height="200" 
    Minimum="0" 
    Maximum="10" 
    Value="0" 
    IsSnapToTickEnabled="True" 
    TickFrequency="1" 
/> 
+1

Esta respuesta debería ser la aceptada. Funciona de maravilla. Gracias – Ashbay

+0

Gracias @Ashbay ... en ese momento, quería darle a alguien más crédito por la respuesta ... en lugar de simplemente marcar mi propia respuesta como aceptada. – cplotts

42

Para aquellos que quieren ajustar a posiciones específicas, también se puede utilizar el Ticks propiedad:

<Slider Minimum="1" Maximum="500" IsSnapToTickEnabled="True" Ticks="1,100,200,350,500" /> 
8

El truco complemento es útil, pero tiene limitaciones, por ejemplo, si desea mostrar sólo un subconjunto de garrapatas válidas. He tenido éxito con dos alternativas: enlazar a un número entero o redondear el nuevo valor. Aquí está un ejemplo combinado:

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"/> 

no tengo idea de cómo el desempeño de cualquiera de los dos se compara con el truco complemento pero no he tenido ningún problema *.

* Si también vincula el valor del control deslizante a un tipo de campo de texto, experimentará que, de vez en cuando si usa el mouse, el campo de texto mostrará decimales. Si también se enlaza a un int al mismo tiempo, la cadena vacía causará una excepción de conversión que se empantana brevemente en la interfaz de usuario. Estos problemas no han sido lo suficientemente graves como para buscar soluciones.

+0

¿Esto le permite al usuario tener también los otros valores en el control deslizante? ¿O solo permite que se elija el valor de los tics? Es una pregunta rara ... espero que entiendas lo que estoy preguntando. – JLott

+1

@JLott: aún puede ajustar los valores de 'Ticks' (0, 10, 20, ...) pero todos los valores intermedios (1, 2, ...) son válidos y se pueden seleccionar con, p. teclas de flecha. – mkjeldsen

+0

Oh limpio. No me di cuenta de eso ... ¡Gracias! – JLott

Cuestiones relacionadas