2010-10-19 10 views
10

पर वापस लौटता है जब मैं अपनी संसाधन फ़ाइल (.resx) को संशोधित करता हूं या पाठ जोड़ता हूं, तो मेरे संसाधन का निर्माता हमेशा आंतरिक होता है और उसके बाद, जब मैं अपनी चांदी की रोशनी चलाता हूं तो मुझे अपने बाध्यकारी XAML में एक त्रुटि होती है ।सिल्वरलाइट संसाधन कन्स्ट्रक्टर हमेशा आंतरिक

क्या इस परिदृश्य से बचने का कोई तरीका है? मैं अपने संसाधन के डिजाइनर में जाने के लिए और समस्या

मैं अपने XAML फाइल में इस तरह मेरी संसाधन का उपयोग

<UserControl.Resources> 
     <resources:LibraryItemDetailsView x:Key="LibraryItemDetailsViewResources"></resources:LibraryItemDetailsView> 
    </UserControl.Resources> 


<TextBlock FontSize="12" FontWeight="Bold" Text="{Binding Path=FileSelectedText3, Source={StaticResource LibraryItemDetailsViewResources}}"></TextBlock> 
+0

मुझे एक ही समस्या का सामना करना पड़ रहा है, यह परेशान है ... – Rumplin

+0

मैंने WPF में यह [http://stackoverflow.com/a/16174350/385995) किया है, सिल्वरलाइट के लिए भी काम करना चाहिए। –

उत्तर

0

इस का कारण यह है कि आप है हल करने के लिए जनता के लिए निर्माता लगाने की जरूरत है कक्षा को तुरंत चालू नहीं करना चाहिए। आपको इसके बजाय हमेशा ConsoleApplication1.Resource1.ResourceManager का उपयोग करना चाहिए जो स्वयं आपके लिए कक्षा को तुरंत चालू करता है।

यहां, ConsoleApplication1 आपकी असेंबली का नाम और Resource1 आपकी संसाधन फ़ाइल का नाम है।

public class StringsWrapper 
{ 
    private static LibraryItemDetailsView _view = null; 

    public LibraryItemDetailsView View 
    { 
     get 
     { 
      if (_view == null) 
      { 
       _view = new LibraryItemDetailsView(); 
      } 
      return _view; 
     } 
    } 
} 

फिर अपने XAML में आप अपने संसाधन का उपयोग कर सकते हैं::

<UserControl.Resources> 
    <StringsWrapper x:Key="LibraryItemDetailsViewResources"></StringsWrapper> 
</UserControl.Resources> 


<TextBlock FontSize="12" FontWeight="Bold" Text="{Binding Path=View.FileSelectedText3, Source={StaticResource LibraryItemDetailsViewResources}}"></TextBlock> 

इस तरह resx निर्माता आंतरिक हो सकता

+0

क्या आप मुझे बाध्यकारी के साथ एक उदाहरण दे सकते हैं? –

+0

जो संसाधन प्रबंधक आप उल्लेख करते हैं वह स्ट्रिंग चर का पर्दाफाश नहीं करता है, इसलिए यह बाध्यकारी नहीं होगा। इससे कोई मूल्य प्राप्त करने के लिए आपको GetX विधि का उपयोग करना होगा। – Aligned

3

आप किसी सार्वजनिक वर्ग है कि एक संपत्ति के माध्यम से संसाधनों को उजागर करता है बना सकते हैं !

4

कोड परिवर्तनों के बिना ऐसा करने का एक और तरीका नीचे जैसा है। मेरे लिए अच्छा काम किया।

http://guysmithferrier.com/post/2010/09/PublicResourceCodeGenerator-now-works-with-Visual-Studio-2010.aspx

+0

यह सबसे अच्छा जवाब है। Exe इंस्टॉल करें और अपनी संसाधन फ़ाइल की कस्टम टूल प्रॉपर्टी को "PublicResourceCodeGenerator" पर सेट करें। – bkaid

1

ठीक है, क्या मैंने किया था पूर्व का निर्माण प्रत्येक सिल्वरलाइट परियोजना है कि public :)

आप पूर्व निर्माण संपादित कर सकते हैं और साथ प्रत्येक internalstring की जगह की घटना के लिए एक कमांड लाइन उपयोगिता को जोड़ने के लिए था पोस्ट-बिल्ड इवेंट्स द्वारा: एक प्रोजेक्ट पर राइट-क्लिक करें ->Properties ->Build Events

मैंने RXFIND नामक उपयोगिता का उपयोग किया, यह मुफ़्त है और RegEx नियमित अभिव्यक्ति का उपयोग करके चयनित फ़ाइलों के भीतर एक स्ट्रिंग को प्रतिस्थापित कर सकता है।

"$(SolutionDir)ThirdParty\rxfind\rxfind.exe" "$(ProjectDir)Resources\*.Designer.cs" "/P:internal " "/R:public " /Q /B:2 

कृपया ध्यान दें, कि मेरे सभी संसाधनों प्रत्येक परियोजना के भीतर संसाधन निर्देशिका के अंतर्गत स्थित हैं और कमांड लाइन उपयोगिता \ThirdParty\rxfind निर्देशिका

0

मैं बनाया में रहता है:

यहाँ कमांड लाइन मैं उपयोग कर रहा हूँ है प्रत्येक फ़ाइल के लिए मेरे लिए ऐसा करने के लिए एक मैक्रो। मुझे अभी भी इसे चलाने के लिए याद रखना है, लेकिन यह बहुत तेज़ है। कृपया my post देखें।

1

मुझे भी वही त्रुटि है।

public class TrackResourceWrapper : TrackResource 
{ 
} 

साथ: TrackResourceWrapper इनहेरिट है वर्ग TrackResource है समस्या मैं सिर्फ एक public class उस वर्ग संसाधन फ़ाइल का प्रतिनिधित्व करने से विरासत बनाई हल करने के लिए, जानते हुए भी कि यह भी इस सार्वजनिक वर्ग होना चाहिए मेरी exep है वर्ग जो कोड संसाधन फ़ाइल में पीछे स्थित है (सार्वजनिक वर्ग)

1

सीधे शब्दों में:

  1. एक नया वर्ग है कि resourc से विरासत में जोड़ें ई क्लास
  2. App.xaml फ़ाइल में, संसाधन वर्ग है जो आप

हो गया बनाया संशोधित!

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