2010-01-29 29 views
5

संसाधन शब्दकोश में शैली को परिभाषित करते हुए आप उपयोग कर सकते हैं या तोWPF शैलियों: एक्स के बीच का अंतर: नाम और एक्स: प्रकार

x:Name="xyz" 

और

x:Type="xyz". 

और तरह XAML {StaticResource में इस शैली को संदर्भित कर सकते xyz}।

अधिकांश उदाहरणों का प्रयोग 'एक्स: मुख्य', और 'नाम' और 'कुंजी' के बीच अंतर का उपयोग कर वह यह है कि 'एक्स: नाम' आप कोड-पीछे इस शैली परिभाषा का उपयोग करने देता?

फिक्स: प्रश्न पूरी तरह से गलत है। पूछे जाने का इरादा एक्स: कुंजी और एक्स: नाम के बीच का अंतर था। लेकिन इस कोड को स्वयं करने की कोशिश नहीं की, लेकिन सिर्फ यादों पर निर्भर था - सोचा कि मेरे पास संसाधन संसाधन दोनों में है, जो गलत था। और मैं भी इस तरह के कोड

<xxx.Resources > 

वर्गों में, क्योंकि यह या तो काम नहीं करता नहीं था। आप उस शैली का संदर्भ नहीं दे सकते जिसमें x नहीं है: कुंजी (x: नाम यहां काम नहीं करता है), और x के बिना दो शैलियों को जोड़ना: कुंजी अपवाद फेंकता है क्योंकि दोनों को शब्दकोश में एक ही (खाली?) कुंजी मिलती है।

रे सभी अंतर को बहुत अच्छे तरीके से रखता है, धन्यवाद।
मेरी गलती

+0

यह एक चाल प्रश्न है –

उत्तर

9

को प्रभावित करेगा यह एक चाल सवाल यह है कि बनाता है ।

  • x:Type="xyz" वैध XAML वाक्य रचना नहीं है: वास्तव में, आप नहीं एक शैली एक ResourceDictionary में या तो

    x:Type="xyz" 
    

    या

    x:Name="xyz" 
    

    यहाँ अंतर नहीं है परिभाषित कर सकते हैं।

  • x:Name="xyz" वास्तव में वैध XAML वाक्य रचना कि नाम एक वस्तु (जिनमें से कोड-पीछे पीढ़ी को प्रभावित करता है), लेकिन एक महत्वपूर्ण शब्दकोश प्रदान नहीं करता है।
  • x:Key="xyz" भी मान्य XAML वाक्य रचना है कि एक कुंजी शब्दकोश प्रदान करता है, लेकिन एक वस्तु का नाम नहीं है।

एक शब्दकोश में एक महत्वपूर्ण आवश्यकता है, ताकि आप x:Key (FrameworkTemplate और उसके उपवर्गों के लिए महत्वपूर्ण TargetType या डेटा प्रकार से अनुमान लगाया जा सकता है कि को छोड़कर) का उल्लेख करना होगा। एक शब्दकोश में आप वांछित होने पर x:Name भी निर्दिष्ट कर सकते हैं लेकिन यह कुंजी को प्रभावित नहीं करता है।

ध्यान दें कि x:Type एक मार्कअप एक्सटेंशन है जो XAML द्वारा पूर्वनिर्धारित है, जबकि x:Name और x:Key वास्तविक XAML कीवर्ड हैं। तो x:Type केवल एक संपत्ति के मूल्य के रूप में मार्कअप विस्तार वाक्य रचना में इस्तेमाल किया जा सकता:

something="{x:Type whatever}" 

x:Name जबकि और x:Key विशेषताओं है कि तत्वों पर इस्तेमाल किया जा सकता है।

+2

यह एक डबल चाल सवाल है क्योंकि वास्तव में ** उनमें से कोई भी काम नहीं करता **। आप 'x: name = "xyz" 'या तो का उपयोग कर किसी संसाधन डिक्शनरी में शैली को परिभाषित नहीं कर सकते हैं। केवल एक्स: कुंजी काम करता है। – itowlson

+0

कोई मजाक नहीं! मुझसे यह चूक कैसे हुई? और अब मैं क्या करने जा रहा हूँ? मेरा जवाब हटाओ? इसे संशोधित करें? मुझे लगता है कि मैं इसे संशोधित करूंगा। धन्यवाद itowlson। –

+0

प्रतिक्रिया के लिए धन्यवाद। कृपया मुझे बताएं कि क्या मुझे इस प्रश्न को हटाना चाहिए, या इसे टेक्स्ट को संपादित करना मुश्किल नहीं है। – bybor

2

x: नाम आपको एक संदर्भ बनाने की अनुमति देता है जिसका उपयोग आप नाम से कर सकते हैं।

एक्स: प्रकार आप एक संदर्भ है कि उस प्रकार

उदाहरण

<Style TargetType="{x:Type Button}"> 
    ... 
</Style> 

के लिए

द्वारा किया जाता है बनाने की अनुमति देता है एक शैली है कि स्वचालित रूप से बटन

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