2010-01-15 14 views
24

यह मुझे थोड़ी देर के लिए परेशान कर रहा है, शायद मुझे कुछ याद आ रहा है।मैं एक्सएएमएल में विशेषताओं पर टिप्पणी क्यों नहीं कर सकता?

निम्नलिखित टिप्पणी की गई विशेषता (अपेक्षित>) के साथ एक त्रुटि फेंकता है, लेकिन क्या मुझे ऐसा कुछ करने में सक्षम नहीं होना चाहिए?

<Label x:Name="Gaga" 
       FontSize="20" 
       <!-- 
       Content="{Binding SomethingThatIsEmptyAtDesignTime"} 
       --> 
       Content="LookAtMe!" 
       /> 
+1

WPF: एक कदम आगे, दो कदम पीछे। यह सब डब्लूपीएफ पर है, है ना। –

उत्तर

20

हालांकि आप मूल XAML मार्कअप का उपयोग करके टिप्पणी नहीं कर सकते हैं, तो आप ओपन एक्सएमएल मार्कअप नेमस्पेस आयात करके वांछित परिणाम प्राप्त कर सकते हैं।

xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
xmlns:ignore="http://www.galasoft.ch/ignore" 
mc:Ignorable="ignore" 

<Label x:Name="Gaga" 
       FontSize="20" 
       ignore:Content="{Binding SomethingThatIsEmptyAtDesignTime"} 
       Content="LookAtMe!" 
       /> 

यह blog post वर्णन करता है कि यह कैसे करें।

+2

पवित्र नरक !!!!!! –

4

आप किसी तत्व के अंदर ऐसी टिप्पणी का उपयोग नहीं कर सकते हैं।

यह एक्सएमएल नहीं बल्कि सभी एक्सएमएल के लिए सच है।

XML Comments विनिर्देशन पर एक नज़र डालें, जो इस तरह के मार्कअप को स्पष्ट रूप से अस्वीकार करता है।

8

क्योंकि एक्सएएमएल एक्सएमएल आधारित है, और XML doesn't allow comments inside other markup है। यह दुर्भाग्यपूर्ण है, मैं सहमत हूं; एक्सएमएल टिप्पणी वांछित होने के लिए बहुत छोड़ देता है।

1

http://www.w3.org/TR/REC-xml/#sec-comments

टिप्पणियाँ अन्य मार्कअप के बाहर दस्तावेज़ के भीतर कहीं भी मौजूद कर सकते हैं,।

आशा है कि मदद करता है!

0

नहीं, आपको नहीं करना चाहिए। एक्सएमएल इस तरह से काम नहीं करता है - एक टिप्पणी नोड एक विशेषता नहीं है, और इसलिए यह नहीं जा सकता है कि विशेषताएं कहां होनी चाहिए।

0

मैंने Laurent Bugnion's blog पर गुणों पर टिप्पणी करने के लिए एक दिलचस्प दृष्टिकोण देखा।

अनिवार्य रूप से, वह एक "अनदेखा" नामस्थान को परिभाषित करता है, फिर उस संपत्ति को "अनदेखा" उपसर्ग जोड़ता है जिसे वह अनदेखा करना चाहता है।

<ignore:ThisBlockIsIgnored Hello="World" Again="Blah"> 
<Label Content="No parse" /> 
</ignore:ThisBlockIsIgnored> 
14

संक्षिप्त उत्तर: क्योंकि < char को < और > (XML परिभाषा के अनुसार) के बीच अनुमति नहीं है।

अगला प्रश्न किया जाना चाहिए

समाधान (जैसे एमएस ब्लेंड/दृश्य स्टूडियो में) "मैं एक XML/XAML विशेषता बाहर टिप्पणी कर सकते हैं" एक mc:Ignorable विशेषता है।

<RootElement 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    mc:Ignorable="d" 
    d:DataContext="this is an attribute for design time only" 
> 

तो अगर आप बाहर टिप्पणी करना चाहते हैं, बस विशेषता

को d: उपसर्ग जोड़ने और अधिक उपयोगी आप और अधिक के रूप में एक से अनदेखा करने उपसर्ग हो सकता होने के लिए:

<RootElement 
    xmlns ="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x ="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:d ="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:rem ="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:TODO ="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:DISABLED ="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:NOTE ="http://schemas.microsoft.com/expression/blend/2008" 
    mc:Ignorable="d rem TODO DISABLED NOTE" 
    d:Foo="this is ignored (design time only attribute)" 
    rem:Background="this is also ignored (commented out)" 
    TODO:Background=" (commented as TODO)" 
    DISABLED:Background="this is also ignored (commented as DISABLED)" 
> 

"टोकन" remTODODISABLEDNOTE केवल मेरे सुझाव हैं और किसी अन्य (वैध XML नाम) संभव हैं।

किसी भी तत्व में व्यावहारिक नमूना:

यूनिकोड वर्ण की निम्न सूची एक्सएमएल नाम लिए मान्य नहीं हैं:

ǀǁǂǃ

<TextBox 
    DISABLED:Background="#FF000000" NOTE:Background="temporary disabled" 
    Background="#FFFFFF"    TODO:Background="specify an other background" 
    TODO:TextBox="complete the textbox" 
> 

यूनिकोड वर्ण का उपयोग प्रलेखन के रूप में

उपयोग (एक्सएमएल टिप्पणियाँ)

<RootElement 
    ... 
    xmlns:doc="http://schemas.microsoft.com/expression/blend/2008" 
    mc:Ignorable="... doc ..." 

    <MyControl 
     doc.summary="shows my control" 
     doc.remarks="any remarks..." 
    /> 
> 
संबंधित मुद्दे