2009-06-02 26 views
7

से संसाधन डिक्शनरी एक्सेस करना मैं उपयोगकर्ता नियंत्रण कोड में एक संसाधन शब्दकोश तक पहुंचने का प्रयास कर रहा हूं-पीछे सी # के माध्यम से और मुझे कम सफलता मिल रही है।WPF UserControl

मर्ज किए गए शब्दकोश:

<UserControl.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="/Resources/BiometricDictionary.xaml" />     
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</UserControl.Resources> 

एंबेडेड शब्दकोश:

<UserControl.Resources> 
    <BitmapImage x:Key="imageDefault">/Resources/Images/default_thumb.png</BitmapImage> 
    <BitmapImage x:Key="imageDisconnected">/Resources/Images/disconnect_thumb.png</BitmapImage> 
    <BitmapImage x:Key="imageFailed">/Resources/Images/failed_thumb.png</BitmapImage> 
    <BitmapImage x:Key="imageSuccess">/Resources/Images/success_thumb.png</BitmapImage> 
</UserControl.Resources> 

कोड के पीछे:

 var resourceDictionary = new ResourceDictionary(); 
     resourceDictionary.Source = new Uri("/Resources/BiometricDictionary.xaml", UriKind.Relative); 

मैं उदाहरण और उपयोगी सुझाव के सभी की कोशिश की लेकिन कम आ रहा है। अभी, सफलता शब्दकोश को लोड करने की क्षमता होगी। कोई सुझाव?

उत्तर

0

तो, आपके पास UserControl की असेंबली में एक संसाधन डिक्शनरी परिभाषित है, और इसे उस UserControl के कोड-पीछे से एक्सेस करना चाहते हैं?

आपको सक्षम होना चाहिए। हालांकि, अगर आपके द्वारा सूचीबद्ध कोड कन्स्ट्रक्टर में है, तो हो सकता है कि आपके पास संसाधन शब्दकोश तक पहुंच न हो (हो सकता है कि अभी तक लोड न हो)। अपने उपयोगकर्ता नियंत्रण के "लोड" ईवेंट में वही कोड जोड़ने का प्रयास करें, और देखें कि क्या यह काम करता है। यदि आप बस अपनी कक्षा से सीधे "FindResource" या "TryFindResource" फ़ंक्शंस का उपयोग करके किसी शैली या टेम्पलेट जैसे संसाधन तक पहुंचने का प्रयास कर रहे हैं, तो आपको भी काम करना चाहिए (यानी आपको किसी प्रकार का ऑब्जेक्ट नहीं होना चाहिए " ResourceDictionary ")।

आशा है कि मदद करता है!

7

अपने कोडबैंड में अपने उपयोगकर्ता नियंत्रण के XAML संसाधनों में से किसी एक तक पहुंचने के लिए, आपको केवल उपयोगकर्ता नियंत्रण की संसाधन संपत्ति तक पहुंचने की आवश्यकता है। कुछ इस तरह:

BitmapImage myImage = (BitmapImage)this.Resources["imageDefault"]; 

हालांकि, पसंदीदा विधि FindResource() का उपयोग करने के लिए, कुंजी के लिए एक मैच के लिए पूरे तार्किक पेड़ खोज करेंगे जो, बल्कि सिर्फ वस्तु से उस पर कहा जाता है।

BitmapImage myImage = (BitmapImage)this.FindResource("imageDefault"); 
0

डी 'ओह ... स्थानीय बिन करने के संकलन ताकि संदर्भ रिश्तेदार हैं, मैं पैक कार्यान्वित के बाद यूआरआई समाधान मिला: ResourceDictionary in a separate assembly और फिर FindResource (एक्स: कुंजी मान यहाँ)।

@ पीटर एलेनवेब, @ पनविनस्टीन, आपके त्वरित प्रतिक्रियाओं के लिए धन्यवाद और मुझे फिर से सोचने के लिए धन्यवाद।

1

अपने स्थान के आगे के आगे स्लैश को निकालने का प्रयास करें। आपको केवल संसाधनों का उपयोग करने का एकमात्र समय है यदि आपको पहले पुस्तकालय जाना है। जैसे ../Resources

<UserControl.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="Resources/BiometricDictionary.xaml" />     
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</UserControl.Resources> 

उम्मीद है कि यह आपकी मदद करता है।

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