Tengo un control deslizante de WPF cuyo valor mínimo = 0 y valor máximo = 50. Quiero mostrar tics en un intervalo de 5, pero haga que el control deslizante se ajuste a un intervalo de 1. ¿Esto es posible?Cómo ajustar los valores en un control deslizante de WPF, pero solo muestra un tilde para algunos de ellos
Respuesta
La propiedad Interval
no afecta a este comportamiento.
Utilice esta:
<Slider TickFrequency="5" IsSnapToTickEnabled="True" />
<Slider TickPlacement="TopLeft" Minimum="0" Maximum="50" TickFrequency="5" IsSnapToTickEnabled="False" SmallChange="1" />
Desactivar el ajuste a las garrapatas con IsSnapToTickEnabled="False"
y establecer SmallChange="1"
.
SmallChange determina el incremento al arrastrar el pulgar o al presionar las teclas de flecha. También puede controlar el incremento cuando el usuario hace clic en el deslizador (no en el pulgar). Para hacer que el pulgar salte, use LargeChange="10"
para saltar 10 unidades. Para hacer que el deslizador se mueva hacia donde hizo clic el usuario, use IsMoveToPointEnabled="True"
. Tenga en cuenta que IsMoveToPointEnabled colocará el pulgar en el incremento de SmallChange más cercano.
'SmallChange' en realidad no afecta el arrastre del pulgar en absoluto. Entonces esta solución no funciona. –
El WPF normal Slider
solo puede dibujar todas las marcas o ninguna.
Para evitar esta limitación, puede crear su propio Slider
o puede usar un truco: Desactive Slider
's TickBar
y dibuje el suyo.
<StackPanel>
<TickBar Maximum="{Binding Path=Maximum, ElementName=MySlider}"
Minimum="{Binding Path=Minimum, ElementName=MySlider}" TickFrequency="5" Height="4"
Fill="Black" ReservedSpace="11" />
<Slider Name="MySlider" Maximum="50" TickPlacement="None" IsSnapToTickEnabled="True" />
</StackPanel>
ReservedSpace
es el espacio combinado a la izquierda y derecha de los exteriores mayoría de las garrapatas, que es exactamente la misma que la anchura de la Thumb
's. Por lo general, es de 11 píxeles. Si usa un tema inusual o lo usa de otra manera, también debe ajustarlo en su nuevo TickBar
.
Esta solución tiene una desventaja: el Thumb
no será puntiagudo, porque el Slider
piensa que no tiene marcas. Si desea que el Thumb
a ser puntiagudo, tiene que engañar al Slider
dándole un TickBar
y luego colapsar más tarde:
<StackPanel>
<TickBar Maximum="{Binding Path=Maximum, ElementName=MySlider2}"
Minimum="{Binding Path=Minimum, ElementName=MySlider2}" TickFrequency="5"
Height="4" Fill="Black" ReservedSpace="11" />
<Slider Name="MySlider2" Maximum="50" TickPlacement="TopLeft"
IsSnapToTickEnabled="True"/>
</StackPanel>
Y luego en el constructor de sus Window
's (después de InitializeComponent()
):
this.Loaded += (sender, e) =>
{
var sliderTickBar = (MySlider2.Template.FindName("TopTick", MySlider2) as
System.Windows.Controls.Primitives.TickBar);
sliderTickBar.Visibility = Visibility.Collapsed;
};
He resuelto el mismo problema al mostrar solo los tics que quería estableciendo la propiedad Ticks, estableciendo IsSnapToTickEnabled en falso y usando el redondeo en el enlace del valor del control deslizante. En mi ejemplo, quiero mostrar el control deslizante de 0 a 100%, mostrar tics en incrementos de 5% y ajustar el paso al 1%.
El XAML:
<Slider Minimum="0" Maximum="100"
TickPlacement="BottomRight" Ticks="{Binding PercentTicks}"
TickFrequency="1" SmallChange="1" LargeChange="5"
Value="{Binding MyProperty, Converter={StaticResource PercentageConverter}}" />
la vista del modelo:
public double MyProperty
{
get { return myProperty; }
set
{
myProperty = Math.Round(value, 2);
OnPropertyChanged();
}
}
myProperty tiene un valor de 0 a 1, por lo que el redondeo a 2 dígitos da exactamente 1% paso! Ajuste de las garrapatas a incrementos del 5% se realiza en el constructor del modelo de vista:
var ticks = new DoubleCollection();
for (int i = 0; i <= 100; i+=5)
{
ticks.Add(i);
}
PercentTicks = ticks;
- 1. MySQL: solo muestra algunos valores una vez
- 2. ¿Hay un control deslizante javascript (jquery) que limite los valores independientemente de los valores de visualización?
- 3. ¿Cómo hacer que un control deslizante de WPF encaje solo en posiciones enteras discretas?
- 4. valores ponderados del control deslizante de javascript
- 5. WPF muestra el control en modo de depuración solo
- 6. WPF/Control deslizante de Silverlight marque los números
- 7. Personalizar un control deslizante
- 8. jQuery solo control deslizante - ¿cómo hacerlo?
- 9. WPF Impresión para ajustar página
- 10. ¿Cómo hacer un control deslizante img deslizante sin fin?
- 11. ¿C WinForms tiene un control deslizante?
- 12. jQuery ui control deslizante valores incorrectos?
- 13. Cómo modificar las etiquetas en un control deslizante KendoUI Ticks?
- 14. haciendo un control deslizante de jQuery simple
- 15. ¿Cómo hago para que el control deslizante jQuery UI se ajuste a los valores predefinidos?
- 16. Control deslizante Twin .net
- 17. WPF invocar un control
- 18. Control deslizante logarítmico en Mathematica
- 19. Control deslizante con intervalos múltiples
- 20. Cómo actualizar un control deslizante de la jQuery UI después de establecer los valores mínimo o máximo?
- 21. valores de visualización del control deslizante jquery ui
- 22. Diseñando un control de mapa WPF
- 23. ¿Cómo vincular múltiples valores a un solo WPF TextBlock?
- 24. Copie un control WPF programáticamente
- 25. ¿hay un control deslizante jquery ui para dispositivos móviles?
- 26. jQuery: Crear un control deslizante circular
- 27. Enlazando un RichTextBox a un control deslizante en C#
- 28. Desvanecimiento WPF en un control
- 29. Force TextBlock para ajustar en WPF ListBox
- 30. ¿Hay un control de asistente en WPF?
Esto no funciona. No es posible ajustar a otra frecuencia, entonces 5 ahora. –