Hay una propiedad en el control deslizante llamada IsMoveToPointEnabled que establece el control deslizante en el valor correcto, pero solo cuando hace clic no se actualiza a medida que arrastra.
Para actualizar a medida que arrastra debe actualizar el valor usted mismo cuando se mueve el mouse, el método Track.ValueFromPoint le da el valor correcto, la pista es parte de la plantilla de controles deslizantes.
Ejemplo
public class DraggableSlider : Slider
{
public DraggableSlider()
{
this.IsMoveToPointEnabled = true;
}
private Track track;
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
track = Template.FindName("PART_Track", this) as Track;
}
protected override void OnMouseMove(MouseEventArgs e)
{
base.OnMouseMove(e);
if(e.LeftButton == MouseButtonState.Pressed && track != null)
{
Value = track.ValueFromPoint(e.GetPosition(track));
}
}
protected override void OnPreviewMouseDown(MouseButtonEventArgs e)
{
base.OnPreviewMouseDown(e);
((UIElement)e.OriginalSource).CaptureMouse();
}
protected override void OnPreviewMouseUp(MouseButtonEventArgs e)
{
base.OnPreviewMouseUp(e);
((UIElement)e.OriginalSource).ReleaseMouseCapture();
}
}
Los OnPreviewMouseUp/Abajo anulaciones de capturar el ratón, traté de VLC y que no captura el ratón por lo que podría eliminarlos si querías. La captura del mouse permite que el valor cambie incluso si el mouse deja el control de forma similar a como funcionan las barras de desplazamiento.
Quizás podría proporcionar un enlace a lo que es un control deslizante VLC y su comportamiento es? – RBarryYoung
@RBarryYoung: [VLC] (http://www.videolan.org/) –
No está claro con qué está pidiendo ayuda aquí. ¿Tienes una pregunta de programación específica? –