कुछ tinkering और शोध के बाद मुझे अपने खुद के प्रश्न का समाधान मिला। ऐसा लगता है कि बिट्स और मेरे उत्तर के टुकड़े पूरे वेब पर बिखरे हुए थे, इसलिए मैं एक ही स्थान पर एक ही चीज़ को पूरी तरह से समझाने की कोशिश करूंगा। पुन: कैप करने के लिए मैं मूल रूप से अपने समाधान के भीतर परियोजनाओं में उपयोग किए जाने वाले किसी भी संसाधन को केंद्रीकृत करना चाहता था। ये वे कदम हैं जिन्हें मैंने अंततः पूरा करने के लिए किया।
1. अपने समाधान में उपयोगकर्ता नियंत्रण प्रोजेक्ट बनाएं (कोई भी प्रोग्राम जो संसाधन शब्दकोश होस्ट कर सकता है)। मैं इस परियोजना को "संसाधन परियोजना" के रूप में संदर्भित करूंगा।
2. कोई भी संसाधन फ़ाइलें (छवियां आदि ...) जोड़ें जो आप प्रोजेक्ट्स के बीच संसाधन प्रोजेक्ट में साझा करना चाहते हैं। मैं उप-निर्देशिकाओं में फ़ाइलों को व्यवस्थित करने का प्रयास करता हूं जो समझ में आता है। आप निर्माण कार्य को "संसाधन" में सेट करना चाहते हैं ताकि यह आउटपुट बाइनरी में संकलित हो जाए।
3. अब संसाधन प्रोजेक्ट में संसाधन शब्दकोश जोड़ें। मेरे मामले में मैं कई छवियों का संदर्भ देना चाहता था इसलिए मैंने "ImageDictionary.xaml" नामक एक बनाया।
4. संसाधन शब्दकोश में छवि फ़ाइलों के संदर्भ जोड़ें। मैं यहां छवियों का संदर्भ दे रहा हूं लेकिन यह सिर्फ एक संसाधन शब्दकोश है, आप वहां जो भी डाल सकते हैं। मध्य में स्ट्रिंग केवल उस छवि फ़ाइल का सापेक्ष पथ है जिसका आप उल्लेख कर रहे हैं।
<ImageSource x:Key="SomeImageKey">
Images/SomeImage.bmp
</ImageSource>
5. अब एक परियोजना है कि संसाधन शब्दकोश तुम सिर्फ कदम 4. यह किसी अन्य उपयोगकर्ता नियंत्रण या एक खिड़की, जो कुछ भी हो सकता है में किए गए की आवश्यकता है पर जाएँ। प्रोजेक्ट संदर्भों पर राइट-क्लिक करें और संसाधन प्रोजेक्ट का संदर्भ जोड़ें।
6. ठीक है अब वर्तमान प्रोजेक्ट को संसाधन प्रोजेक्ट में परिभाषित चरण 4 में किए गए शब्दकोश का संदर्भ देने की आवश्यकता है। मैंने पहले उपयोगकर्ता नियंत्रण किया था, इसलिए मेरा कोड नीचे जैसा दिखता है ... ध्यान दें कि मैंने मर्ज किए गए शब्दकोशों का उपयोग किया था। मैं बाद में उपयोग करने की योजना बना रहा हूं इसलिए मैंने एक शब्दकोश के बजाय इस तरह से चुना। नीचे "संसाधन प्रोजेक्ट" प्रोजेक्ट/असेंबली का नाम है जिसे आपने संसाधन जोड़ा है। "घटक" एक ऐसा कीवर्ड है जिसे वहां होना आवश्यक है, इसके बाद शब्दकोश xaml कोड फ़ाइल के पथ के बाद।
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/ResourceProjectAssembly;component/Resources/ImageDictionary.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
जैसा कि आप देख सकते हैं, बाहरी संसाधन शब्दकोश को संदर्भित करने के लिए "पैक यूआरआई" कहा जाता है। मुझे ऐसा करने का एक छोटा सा तरीका मिला। लंबा रास्ता काफी उलझन में है और जहां तक मुझे पता है, इसका कोई फायदा नहीं है। लेकिन यह वही है जो लंबा रास्ता दिखता है।
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/ResourceProjectAssembly;component/Resources/ImageDictionary.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
7. अब अपने वर्तमान प्रोजेक्ट संसाधन परियोजना में संसाधन शब्दकोश के लिए एक संदर्भ है, आपको लगता है कि शब्दकोश से कुछ भी उपयोग कर सकते हैं। मैं आगे बढ़ गया और अपने उपयोगकर्ता नियंत्रण में एक छवि डाल दिया। नीचे कोड है। यह स्थानीय रूप से एक शब्दकोश का संदर्भ देने जैसा है।
<Image Source="{StaticResource SomeImageKey}" />
8. महत्वपूर्ण नोट! इससे मुझे कुछ समय पहले सिरदर्द हुआ क्योंकि मुझे यह पता चला। सुनिश्चित करें कि आपके समाधान में स्टार्टअप प्रोजेक्ट संसाधन संसाधन का संदर्भ है, भले ही स्टार्टअप प्रोजेक्ट संसाधन परियोजना का उपयोग न करे। (यानी संदर्भों पर राइट-क्लिक करें, संदर्भ जोड़ें आदि ...) संसाधन तब तक आउटपुट में संकलित नहीं होंगे जब तक आप ऐसा नहीं करते। यह हिस्सा मुश्किल था क्योंकि डिजाइनर मेरी छवियों को भी दिखा रहा था और मेरे पास कोई एक्सएमएल त्रुटियां नहीं थीं लेकिन रनटाइम पर यह सेट प्रॉपर्टी फेंक देगी और फ़ाइल अपवाद नहीं ढूंढ पाएगी। जब मैंने अपनी स्टार्टअप प्रोजेक्ट से अपनी संसाधन परियोजना का संदर्भ दिया तो यह दूर चला गया।
उम्मीद है कि यह किसी की मदद करता है। नीचे कुछ स्थानों (स्टैक ओवरफ्लो सहित) के कुछ लिंक दिए गए हैं जो मुझे सभी टुकड़ों को एक साथ रखने के लिए आवश्यक थे।
http://blogs.msdn.com/b/wpfsldesigner/archive/2010/06/03/creating-and-consuming-resource-dictionaries-in-wpf-and-silverlight.aspx
Load WPF styles or other Static Resources from an external file or assembly
ResourceDictionary in a separate assembly
उत्कृष्ट अनुसंधान के वहाँ बिट। बस मुझे क्या चाहिए +1। – Andez
बहुत बहुत धन्यवाद, मैं इसे पहले काम नहीं कर सका, क्योंकि मुझे चरण 8 :(याद आ रहा था। लेकिन अब यह काम करता है, शानदार :) – adminSoftDK
क्या मैं संसाधन शब्दकोश में जोड़ सकता हूं? –
bigworld12