2012-03-19 26 views
35

मुझे एक स्थिर संपत्ति के लिए एक WPF बाध्यकारी के साथ कुछ मुद्दों का सामना करना पड़ रहा है। मेरे आवेदन में ग्लोबल्स नामक एक कक्षा है जिसमें स्थिर संपत्ति यह एडिन है। यह ऑब्जेक्ट मुझे उपयोगकर्ता संपत्ति तक पहुंचने की अनुमति देता है जो मूल रूप से मैं अपने बाध्यकारी में उपयोग करना चाहता हूं। तो, मेरी XAML इस तरह दिखता है:StaticExtension मान को हल नहीं किया जा सकता

<TextBlock Text="{Binding Path=User.Name 
        , Source={x:Static Member=s:Globals.ThisAddIn}}" /> 

नाम स्थान रों निम्न पंक्ति द्वारा शीर्ष पर घोषित किया जाता है:

xmlns:s="clr-namespace:ConsoleApplication16.Model" 

मैं कैसे का उल्लेख करने के विभिन्न तरीकों में से एक टन पाया एक्सएएमएल में स्थैतिक संपत्ति, लेकिन उनमें से कोई भी इस के अलावा काम नहीं करता, जो मेरे लिए सबसे तार्किक लगता है। मैंने पाया कुछ नमूने, पथ या सदस्य का उपयोग नहीं किया था।

कुछ परीक्षणों के बाद मुझे ऐसा करने का सही तरीका मिला, कक्षा और स्थैतिक संपत्ति को परिभाषित करने के लिए "x: स्टेटिक सदस्य" का उपयोग कर रहा है, जबकि पथ इस ऑब्जेक्ट के अंदर सही गुणों को परिभाषित करता है, जैसे कि सामान्य बाध्यकारी करेंगे।

हालांकि यह समाधान बिना किसी शिकायत के संकलित करता है, एक XAMLParseException सीधे मुझे बताता है कि स्टेटिक एक्सटेंशन एक्सटेंशन को गणना, स्थैतिक क्षेत्र या स्थैतिक संपत्ति के लिए हल नहीं किया जा सकता है।

+1

वास्तव में किस प्रकार कि अगर यह एक अपवाद फेंकता है 'सही way' है? –

+0

इसके अलावा आप 'पथ =' और 'सदस्य =' को छोड़ने में सक्षम होना चाहिए क्योंकि इससे संबंधित संरचनाओं को लागू करने वाले संबंधित रचनाकारों का आह्वान किया जाएगा। –

+0

मैं आमतौर पर '{बाध्यकारी स्रोत = {x: स्टेटिक लोकल: MyStaticClass.SomeStaticProperty.PropertyName} 'का उपयोग करके स्थिर वर्ग/गुणों से जुड़ता हूं। बस सुनिश्चित करें कि आपके गुणों में 'get' /' set' निर्धारक हैं। उदाहरण के लिए, सुनिश्चित करें कि आप 'सार्वजनिक स्ट्रिंग PropertyName {get; सेट; } 'सार्वजनिक स्ट्रिंग प्रॉपर्टीनाम के बजाय;' – Rachel

उत्तर

63

ग्लोबल्स सुनिश्चित करें। यह एडवर्ड सार्वजनिक है। यदि आप संसाधन फ़ाइल का उपयोग कर रहे हैं तो आपको यह भी मिल सकता है, इस मामले में आपको यह भी सुनिश्चित करना होगा कि एक्सेस संशोधक सार्वजनिक पर सेट हो।

+7

यही वह है! यह समझ में नहीं आया कि डिजाइन समय पर संपत्ति मूल्य सही ढंग से सेट किया गया है, फिर रन टाइम पर यह इस अपवाद के साथ विफल रहता है। बहुत ज्यादा उलझन। – Steztric

+1

पवित्र मोली, तुम सही हो! मैंने कभी सोचा नहीं होगा कि कोड डिजाइनर डिज़ाइन समय पर मेरे संसाधनों तक पहुंचने में सक्षम होगा, जबकि संकलन विफल हो जाएगा "एक्सटेंशनवैल्यू को हल नहीं किया जा सकता" - जैसा कि @Steztric लिखता है। बहुत धन्यवाद! – Informagic

+1

मैं यहां आया क्योंकि मेरी resx फ़ाइल में आंतरिक संशोधक था। इसे सार्वजनिक में बदलें और यह काम करता है और इसी तरह, डिजाइन समय पर यह काम करता है, वीर्य भ्रमित –

7

आउटपुट लाइब्रेरी प्रोजेक्ट में, आपको यह सुनिश्चित करना चाहिए कि संसाधन.रेक्स फ़ाइल के जेनरेटर को डिफ़ॉल्ट रूप से ResXFileGodeGenerator के बजाय PublicResXFileCodeGenerator के रूप में संशोधित किया गया है।

साथ निम्नलिखित बदलें ...

Not public resource

यह एक

correct public resource

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

  • कोई संबंधित समस्या नहीं^_^