2009-05-10 8 views
11

मैं .NET प्रोग्रामिंग के लिए नया हूं, और सिल्वरलाइट 2/सी # सीखने की कोशिश कर रहा हूं।चांदी की रोशनी में xaml और C# के बीच संख्यात्मक स्थिरता कैसे साझा करें

मुझे संख्यात्मक स्थिरांक (या बेहतर अभी तक, केवल पढ़ने योग्य चर) घोषित करने की आवश्यकता है, और उन्हें XAML और मेरी सी # कोड-बैक फ़ाइल दोनों में एक्सेस करना होगा।

ये मान XAML में अधिक उचित रूप से परिभाषित किए गए हैं, लेकिन यदि परिभाषा सी # में की जानी चाहिए, तो यह कई स्थानों पर मूल्य को हार्ड-कोडिंग से बेहतर है।

मुझे डब्ल्यूपीएफ एक्सएएमएल के लिए एक समाधान मिला, लेकिन सिल्वरलाइट स्पष्ट रूप से वाक्यविन्यास का समर्थन नहीं करता है (और मुझे जो समाधान मिला वह परिभाषा सी # फाइल में होनी चाहिए)।

टीआईए!

माइकल का जवाब दें

क्योंकि टिप्पणी संपादक मुझे इतना पाठ जोड़ने के लिए अनुमति नहीं है और मैं एक और तरीका प्रतिक्रिया करने के लिए नहीं मिल सका मैं इस जबाब अपने मूल प्रश्न के लिए एक टिप्पणी के रूप में जोड़ रहा आपके उत्तर में

उत्तर के लिए धन्यवाद, माइकल, लेकिन मुझे लगता है कि यह काम करने में सक्षम नहीं है।

मैं "सी # 2008 में प्रो सिल्वरलाइट 2" से एक उदाहरण के साथ शुरू कर रहा हूं। उदाहरण ठीक काम करता है, लेकिन मुझे अपने XAML में दो स्थानों में एक ही दो मानों को हार्ड-कोड करने और मेरे सी # में एक स्थान की आवश्यकता होती है।

मैंने आपके समाधान को लागू किया, और सब कुछ ठीक बनाया गया, लेकिन जब मैंने कोड निष्पादित करने का प्रयास किया तो मुझे ब्राउज़र में एक पृष्ठ त्रुटि मिली। मैंने सभी बदलावों को हटा दिया, और सत्यापित किया कि चीजें एक बार फिर ठीक हो गईं।

मैंने फिर xmlns: sys घोषणा और sys: Int32 घोषणा को मेरे App.xaml फ़ाइल में जोड़ा। सबकुछ फिर से ठीक हो गया, लेकिन जब मैंने वीएस -2008 में पेज.एक्सएमएल फ़ाइल देखने की कोशिश की, तो मुझे एक अजीब त्रुटि मिली:

अविकसित उपसर्ग [रेखा: 6 स्थिति: 30] - पृष्ठ .xmal, रेखा 1, कॉलम 1

पूर्वावलोकन पृष्ठ खाली था।

पंक्ति 6, Page.xaml के कर्नल 30 पर दिलचस्प कुछ भी नहीं था, लेकिन App.xaml फ़ाइल में, उस स्थान समापन होता है ">" तुरंत पूर्णांक मान 8 से पहले:

<sys:Int32 x:Key="QAPS">8</sys:Int32> 

हैं मैंने एफ 5 मारा, हालांकि, ऐप ब्राउज़र में ठीक चलाता है।

मैं वीएस -2008 एसपी 1 और मार्च 09 सिल्वरलाइट टूलकिट चला रहा हूं।

मुझे समझ में नहीं आ रहा है कि App.xaml एप्लिकेशन संसाधन अनुभाग में QAPS घोषणा क्यों हो सकती है, विशेष रूप से यह देखते हुए कि मैं ऐप में कहीं भी इसका संदर्भ नहीं देता हूं। क्या आपको पता है कि क्या हो रहा है?

माइकल के लिए एक और उत्तर

आप सही है, मैं नहीं जोड़ा रहे था xmlns: मेरे Page.xaml को sys घोषणा है, लेकिन यह कोई फर्क पड़ा जोड़ने - मैं अभी भी 'अघोषित हो रही है उपसर्ग [रेखा: 6 स्थिति: 30] 'पेज.एक्सएमएल में त्रुटि (और ऐप अभी भी चलता है)। चूंकि सबकुछ ठीक चलता है, मुझे लगता है कि यह वीएस -2008 में एक मुद्दा होना चाहिए।

बड़ी समस्या यह थी कि जब मैंने सी # से क्यूएपीएस तक पहुंचने का प्रयास किया तो मुझे रन-टाइम अपवाद मिल रहा था, और मैंने यह पता लगाया कि मैं इसका कारण क्या कर रहा था। समस्या यह थी कि मैं स्पष्ट रूप से अस्तित्व से पहले संसाधन तक पहुंच रहा था।

मैंने वर्ग स्तर पर संसाधन मूल्य रखने के लिए एक निजी चर घोषित/प्रारंभ किया था; जब मैंने ईवेंट हैंडलर को प्रारंभिक स्थानांतरित कर दिया, तो समस्या दूर हो गई। इसलिए मैं अनुमान लगा रहा हूं कि एक्सएएमएल संसाधनों के निर्माण से पहले सी # कक्षा स्तर चर का मूल्यांकन किया जाता है।

(एक तरफ, टिप्पणियों पर 600 वर्ण सीमा वास्तविक दर्द है। जैसा कि है, मुझे जवाब पोस्ट करने के लिए अपना मूल प्रश्न संपादित करना होगा)।

+0

क्या करता है की तरह Xaml के माध्यम से एक्सएएमएल आपके पेज.एक्सएमएल की तरह दिखता है। आपने शायद xmlns को छोड़ा: sys नेमस्पेस घोषणा आपके पृष्ठ पर .xaml। –

उत्तर

19

उन्हें अपने आवेदन या पृष्ठ स्रोत रखो:

<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:sys="clr-namespace:System;assembly=mscorlib"> 
    <Application.Resources> 
     <sys:Int32 x:Key="QPS">8</sys:Int32> 
    </Application.Resources> 
</Application> 

तो फिर तुम इस तरह कोड से उन तक पहुँच सकते हैं:

if (Application.Current.Resources.Contains("QPS")) 
{ 
    int callsPerSecond = (int) Application.Current.Resources["QPS"]; 
} 

और इस

<TextBlock Text="{StaticResource QPS}"/> 
+0

एक्सएएमएल 200 9 के अनुसार, आपकी संसाधन परिभाषा ' 8' होगी। यह विंडोज 8 और विंडोज फोन 8.1 पर लागू होता है। Http://msdn.microsoft.com/en-us/library/ee792002(v=vs.110).aspx का संदर्भ लें। – danhbear

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