2010-04-20 11 views
12

मेरे पास निम्न टेक्स्टब्लॉक के साथ एक WPF संसाधन डिक्शनरी है:एक WPF संसाधन डिक्शनरी के भीतर StaticResource का दायरा क्या है?

<TextBlock Visibility="{Binding Converter={StaticResource MyBoolProp ResourceKey=BoolToVis}}"> 
</TextBlock> 

संसाधन डिक्शनरी के तहत App.xaml में संसाधन डिक्शनरी शामिल है:

<Application.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="MyResourceDictionary.xaml"/> 

App.xaml में मैंने BoolToVis कनवर्टर को परिभाषित किया है (फिर से, Application.Resources के तहत)

<BooleanToVisibilityConverter x:Key="BoolToVis" /> 

जब मैं अपना ऐप अप शुरू करता हूं - मुझे निम्न XamlParseException मिलता है:

" पर मान प्रदान करें" System.Windows.Markup.StaticResourceHolder ' ने अपवाद फेंक दिया। "

इनर एक्सेप्शन है:

"संसाधन 'BoolToVis' नहीं मिला। संसाधन नाम केस संवेदनशील हैं।"

मैं इस कनवर्टर को सीधे App.xaml के साथ संदर्भित करने में सक्षम हूं (वास्तव में, विशेष XAML घोषणा समान है) और अन्य उपयोगकर्ता नियंत्रणों के बिना कोई समस्या नहीं है।

कोड का यह विशेष बिट भी .NET 4.0 आरसी (और बीटा 2) के तहत ठीक काम करता है। यह त्रुटि केवल तब शुरू हो रही है जब मैंने .NET 4.0 RTM में अपग्रेड किया था।

मैं MyResourceDictionary.xaml के भीतर एक और BooleanToVisibilityConverter घोषित करके इसके आसपास काम करने में सक्षम हूं और इसे इस तरह से संदर्भित करता हूं:

<TextBlock Visibility="{Binding Converter={StaticResource MyBoolProp ResourceKey=BoolToVis2}}"> 
</TextBlock> 

मुझे ऐसा करने की आवश्यकता क्यों है?

उत्तर

8

प्रति MSDN:

संसाधन किसी मर्ज किए गए शब्दकोश में संसाधन देखने गुंजाइश है कि सिर्फ मुख्य संसाधन शब्दकोश वे में विलय कर रहे हैं के दायरे के बाद में एक स्थान पर कब्जा।

App.xaml में परिभाषित संसाधनों को विलय संसाधन संसाधन द्वारा नहीं देखा जा सकता है। मुझे लगता है कि यह ResourceDictionary में किसी संसाधन डिक्शनरी में उपयोग किए गए कनवर्टर को परिभाषित करने के लिए और अधिक समझ में आता है, या कोई अन्य संसाधन डॉक्स जो आपके सभी कन्वर्टर्स रखता है।

+1

हम शायद दूसरा मार्ग लेंगे। इतनी परेशान बात यह है कि यह कोड आरसी में ठीक है, लेकिन आरटीएम नहीं। हमारी देव टीम किसके पास है, इस संबंध में "मिश्रित" है। प्रारंभिक गोद लेने के रूप में, मैंने छोटी स्ट्रॉ खींचा :)। धन्यवाद! –

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