XAML

2011-10-22 5 views
5

मैं एक परियोजना जहां XAML के ढीले बिट्स (और कुछ जुड़े IronPython कोड) गतिशील रूप से लोड किया जाएगा और एक क्लाइंट अनुप्रयोग द्वारा निष्पादित पर काम कर रहा हूँ से कस्टम संसाधन लोड हो रहा है संभाल करने के लिए एक कस्टम यूआरआई प्रोटोकॉल का पंजीयन। क्लाइंट XAML, बैकिंग स्क्रिप्ट, और संबंधित संसाधनों (आइकन, छवियों, आदि ..) को पुनर्प्राप्त करने के लिए एक कस्टम डब्ल्यूसीएफ सेवा (और कुछ स्थानीय कैशिंग) का उपयोग करेगा।XAML

मैं एक कस्टम यूआरआई प्रोटोकॉल/योजना रजिस्टर करने के लिए यह गतिशील संकुल के डेवलपर्स के लिए आसान बनाने के लिए अपने संसाधनों को संदर्भित करने के लिए, निम्नलिखित की तरह चाहते हैं:

<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <UserControl.Resources> 
     <ResourceDictionary> 
      <ResourceDictionary.MergedDictionaries> 

       <ResourceDictionary Source="custom://MyPackage/Icons.xaml" /> 
       <ResourceDictionary Source="custom://MyPackage/Styles.xaml" /> 
       <!--      ^^^^^^       --> 

      </ResourceDictionary.MergedDictionaries> 
     </ResourceDictionary> 
    </UserControl.Resources> 
</UserControl> 

जहां तक ​​मेरा बता सकते हैं, मैं एक कस्टम UriParser और register it प्राप्त कर सकते हैं, लेकिन यह केवल आधी लड़ाई हो रहा है। शेष कार्य कस्टम यूआरआई को हल करने और आवश्यक सामग्री को पुनर्प्राप्त करने के लिए आवश्यक घटक प्रदान करना है।

यह प्रदान करने या WPF में कार्यक्षमता को ओवरराइड जब अपने कस्टम यूआरआई में से एक का सामना करना पड़ा है यह मेरे कस्टम डेटा सेवा को कॉल करने की अनुमति के लिए संभव है? या, यदि यह असंभव है, तो क्या कोई विकल्प है?

उत्तर

3

जो मैं समझता हूं उससे आपको एक कक्षा बनाने की आवश्यकता है जो WebRequest से प्राप्त होता है और इसे WebRequest.RegisterPrefix से पंजीकृत करता है।

+0

मुझे पता था कि यह कुछ आसान होना था। धन्यवाद! –

0

एक विकल्प के रूप में, मुझे आश्चर्य है कि अगर आप एक नया वर्ग है कि ResourceDictionary से विरासत बना सकते हैं (क्योंकि यह sealed नहीं है) और Source के लिए एक new परिभाषा प्रदान करते हैं। यह आपको रोकना मूल्य तो Source को स्थापित किया जा रहा है और यह अपने कस्टम UriParser के खिलाफ चलाने होगा। यह आपको परिणाम के साथ ResourceDictionary को आसानी से अपडेट करने की अनुमति देगा।

+1

यह अगर स्रोत क्योंकि आप इसे रद्द कर सकते थे आभासी था काम कर सकता था। लेकिन यदि आप 'नया' का उपयोग करते हैं, तो यह केवल बेस क्लास संपत्ति को छुपाता है और एक नया घोषित करता है। WPF इस संपत्ति का उपयोग कभी नहीं होगा, क्योंकि इस बारे में पता नहीं है कि यह सच है –

+0

- मैं सोच रहा था कि WPF अगर नई परिभाषा सभी तर्क नए संसाधनों के साथ ResourceDictionary अद्यतन करने के लिए की जरूरत है स्रोत का उपयोग करने की जरूरत नहीं होगी। –