2013-03-05 13 views
6

मैंने हाल ही में वीएस 2012 में अपग्रेड किया है, मुझे ऐसा करना था क्योंकि मुझे .NET 4.5 का उपयोग करना शुरू करना था, लेकिन यह बिंदु के अलावा है।संसाधन "एक्स" को हल नहीं किया जा सका।

मैं अपने मुख्य AppStyles.xaml बुलाया परियोजना में एक ResourceDictionary है, और मैं निम्नलिखित है App.Xaml में:: मेरी समस्या निम्नलिखित है

<ResourceDictionary> 
    <ResourceDictionary.MergedDictionaries> 
    <ResourceDictionary Source="AppStyles.xaml"/> 
    <ResourceDictionary.MergedDictionaries> 
</ResourceDictionary> 

मेरी ResourceDictionary में एक शैली है, और मैं तो लागू हो सकते हैं Style={StaticResource MyButton} सेट करके मेरी किसी भी परियोजना में किसी भी बटन पर यह शैली।

वीएस 2012 में अपग्रेड करने के बाद मैंने देखा कि मुझे शीर्षक में त्रुटि बहुत मिलती है, और कभी-कभी यह मुझे डिबगिंग से रोकती है और कभी-कभी यह नहीं होती है!

क्या कोई अलग तरीका है कि मुझे यह करना चाहिए या वीएस 2012 में कोई समस्या है?

+0

तुम्हारा मतलब है कि आप कुछ के बारे में डिजाइन समय के दौरान समस्याओं मिलता है नहीं मिला जा रहा है? लेकिन आप संकलित कर सकते हैं और यह ठीक चलाता है, है ना? –

+0

मुझे डिजाइन समय में त्रुटियां मिल रही हैं कि संसाधन नहीं मिला है। लेकिन कभी-कभी मैं दौड़ सकता हूं, और यह बटन को सही तरीके से प्रदर्शित करता है! लेकिन फिर दूसरी बार यह इसे डिबगिंग से रोकता है। –

+0

क्या आपके पास AppStyles.xaml के लिए कोड है? (मैंने किया और वीएस को डिज़ाइन समय में लोड करने से रोक दिया) एक और समस्या AppStyles.xaml को संसाधन के रूप में शामिल कर सकती है जो संकलन समय पर काम करती है, लेकिन डिज़ाइन-टाइम में नहीं। यह एक 'पृष्ठ' होना चाहिए। – Wouter

उत्तर

5

मुझे वीएस -2010 में समय-समय पर यह समस्या भी है। कभी-कभी समस्या हल हो जाती है अगर मैं "स्वच्छ समाधान" और "पुनर्निर्माण समाधान" करता हूं। अगर यह काम नहीं करता है तो मैं आमतौर पर वीएस -2010 को पुनरारंभ करता हूं।

मैंने स्टाइल एक्स: कुंजी को कुछ और नाम दिया है और समस्या समाप्त हो गई है। लेकिन मैं इस समाधान सही होने के लिए लगता है न ... मेरे कोड नमूने में वर्कअराउंड के बारे में इस सवाल का

<Application.Resources> 
<ResourceDictionary> 
    <ResourceDictionary.MergedDictionaries> 

    <!-- Load Infrastructure's Resource Dictionaries --> 
    <ResourceDictionary Source="/MyProject.Modules.Infrastructure;component/ResourceDictionaries/ResourceLibrary.xaml" /> 

    </ResourceDictionary.MergedDictionaries> 

    <!-- Workaround for ResourceDictionary loading bug/optimization --> 
    <Style TargetType="{x:Type Rectangle}" /> 

</ResourceDictionary> 

संदर्भ: Trouble referencing a Resource Dictionary that contains a Merged Dictionary

+0

मैंने अपने कंप्यूटर को साफ, पुनर्निर्मित, पुनरारंभ किया और फिर भी शुरू किया है! यह त्रुटि पॉप-अप रहती है और इसका कोई मतलब नहीं है, यह पूरी तरह से एक सेकंड चल रहा था और अगला यह अब संकलित नहीं हो सकता! –

