2009-05-06 15 views
5

में क्लिक-टू-एडिट संपादित करें क्या Silverlight में "क्लिक-टू-एडिट" नियंत्रण बनाने का कोई तरीका है? मेरे पास कुछ आइटम हैं जो एक वृक्षदृश्य नियंत्रण में प्रदर्शित किए जाएंगे, और मैं लेबल को सीधे पेड़दृश्य में संपादन योग्य बनाना चाहता हूं।सिल्वरलाइट

कोई भी यह कैसे जानता है?

+1

लिंक http://stackoverflow.com/questions/2088909/inline-editing-textblock-in-a-listbox-with-data-template-wpf/7687402#7687402 क्लिक-टू-एडिट उपयोगकर्ता नियंत्रण देता है। उम्मीद है की यह मदद करेगा। – Youngjae

उत्तर

9

वास्तव में बहुत आसान है। मैंने इस तरह के स्वैपिंग तंत्र के साथ कई रूपों को लागू किया है।

आप इसे कनवर्टर का उपयोग करके ऐसा कर सकते हैं और एक IsEditable संपत्ति पर एक साधारण BooleanToVisibility रूपांतरण कर सकते हैं जो आपके TreeView से जुड़ी संस्थाओं पर मौजूद है। अपने TreeView आइटम टेम्पलेट के भीतर बस टेक्स्टब्लॉक को इस तरह से बाध्य करें कि जब भी इज़ेडेबल प्रॉपर्टी सत्य हो और टेक्स्टबॉक्स को इस तरह से बाध्य कर दिया जाए तो यह समाहित हो जाता है जब यह योग्य संपत्ति गलत है (और इसके विपरीत)।

आप एक कस्टम ClickToEdit नियंत्रण आपको निम्न कार्य करने की आवश्यकता होगी बनाना चाहते थे तो:

  1. एक वर्ग है कि ContentControl
  2. से विरासत बनाएं बेनकाब प्रकार DataTemplate का एक नया निर्भरता गुण: एक EditableTemplate कहा जाता है।
  3. क्लिक के लिए सुनने के लिए अपने OnApplyTemplate के अंदर एक MouseLeftButtonUp ईवेंट हैंडलर जोड़ें।
  4. सक्रिय सामग्री टेम्पलेट को क्लिक ईवेंट पर अपना संपादन योग्य टेम्पलेट बदलने के लिए बदलें।
  5. नियंत्रण को खोने पर टेम्पलेट को वापस बदलें।

अब TreeView अंदर अपने कस्टम नियंत्रण का उपयोग करने के लिए:

  1. अपने TreeView के लिए अपने ItemTemplate ओवरराइड
  2. अपने कस्टम ClickToEdit नियंत्रण रखो अंदर वहाँ

एक कस्टम नियंत्रण लागू करके आप की अनुमति होगी (या अन्य डेवलपर्स) आसानी से यह निर्दिष्ट करने के लिए कि वे सामग्री संपादक के रूप में किस नियंत्रण का उपयोग करना चाहते थे। उदाहरण के लिए, वे टेक्स्टबॉक्स का उपयोग करने के बजाए न्यूमेरिक अपडाउन या डेटटाइम पिकर निर्दिष्ट कर सकते हैं।

सिल्वरलाइट 3 में डेटाफॉर्म देखें। इसकी समान कार्यक्षमता है लेकिन संपादन योग्य बनाम केवल पढ़ने के लिए स्विचिंग एक क्लिक द्वारा नहीं की जाती है।

+0

क्या आप मुझे बता सकते हैं कि जब मैं ContentTemplate को बटन पर क्लिक करता हूं तो संपादन योग्य टेम्पलेट के नियंत्रण (टेक्स्टबॉक्स) पर फ़ोकस कैसे सेट करें? – Jehof

+0

मैं चरण 5 के साथ फंस गया हूं .. यहां मेरा कोड है http://stackoverflow.com/questions/28613473/click-to-edit-control-lostfocus-event-issue –