2012-01-24 30 views
5

Tôi đang tìm kiếm Thanh trượt âm lượng trông và hoạt động giống như thanh trượt của VLC.
enter image description hereỔ trượt âm lượng như VLC

Tôi tìm thấy bài sau đây về cách tạo kiểu trượt: Volume Slider CustomControl
nhưng tôi cũng muốn các hành vi tương tự ...

sự khác biệt giữa hành vi là gì: Khi bạn bấm vào trượt [tại WPF] và di chuyển chuột trên khu vực thanh trượt (trong khi nút chuột vẫn đang được giữ) nó sẽ di chuyển thanh trượt cũng đến vị trí của con chuột trên thanh trượt.

Tôi không thể tìm thấy cách thực hiện .. có lẽ tôi nên sử dụng thứ gì đó khác với Thanh trượt?

Cảm ơn sự giúp đỡ!

+0

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

+0

@RBarryYoung: [VLC] (http://www.videolan.org/) –

+0

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? –

Trả lời

7

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.

+0

Hoạt động hoàn hảo! Cảm ơn nhiều! – Ron

Các vấn đề liên quan