2012-01-24 14 views
5

जैसे वॉल्यूम स्लाइडर मैं वॉल्यूम स्लाइडर की तलाश में हूं जो वीएलसी के स्लाइडर की तरह दिखता है और व्यवहार करता है। आप पर क्लिक करते हैं : Volume Slider CustomControl
लेकिन मैं यह भी समान व्यवहार चाहते हैं ...वीएलसी

क्या व्यवहार के बीच अंतर है:
enter image description here

मैं स्लाइडर शैली में के बारे में निम्नलिखित पोस्ट पाया स्लाइडर [डब्ल्यूपीएफ पर] और स्लाइडर क्षेत्र पर माउस को ले जाएं (जबकि माउस बटन अभी भी हो रहा है) इसे स्लाइडर पर माउस की स्थिति में भी स्लाइडर को ले जाना चाहिए।

मुझे यह नहीं पता था कि यह कैसे करें .. शायद मुझे स्लाइडर से अलग कुछ उपयोग करना चाहिए?

सहायता के लिए धन्यवाद!

+0

शायद आप एक वीएलसी स्लाइडर और उसके व्यवहार के लिए एक लिंक प्रदान कर सकते हैं? – RBarryYoung

+0

@RBarryYoung: [वीएलसी] (http://www.videolan.org/) –

+0

यह स्पष्ट नहीं है कि आप यहां सहायता के लिए क्या पूछ रहे हैं। क्या आपके पास एक विशिष्ट प्रोग्रामिंग प्रश्न है? –

उत्तर

7

स्लाइडर पर IsMoveToPointEnabled नामक स्लाइडर पर एक संपत्ति है जो स्लाइडर को सही मान पर सेट करती है लेकिन केवल जब आप इसे क्लिक करते हैं तो आप ड्रैग के रूप में अपडेट नहीं होते हैं।

जब आप खींचते हैं तो अपडेट करने के लिए आपको माउस को स्थानांतरित होने पर मूल्य को अपडेट करना होगा, विधि Track.ValueFromPoint आपको सही मान देता है, ट्रैक स्लाइडर टेम्पलेट का हिस्सा है।

उदाहरण

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(); 
    } 
} 

OnPreviewMouseUp/नीचे ओवरराइड माउस पर कब्जा, मैं वीएलसी की कोशिश की और कहा कि माउस पर कब्जा नहीं करता है तो आप उन्हें निकाल सकता है अगर आप चाहते थे। माउस को कैप्चर करने से वैल्यू बदलने की इजाजत मिलती है, भले ही माउस स्क्रॉलबार काम करता है जैसे नियंत्रण को छोड़ देता है।

+0

सही काम करता है! आपका बहुत बहुत धन्यवाद! – Ron

संबंधित मुद्दे