मैं थोड़ी देर के लिए बीए के समाधान here के साथ काम कर रहा हूं और इसे बहुत उपयोगी ढूंढ रहा हूं। समस्या यह है कि जब मैं ड्रैग-एन-ड्रॉप आइटम को किसी अन्य सूची दृश्य नियंत्रण में खींचता हूं और मैं ड्रैग के दौरान "नीचे" स्क्रॉल करना चाहता हूं (इंडेक्स 30 से इंडेक्स 1 तक किसी आइटम को ले जाना), यह नहीं हो रहा है। मुझे सूची दृश्य में दृश्य वस्तुओं के शीर्ष पर खींचना होगा, मैन्युअल रूप से स्क्रॉल करें, फिर फिर से खींचें, आखिरकार जिस स्थिति में मैं चाहता हूं उसे समाप्त कर दूं। यह बहुत उपयोगकर्ता के अनुकूल नहीं है।WPF ListView डाटाबेस ड्रैग/ड्रॉप ऑटो स्क्रॉल
अब मुझे फ़ंक्शन (DragDropHelper.DropTarget_PreviewDragOver) मिला है, जिसे मैं परीक्षण करना चाहता हूं कि किस आइटम को खींच लिया जा रहा है, और मुझे वह मिल रहा है।
Dim pt As Point = e.GetPosition(DirectCast(Me.targetItemsControl, UIElement))
' Perform the hit test against a given portion of the visual object tree.
Dim result As HitTestResult = VisualTreeHelper.HitTest(Me.targetItemsControl, pt)
अब वहाँ से मैं इस दृश्य हिट
Dim lvi As ListViewItem = TryCast(GetDependencyObjectFromVisualTree(TryCast(result.VisualHit, DependencyObject), GetType(ListViewItem)), ListViewItem)
जो एक ListViewItem की है की DependencyProperty मिल सकती है। अब फंक्शन में DropTarget_PreviewDragOver मेरे पास "DraggedItem" है जो बीए के उदाहरण में चित्र प्रकार का है, लेकिन यह ListView से जुड़े पर्यवेक्षण चयन के आधार पर बदल सकता है। अब, माउस नियंत्रण पर है, इस पर निर्भर करता है कि मैं ListView ऊपर या नीचे खींचना चाहता हूं। मैं के साथ प्रयास किया है नीचे संयुक्त राष्ट्र तैयार गैर काम कोड
If lvi IsNot Nothing Then
If pt.Y <= 25 Then
Dim lv As ListView = TryCast(targetItemsControl, ListView)
If lv IsNot Nothing Then
Dim index As Integer = lv.Items.IndexOf(lvi)
If index > 1 Then
lv.ScrollIntoView(lv.Items(index - 1))
End If
End If
Else
If pt.Y >= Me.targetItemsControl.ActualHeight - 25 Then
Debug.Print("Scroll Down")
End If
End If
End If
कोई सही दिशा जब से अधिक आइटम खींचकर स्क्रॉल करने के लिए इस ItemsControl या ListView प्राप्त करने के लिए मुझे बात कर सकते हैं ??
धन्यवाद!
हाय, क्या आपको कोई समाधान मिला? चीयर्स –
क्षमा करें, मेरे पास अभी भी इसे देखने के लिए समय नहीं है। क्या आपने पोस्ट करने के बाद से कुछ पार किया है? – ScottN