क्या MarkupExtension
व्युत्पन्न कक्षा के भीतर संभव है?मार्कअप एक्सटेंशन के भीतर निर्भरताप्रॉपर्टी
public class GeometryQueryExtension : MarkupExtension
{
public XmlDataProvider Source { get; set; }
public string XPath { get; set; }
public static readonly DependencyProperty ArgumentProperty = DependencyProperty.RegisterAttached(
"Argument",
typeof(string),
typeof(GeometryQueryExtension)); // this wont work because GeometryQueryExtension is not a DependencyProperty
public string Argument
{
get
{
return (string)GetValue(ArgumentProperty); // this wont even compile because GeometryQueryExtension doesnt derive from a class which has GetValue
}
set
{
SetValue(ArgumentProperty,value);// this wont even compile because GeometryQueryExtension doesnt derive from a class which has SetValue
}
}
}
विस्तार निम्न स्निपेट में उपयोग किया जाता है।
<Label.Content>
<local:GeometryQueryExtension Source="{StaticResource shapesDS}">
<local:GeometryQueryExtension.XPath>
/Shapes/Geometry/{0}
</local:GeometryQueryExtension.XPath>
<local:GeometryQueryExtension.Argument>
<Binding XPath="Geometry"/> <!-- will throw exception when processing this bind -->
</local:GeometryQueryExtension.Argument>
</local:GeometryQueryExtension>
</Label.Content>
क्या ऐसा एक्सटेंशन बनाना संभव है या मैं सिर्फ गलत पेड़ को भड़क रहा हूं? (उपरोक्त कोड संकलित और चलाएगा, लेकिन मैंने इसे समस्या को सबसे अच्छी तरह से चित्रित करने के लिए यहां पोस्ट किया है)।
उस मामले में बाध्यकारी मार्कअप एक्सटेंशन के बारे में क्या? इसकी संपत्तियों को अपने आप से बंधे जा सकते हैं, इसलिए वे निर्भरता गुण हैं। – Narek
@Narek - एमएसडीएन के मुताबिक बाध्यकारी मार्कअप एक्सटेंशन में निर्भरता गुण नहीं हैं, यह समझ में आता है क्योंकि आप निर्भरता गुणों को लागू नहीं कर सकते हैं निर्भरता ऑब्जेक्ट .etValue और DependencyObject.GetValue और आप निर्भरता ऑब्जेक्ट से विरासत के बिना उनको कॉल नहीं कर सकते हैं। भी, मैं अभी इसका परीक्षण नहीं कर सकता लेकिन मुझे नहीं लगता कि आप बाइंडिंग की अपनी संपत्तियों पर बाध्यकारी का उपयोग कर सकते हैं, जो आप नहीं कर सकते हैं {बाध्यकारी कनवर्टर = {बाध्यकारी ...}} – Nir
वास्तव में मेरे पास नहीं है डब्ल्यूपीएफ में कोई अनुभव, लेकिन सिल्वरलाइट 5 में बाध्यकारी की अपनी संपत्तियों पर बाध्यकारी का उपयोग करना निश्चित रूप से संभव है। यहां एक उदाहरण दिया गया है: "{बाध्यकारी उपयोगकर्ता नाम, सापेक्ष स्रोत = {सापेक्ष स्रोत ढूँढें पूर्वजों, पूर्वज प्रकार = उपयोगकर्ता नियंत्रण}}"। – Narek