2009-03-10 15 views

उत्तर

51

xmlns एक एक्सएमएल है, जो आवश्यक रूप से एक्सएएमएल नहीं है, जो निर्माण करता है जो नामस्थान को परिभाषित करता है जिसमें xml तत्व नामों को हल किया जाता है। चूंकि इसे क्वालीफायर के बिना परिभाषित किया गया है, यह डिफ़ॉल्ट नेमस्पेस को परिभाषित कर रहा है जिसके द्वारा एक XML तत्व नाम हल किया जाना चाहिए।

एक्सएएमएल में आप आमतौर पर निम्नलिखित प्रविष्टि देखते हैं। यह डिफ़ॉल्ट नामस्थान को अनिवार्य रूप से WPF होने के लिए परिभाषित करता है और इसलिए सभी XML तत्व नाम WPF तत्वों के रूप में हल किए जाते हैं।

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 

गैर-डिफ़ॉल्ट नामस्थान जैसे निम्न को देखना भी आम है।

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 

यह XAML विशिष्ट तत्वों के लिए एक योग्य नेमस्पेस को परिभाषित करता है। यदि आप इस नामस्थान के भीतर कोई तत्व या विशेषता नाम हल करना चाहते हैं तो आपको इसे x के साथ अर्हता प्राप्त करनी चाहिए। उदाहरण के लिए

<StackPanel x:Name="foo" /> 

इस परिभाषा में 2 नाम संकल्प हैं।

  1. StackPanel - क्योंकि यह एक अयोग्य नाम है, यह डिफ़ॉल्ट नाम स्थान जो WPF
  2. है में सुलझा लिया जाएगा एक्स: नाम - नाम एक्स के साथ योग्य है और XAML दस्तावेज़ के भीतर का समाधान हो जाएगा।
+0

बहुत जानकारीपूर्ण धन्यवाद बहुत :) – AnkitSablok

6

MSDN से लिया गया मूल तत्व में गुण xmlns और xmlns भी शामिल हैं: x। ये गुण XAML प्रोसेसर को इंगित करते हैं जो XML नामस्थानों में उन तत्वों के लिए तत्व परिभाषाएं होती हैं जो मार्कअप संदर्भित करेंगे। Xmlns विशेषता विशेष रूप से डिफ़ॉल्ट XML नामस्थान इंगित करती है।

उपयोग और मैपिंग के लिए एक दायरा परिभाषित करने के लिए xmlns का यह उपयोग XML 1.0 विनिर्देश के अनुरूप है।

उम्मीद है कि इससे मदद मिलती है।

21

और आप अपने एक्सएएमएल के भीतर अपने नामस्थानों के संदर्भ के लिए xmlns का भी उपयोग करते हैं।

xmlns:local="clr-namespace:MyWpfProject" 

अब मैं (IValueConverters और DataTemplateSelectors) की तरह किसी भी कक्षा मैं अपने प्रोजेक्ट के भीतर बना सकते हैं के लिए उपयोग किया द्वारा: पहली बातें एक नए WPF परियोजना बनाते समय मैं करता हूँ में से एक परियोजना नाम स्थान के लिए एक संदर्भ जोड़ने के लिए है "स्थानीय:" का उपयोग कर उपसर्ग

<local:BooleanToColorConverter x:Key="booleanToColorConverter" DefaultBrush="Green" HighlightBrush="Red" /> 
बेशक

, आप उपयोग करना "स्थानीय" की जरूरत नहीं है, आप इसे नाम कर सकते हैं जो कुछ भी आप चाहते हैं। और आप किसी भी अन्य नामस्थान के संदर्भों को जोड़ सकते हैं जिसकी आपको आवश्यकता है।

9

आप अपने असेंबली में XmlnsDefinitionAttribute जोड़कर एक से अधिक सीएलआर नेमस्पेस को एक एक्सएमएल नेमस्पेस में मैप कर सकते हैं। सिस्टम के तहत कई नामस्थानों का मानचित्रण करके, डब्ल्यूपीएफ टीम ने यही किया।इस तरह विंडोज:

[XmlnsDefinitionAttribute(
    "http://schemas.microsoft.com/winfx/2006/xaml/presentation", 
    "System.Windows.Controls")] 
[XmlnsDefinitionAttribute(
    "http://schemas.microsoft.com/winfx/2006/xaml/presentation", 
    "System.Windows.Ink")] 

इस वाक्य रचना अपने XAML को आसान बनाने में कर सकते हैं, लेकिन सावधान रहना CLR नामस्थान आप एक साथ मर्ज में एक ही नाम के साथ वर्गों के लिए।

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