2012-04-28 19 views
5

मैं एक WPF स्क्रॉलव्यूअर का उपयोग कर रहा हूं। मैं वास्तव में इसे एक स्पर्श डिवाइस पर बातचीत करना पसंद करूंगा जहां आप इसे बहुत दूर खींचते समय धीरे-धीरे जगह पर वापस आ जाते हैं।क्या स्क्रोलव्यूयर "उछाल" बनाने का कोई आसान तरीका है? कुछ नियंत्रणों को होस्ट करने के लिए

यह एक स्क्रॉलबार नहीं है - मैं मैनुअल माउस क्लिक करें और खींचें इस कोड का उपयोग के साथ स्क्रॉल है:

Point currentPoint = e.GetPosition(this); 

// Determine the new amount to scroll. 
Point delta = new Point(scrollStartPoint.X - currentPoint.X, scrollStartPoint.Y - currentPoint.Y); 

if (Math.Abs(delta.X) < PixelsToMoveToBeConsideredScroll && 
    Math.Abs(delta.Y) < PixelsToMoveToBeConsideredScroll) 
    return; 

scrollTarget.X = scrollStartOffset.X + delta.X; 
scrollTarget.Y = scrollStartOffset.Y + delta.Y; 

// Scroll to the new position. 
sv.ScrollToHorizontalOffset(scrollTarget.X); 
sv.ScrollToVerticalOffset(scrollTarget.Y); 

वहाँ एक आसान तरीका यह करने के लिए है? वर्तमान में यह सिर्फ सामान्य स्क्रॉलिंग टेक्स्टबॉक्स की तरह कार्य करता है और न ही अपनी सामान्य सीमा से बाहर खींच जाएगा, न ही धीरे-धीरे वापस आराम करेगा।

+0

देखें http://aniscrollviewer.codeplex.com/ - मैंने कोड को चेक नहीं किया है, लेकिन यह कहता है कि उसने एनीमेशन अपडेट से स्थिति अपडेट करने के लिए मानक 'स्क्रॉल व्यूअर' बढ़ा दिया है। – ChrisF

+0

धन्यवाद @ChrisF लेकिन वह उदाहरण केवल चिकनी स्क्रॉलिंग है, और किसी भी प्रकार का "ड्रैग ओवर ड्रैग" इंटरैक्शन नहीं देता है, न ही आसानी से अपनी सामान्य सीमाओं के अंदर उछाल देता है: | – kvanberendonck

+0

आह - क्या आप एक अलग आसान कार्य का उपयोग नहीं कर सकते? – ChrisF

उत्तर

1

यदि आप टच डिवाइस पर काम कर रहे हैं, तो Microsoft SurfaceScrollViewer (http://msdn.microsoft.com/en-us/library/microsoft.surface.presentation.controls.surfacescrollviewer.aspx) देखें। इसमें पहले से ही यह व्यवहार बनाया गया है।

टच इंटरैक्शन सही करना मुश्किल है, किसी और को ढूंढना आसान है जो पहले से ही कर चुका है। ;-)

+0

दुर्भाग्यवश यह टच डिवाइस के लिए नहीं है, यह डेस्कटॉप उपयोग के लिए है। – kvanberendonck

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

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