5

मैं वास्तव में एक सरल खींचें हो और ड्रॉप नमूना सिल्वरलाइट 4.सिल्वरलाइट DragDrop.DoDragDrop()

यहाँ में काम के लिए संघर्ष कर रहा है कि मैं क्या है:

XAML

<UserControl x:Class="TestDragDrop.MainPage" Width="350" Height="200" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <Grid Background="White"> 
     <Rectangle Margin="50,50,200,50" Fill="Orange" MouseLeftButtonDown="r1_MouseLeftButtonDown" /> 
     <Rectangle Margin="200,50,50,50" Fill="Orange" AllowDrop="true" Drop="r2_Drop" /> 
    </Grid> 
</UserControl> 

कोड-पीछे

public partial class MainPage : UserControl 
{ 
    public MainPage() 
    { 
     InitializeComponent(); 
    } 

    private void r1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
    { 
     DragDrop.DoDragDrop((Rectangle)sender, "test data", DragDropEffects.All, DragDropKeyStates.LeftMouseButton); 
    } 

    private void r2_Drop(object sender, System.Windows.DragEventArgs e) 
    { 
     MessageBox.Show("Drop: " + e.Data.ToString()); 
    } 
} 

DragDrop.DragDropCompleted घटना आग लगती है, हालांकि प्रेषक पैरामीटर हमेशा शून्य होता है और घटना तर्क वास्तव में घटना के बारे में अधिक जानने में मेरी सहायता नहीं करता है।

मैंने किसी भी भाग्य के साथ IAcceptDrop को लागू करने वाले कस्टम नियंत्रण का उपयोग करने का भी प्रयास किया है।

साथ ही, जब मैं ड्रैग ऑपरेशन शुरू करता हूं, तो मुझे कोई दृश्य प्रतिक्रिया नहीं होती है कि कुछ हो रहा है (कर्सर या कुछ भी नहीं बदला गया है)। क्या वहाँ कुछ गड़बड़ है?

मेरे द्वारा प्राप्त किए गए सभी नमूने ड्रैगड्रॉप लक्ष्य का उपयोग करते हैं। क्या मैं उपयोग करना चाहता हूं कि विशेष प्रकार के नियंत्रण के लिए एक DragDropTarget लागू करने का मेरा एकमात्र उपाय है?

उत्तर

5

सिल्वरलाइट 4 की ड्रैग और ड्रॉप सुविधा को एक ही परिदृश्य पर लक्षित किया गया था: अपने कंप्यूटर से एक सिल्वरलाइट एप्लिकेशन पर फ़ाइल खींचें। उस पर कुछ भी आपको टूलकिट के ड्रैगड्रॉप लक्ष्य नियंत्रणों का उपयोग करने की आवश्यकता है। टिम ह्यूअर से खींचें/ड्रॉप सुविधा का विवरण: http://timheuer.com/blog/archive/2009/11/18/whats-new-in-silverlight-4-complete-guide-new-features.aspx

कुछ परिदृश्यों के लिए, आप अपने Silverlight आवेदन करने के लिए पर अपने डेस्कटॉप या फ़ाइल एक्सप्लोरर से एक फ़ाइल खींचें करने के लिए सक्षम होने के लिए करना चाहता था हो सकता है। द्वारा इस रिलीज में UIElement पर AllowDrop विशेषता को सक्षम करने के बाद, अब आप उन परिदृश्यों को समायोजित कर सकते हैं।

दूसरे शब्दों में, उन्होंने आपको वास्तव में कोड में अपना खुद का ड्रैग ऑपरेशन बनाने की क्षमता देने की योजना नहीं बनाई थी।

अधिकांश, यदि सभी नहीं, इस URL से "सीमाओं" खंड की अभी भी SL4 RTW पर लागू होते हैं: http://www.ningzhang.org/2009/11/28/silverlight-drag-and-drop-api/

  • कोई ड्रॉप स्रोत का समर्थन (QueryContinueDrag & GiveFeedback) है।
  • DragEventArgs में कोई DragDropEffects या DragDropKeyStates नहीं है।
  • ड्रैग किए गए ऑब्जेक्ट या DragDropEffects के लिए कोई दृश्य नहीं है।
  • केवल फ़ाइल ड्रैग और ड्रॉप समर्थित है: सभी ड्रॉप लक्ष्य ईवेंट केवल तभी आग लगती है जब फ़ाइलों को खींचा जा रहा है और गिरा दिया गया। IDataObject, DataObject और DragEventArgs.Data केवल एक प्रारूप का समर्थन करता है: "फ़ाइलड्रॉप", और डेटा फ़ाइलइन्फो [] प्रकार का है।
  • अधिकांश IDataObject विधियों को NotImplementedException फेंक दें।
+0

आपके उत्तर के लिए धन्यवाद। मैं टूलकिट से DragDrop.DoDragDrop() विधि का उपयोग कर रहा हूं। पहले टूलकिट से एक संलग्न AllowDrop प्रॉपर्टी भी थी, लेकिन इसे SL4 में हटा दिया गया था। मैं इसे लेता हूं कि ढांचे की संपत्ति ने इसे बदल दिया है? –

+0

हां, आप फ्रेमवर्क AllowDrop प्रॉपर्टी का उपयोग कर सकते हैं। –

+0

एमएस में किसी को भी कहने के लिए परेशान नहीं है, यह बताने के लिए धन्यवाद। –