Có thuộc tính trên thanh trượt được gọi là IsMoveToPointEnabled đặt thanh trượt thành giá trị chính xác nhưng chỉ khi bạn nhấp vào thanh trượt không cập nhật khi bạn kéo.
Để cập nhật khi bạn kéo, bạn phải tự cập nhật giá trị khi di chuyển chuột, phương pháp Track.ValueFromPoint cung cấp cho bạn giá trị chính xác, bản nhạc là một phần của mẫu thanh trượt.
Ví dụ
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();
}
}
Các OnPreviewMouseUp/Xuống ghi đè nắm bắt được chuột, tôi đã cố gắng VLC và điều đó không nắm bắt được chuột, do đó bạn có thể gỡ bỏ chúng nếu bạn muốn. Việc giữ chuột cho phép giá trị thay đổi ngay cả khi chuột rời khỏi điều khiển tương tự như cách thanh cuộn hoạt động.
Có lẽ bạn có thể cung cấp liên kết đến thanh trượt VLC và hành vi của nó là gì? – RBarryYoung
@RBarryYoung: [VLC] (http://www.videolan.org/) –
Không rõ bạn đang yêu cầu trợ giúp gì ở đây. Bạn có câu hỏi lập trình cụ thể không? –