2010-09-16 7 views
10

एक फ़ाइल पर विचार करें |जेनेरिक.एक्सएएमएल में मर्ज किए गए शब्दकोशों के लिए पूर्ण यूरी की आवश्यकता क्यों है?

  1. CustomControl1
  2. दो नए संसाधन शब्दकोशों Dictionary1 और Dictionary2 नामित नाम के एक नए कस्टम नियंत्रण

उत्पन्न शैली Generic.xaml से बाहर ले लो और इसे स्थानांतरित: एक WPF आवेदन है कि शामिल की नया प्रोजेक्ट शब्दकोश 2 के लिए। , तब

<!--Generic.xaml--> 
<ResourceDictionary.MergedDictionaries> 
    <ResourceDictionary Source="pack://application:,,,/Themes/Dictionary1.xaml"/> 
</ResourceDictionary.MergedDictionaries> 

<!--Dictionary1.xaml--> 
<ResourceDictionary.MergedDictionaries> 
    <ResourceDictionary Source="Dictionary2.xaml"/> 
</ResourceDictionary.MergedDictionaries> 

MainWindow के ग्रिड में CustomControl1 का एक उदाहरण जोड़ने: फिर Dictionary2 इस तरह Dictionary1 और Dictionary1 में विलय जेनेरिक में। (इस भाग को फिर से उत्पन्न करने के लिए जरूरी है। प्रोजेक्ट हमेशा ठीक संकलित करता है - केवल रनटाइम पर समस्या दिखाई देती है, और शब्दकोशों को संदर्भित किया जाना चाहिए।)

शब्दकोश 1.xaml में मैं उसी में एक और निर्देश में विलय कर रहा हूं फ़ोल्डर, तो एक साधारण स्रोत = "Dictionary2.xaml" काम करता है। फिर भी जेनेरिक.एक्सएमएल में मुझे एक पूर्ण यूआरआई का उपयोग करना होगा। यदि मैं उपरोक्त को स्रोत = "Dictionary1.xaml" के रूप में पैक के बिना बदलता हूं: // एप्लिकेशन सामान तब मुझे एक IOException के कारण XamlParseException मिलता है, जब यह मेनविंडो बनाने का प्रयास करता है तो "संसाधन का पता नहीं लगा सकता"।

मेरे प्रश्न:क्या सापेक्ष URI संकल्प के बारे में generic.xaml, और क्यों के बारे में खास है?

उत्तर

0

बस एक अनुमान: जेनेरिक.एक्सएएमएल को बाहरी असेंबली से भी सुलभ होने की आवश्यकता है, इसलिए यह सुनिश्चित करने का एक तरीका है कि पूर्ण यूआरआई का उपयोग करके संसाधन कहीं से भी मिल सकते हैं। जैसा कि मैंने कहा, यह अंधेरे में सिर्फ एक स्टैब है, यकीन नहीं है।

10

क्षमा करें क्योंकि मेरे पास टिप्पणियां लिखने की कोई क्षमता नहीं है इसलिए मैं इसे एक उत्तर के रूप में पोस्ट करता हूं।

मेरे पास एक ही स्थिति है और सबकुछ मेरे लिए ठीक काम करता है। मुझे Generic.xaml में पथ में "पैक: // एप्लिकेशन" डालने की आवश्यकता नहीं है। लेकिन केवल तभी जब एक असेंबली का आउटपुट प्रकार "विंडोज़ एप्लीकेशन" होता है। "कक्षा पुस्तकालय" मुझे पथ (Source="/ClassLibarayAssemblyName;component/Themes/Dictionary1.xaml") में असेंबली नाम जोड़ने की आवश्यकता है क्योंकि इसके बिना WPF इंजन एप्लिकेशन की मुख्य असेंबली में Dictionary1.xaml को देखने का प्रयास करता है।

दोनों मामलों में लक्ष्य ढांचा ".NET Framework 4 क्लाइंट प्रोफाइल"

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