2010-12-01 11 views
6

WPF/Silverlight: templating के कस्टम नियंत्रण आंशिक रूप से

हैलो दोस्तों,

हम इस तरह से कि बाद में हम फिर से टेम्पलेट कर सकते हैं यह आंशिक रूप से में हमारे कस्टम नियंत्रण लिख सकते हैं? मतलब, पूरे ControlTemplate को प्रतिस्थापित किए बिना, हम कुछ को इसके दिखने और महसूस करने के लिए बदलना/ओवरराइड करना चाहते हैं?

एक तरह से, ज़ाहिर है, है यह: generic.xaml से ControlTemplate कोड को कॉपी करें, संशोधित यह देखने के लिए और आंशिक रूप से लग रहा है, और अपने XAML में इसका इस्तेमाल करते हैं, जिन्हें आप नीचे है:

<MyCustomControl> 
     <MyCustomControl.Template> 
       <ControlTemplate> 

        <!-- paste the copied and modified code from generic.xaml here--> 

       </ControlTemplate> 
     </MyCustomControl.Template> 

     <!--other code--> 

</MyCustomControl> 

लेकिन समस्या इस दृष्टिकोण के साथ वह यह है कि, हम अपने XAML भी वर्बोज़ बनाते हैं। और मुझे गंभीरता से यह पसंद नहीं है। मैं कुछ समाधान ढूंढ रहा हूं जो मुझे xaml को प्रदूषित करने से बचा सकता है जहां मैं अपने कस्टम नियंत्रण का उपयोग कर रहा हूं।

प्रत्याशा में धन्यवाद!

उत्तर

1

मैं मार्टिन ControlTemplates WPF में काफी एक सब कुछ या कुछ बात की जा रही है और मैं बहुत अपने आप को निराश किया गया था के बारे में क्या कहते हैं के सबसे से सहमत जब मैं इस निष्कर्ष पर आया था।

यदि आप अपना खुद का कस्टम नियंत्रण लिखते हैं, तो आप इसे अधिक लचीला बना सकते हैं क्यों नियंत्रण के टेम्पलेट पाइस की क्षमता लिखना या पेश करना। एक उदाहरण के लिए यदि आप नए WPF डेटा ग्रिड नियंत्रण जो नियंत्रण के विभिन्न टुकड़े टेम्पलेट करने की क्षमता है देख सकते हैं। अन्य headered सामग्री नियंत्रण अक्सर एक अलग और यह संभव एक को बदलने के लिए कर रही है नियंत्रण के हैडर भाग सामग्री की टेम्प्लेट दूसरे के लिए नहीं है।

+0

मैं इसे इस हद तक कि किया जा सकता है करने के लिए अपने सवाल का जवाब लगता है। और चूंकि क्या नहीं किया जा सकता है, इसका उत्तर नहीं दिया जा सकता है, इसलिए मैं इसे स्वीकार करता हूं! – Nawaz

1

दुर्भाग्य से एक नियंत्रण टेम्पलेट को संशोधित करने के लिए एक सब कुछ या कुछ प्रस्ताव है। जब आप एक जटिल नियंत्रण टेम्पलेट को संशोधित करते हैं तो जब आप इंगित करते हैं कि आपका एक्सएएमएल बहुत वर्बोज़ बन जाता है।

एक दृष्टिकोण (जो कि वैसे भी स्पष्ट है) छोटे कंपोज़ेबल हिस्सों से अपना यूआई बनाना है उम्मीद है कि नियंत्रण टेम्पलेट्स के साथ काम करना आसान हो जाएगा।

आपके पास Style.BasedOn Property का उपयोग करके शैलियों का पुन: उपयोग करने की संभावना है। दुर्भाग्य से, यह आपकी समस्या का समाधान नहीं करता है।

1

मुझे भी वही समस्या का सामना करना पड़ रहा है जहां एक छोटा संपादन करने के लिए मुझे पूरे डिफ़ॉल्ट नियंत्रण टेम्पलेट की प्रतिलिपि बनाना और चिपकाना आवश्यक है।

हालांकि आप नियंत्रण संसाधनों से अपने मार्कअप को अलग करने के लिए कई संसाधन शब्दकोश परिभाषित कर सकते हैं और <ResourceDictionary.MergedDictionaries> का उपयोग कर सकते हैं।

आपका XAML मार्कअप अधिक स्वच्छ हो सकता है और कुछ इस तरह दिखेगा:

<Style> 
     <Setter Property="Template" Value="{StaticResource SomeRandomTemplate}" /> 
</Style> 
संबंधित मुद्दे