2009-07-21 26 views
12

का उपयोग कर WPF एप्लिकेशन मैंने 3 अलग-अलग विंडो, Home.xaml, Name.xaml, Config.xam एल के साथ सी # में एक WPF एप्लिकेशन बनाया है। मैं Home.xaml.cs में एक चर घोषित करना चाहता हूं जिसे मैं अन्य रूपों में उपयोग कर सकता हूं। मैंने public string wt = ""; करने की कोशिश की लेकिन यह काम नहीं किया।वैश्विक चर

मैं इसे तीनों रूपों से कैसे उपयोग कर सकता हूं?

public static class ConfigClass() 
{ 
    public static int MyProperty { get; set; } 
} 

संपादित करें::

विचार यहाँ एक वर्ग है कि आप सभी "आम डेटा" यह मानता ही बनाना है, आम तौर पर विन्यास

उत्तर

11

आप एक स्थिर संपत्ति का उपयोग कर सकते हैं। बेशक, आप किसी भी वर्ग का उपयोग कर सकते हैं लेकिन आपको एक स्थिर वर्ग का उपयोग करने का सुझाव देते हैं। आप इस तरह इस संपत्ति का उपयोग कर सकते हैं:

Console.Write(ConfigClass.MyProperty) 
+0

मुझे यकीन है कि मुझे समझ में नहीं हूँ ... आप कृपया समझा जा सकता है। धन्यवाद। – Jake

1

वहाँ दो अलग बातें आप यहाँ कर सकते हैं (दूसरों के बीच, इन सिर्फ दो कि पहले मन में आते हैं)।

  1. आप Home.xaml.cs पर

    सार्वजनिक स्थैतिक स्ट्रिंग फू = "" चर स्थिर कर सकता है;

  2. आप केवल तीनों रूपों में चर में प्रवेश कर सकते हैं।

मैं # 2 के साथ जाऊंगा, और यदि आवश्यक हो तो एक अलग वर्ग बनाएं जिसमें मुझे आवश्यक डेटा शामिल हो। फिर प्रत्येक वर्ग के पास डेटा तक पहुंच होगी।

+0

लेकिन मैं घर में चर के लिए एक मूल्य जोड़ना चाहता हूं और कॉन्फ़िगरेशन में उस मान का उपयोग करना चाहता हूं। अगर मैं सभी रूपों में घोषित करता हूं तो मूल्य मिटा दिया जाता है। मैं इसे कैसे घोषित करूं ताकि मैं इसे तीनों रूपों में निरंतर उपयोग कर सकूं। – Jake

18

उचित तरीके से, खासकर यदि आप कभी XBAPP ले जाना चाहते हैं,

Application.Current.Properties 

जो एक शब्दकोश वस्तु है में संग्रहीत करना है।

+0

प्रॉपर्टीज के सदस्य के रूप में प्रॉपर्टी नहीं आ रही हैं। वर्तमान, क्या इसका उपयोग करने के लिए कुछ खास करना है? संपादित करें: यह सिर्फ मेरे लिए हुआ कि ऐसा इसलिए हो सकता है क्योंकि मैं एक विंडोज फोन एप्लिकेशन बना रहा हूं, इसलिए मेरे पास थोड़ा अलग पुस्तकालय हो सकते हैं। –

+2

@dr monk: विन फोन (7) का मतलब सिल्वरलाइट है, यह उत्तर WPF के बारे में था। –

10

आसपास पारित खिड़कियों और usercontrols, या एक स्थिर वर्ग बनाने के बीच मूल्यों WPF भीतर मौजूदा कार्यक्षमता नकल करने के लिए होने से बचने के लिए, आप इस्तेमाल कर सकते हैं:

  • सेटिंग: App.Current.Properties["NameOfProperty"] = 5;
  • हो रही: string myProperty = App.Current.Properties["NameOfProperty"];

यह ऊपर वर्णित था, लेकिन वाक्यविन्यास थोड़ा दूर था।

यह आपके आवेदन के भीतर वैश्विक चर प्रदान करता है, जो इसके भीतर चल रहे किसी भी कोड से सुलभ है।

+0

क्या होगा यदि हमें वर्ग वस्तुओं को सहेजने की आवश्यकता है? क्या यह वही काम करेगा? –

0

App.xaml:

<Application x:Class="WpfTutorialSamples.App" 
     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" 
     StartupUri="WPF application/ResourcesFromCodeBehindSample.xaml"> 
<Application.Resources> 
    <sys:String x:Key="strApp">Hello, Application world!</sys:String> 
</Application.Resources> 

कोड के पीछे

Application.Current.FindResource("strApp").ToString() 
संबंधित मुद्दे