+0

हम्म। यह बहुत अजीब है। क्या आपने अपनी स्टाइल कुंजियों का नाम बदलने की कोशिश की है? – hijack

+0

हाँ मेरे पास है, समस्या बनी हुई है! यह मुझे अब संकलन से नहीं रोकता है, लेकिन इस शैली का उपयोग करने वाले मेरे कस्टम नियंत्रण में से कोई भी डिजाइन में दिखाया जा सकता है! –

4

आप एक आम या बुनियादी ढांचा परियोजना बना सकते हैं जिसमें से अन्य परियोजनाओं का संदर्भ होगा। अपने resouce संसाधन जोड़ें। फिर एक पैक यूआरआई बनाएँ। तो एक संसाधन शब्दकोश

<...Resources> 
<ResourceDictionary> 
    <!-- Resource Dictionaries --> 
    <ResourceDictionary.MergedDictionaries> 
     <ResourceDictionary 
      Source="pack://application:,,,/Common;component/Dictionaries/Styles.xaml"/> 
    </ResourceDictionary.MergedDictionaries> 

एक खिड़की के मामले में usercontrol या उपयोग Window.Resources में भीतर अपने usercontrol या खिड़की संसाधनों में संदर्भ। यह मेरे लिए काम करता है।

10

WPF उस संसाधन शब्दकोश को हल करने में असमर्थ है जिसे आप विलय करने का प्रयास कर रहे हैं। जब आप एक विलय शब्दकोश बनाते हैं, तो डब्ल्यूपीएफ यूआरआई को हल करने के प्रयास के नियमों का एक सेट करता है। आपके मामले में, यूआरआई संदिग्ध है, इसलिए डब्ल्यूपीएफ विश्वसनीय रूप से इसे हल करने में असमर्थ है।

Source यूआरआई App.xaml में एक पूर्ण पैक यूआरआई में बदलें। उदाहरण के लिए, आप परियोजना अगर कहा जाता है MyProject हैं (यानी .: "MyProject" संक्षेप विधानसभा नाम है), तो आप App.xaml में Source बदलना चाहिए:

इसमें यह माना जाता AppStyles.xamlMyProject की जड़ में है। आप वैकल्पिक रूप से हस्ताक्षरित असेंबली के प्राधिकरण, असेंबली संस्करण और सार्वजनिक कुंजी जानकारी निर्दिष्ट कर सकते हैं। हालांकि, आपको संक्षिप्त असेंबली नाम (MyProject, उपर्युक्त उदाहरण में) से सुरक्षित होना चाहिए।

WPF में पैक यूआरआई पर अधिक जानकारी के लिए MSDN पर इस पेज देखें: http://msdn.microsoft.com/en-us/library/aa970069(v=vs.110).aspx

1

आप तो अपनी परियोजना के लिए संसाधन शब्दकोश जोड़ने इसके निर्माण कार्रवाई संसाधन बदलने और उसके बाद के रूप में कोड में अपनी uri जोड़ने की कोशिश कर सकते हैं इस प्रकार है:

<ResourceDictionary> 
<ResourceDictionary.MergedDictionaries> 
    <ResourceDictionary 
     Source="/Styles.xaml"/> 
</ResourceDictionary.MergedDictionaries> 

या बस गुण टैब का उपयोग करके vs2012 प्रक्रिया यह करते हैं ...

+0

* संसाधन * में शब्दकोश निर्माण क्रिया को स्विच करने से कुछ भी नहीं बदलेगा – superjos

3

यह आपके appStyles.xaml फ़ोल्डर के सापेक्ष पथ का उपयोग करना संभव है। उम्मीद है की यह मदद करेगा।

कुछ की तरह नीचे

<ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="../Resources/Styles.xaml"></ResourceDictionary> 
     </ResourceDictionary.MergedDictionaries> 
<ResourceDictionary> 
संबंधित मुद्दे