2012-11-21 31 views
6

मैं XAML में अपनी कक्षा में एक वैश्विक चर में टेक्स्टबॉक्स टेक्स्ट कैसे बांध सकता हूं? यह विंडोज फोन के लिए है।एक्सएएमएल डेटा एक वैश्विक चर के लिए बाध्यकारी?

यहाँ कोड है:

namespace Class 
    { 
    public partial class Login : PhoneApplicationPage 
    { 
     public static bool is_verifying = false; 

     public Login() 
     { 
      InitializeComponent();   
     } 


     private void login_button_Click(object sender, RoutedEventArgs e) 
     { 
      //navigate to main page 
      NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.RelativeOrAbsolute)); 
     } 

     private void show_help(object sender, EventArgs e) 
     { 
      is_verifying = true; 
     } 
     } 

    } 

और मैं एक बक्सें पाठ करने के लिए "is_verifying" बाध्य करने के लिए चाहते हैं।

धन्यवाद।

उत्तर

1

आप किसी क्षेत्र से जुड़ नहीं सकते हैं, आपको इसे एक संपत्ति बनाने की आवश्यकता होगी, और फिर भी, तब तक आपको परिवर्तनों की अधिसूचना नहीं दी जाएगी जबतक कि आप किसी प्रकार की अधिसूचना तंत्र को लागू नहीं करते हैं, जिसे प्राप्त किया जा सकता है। INotifyPropertyChanged को लागू करके या संपत्ति को DependencyProperty लागू करके।

जब आपके पास कोई संपत्ति है, तो आप आमतौर पर x:Static मार्कअप एक्सटेंशन का उपयोग करने के लिए इसका उपयोग कर सकते हैं।

लेकिन एक स्थिर संपत्ति के लिए बाध्यकारी कुछ चाल की आवश्यकता है, जो आपके मामले में काम नहीं कर सकता है क्योंकि उन्हें या तो अपनी कक्षा का डमी उदाहरण बनाने या इसे सिंगलटन बनाने की आवश्यकता होती है। मुझे लगता है कि कम से कम विंडोज फोन 7 x:Static में उपलब्ध नहीं है। तो हो सकता है कि आप संपत्ति को एक इंस्टेंस प्रॉपर्टी बनाने पर विचार करना चाहें, शायद एक अलग व्यूमोडेल पर जिसे आप DataContext के रूप में सेट कर सकते हैं।

+0

इसके लिए धन्यवाद! मुझे पहले से ही केडी ट्राग्लिया के समाधान के साथ कुछ सफलता मिली है लेकिन आपका जवाब कुछ उपयोगी अंतर्दृष्टि प्रदान करता है! इसके अलावा, वीएस2012 और विंडोज फोन अनुप्रयोगों के लिए एक्सएएमएल में, "x: static", केवल "x: null" और "x: StaticResource" प्रतीत नहीं होता है। – Travv92

+0

@ Travv92 मुझे अभी पता चला है कि कम से कम WP7 x का समर्थन नहीं करता है: स्टेटिक। मैंने अपने उत्तर के अंत में एक वैकल्पिक (और आईएमओ बेहतर) समाधान जोड़ा। INotifyPropertyChanged/DependencyProperty के बारे में बिंदु अभी भी उस पर लागू होता है। – Botz3000

13

सबसे पहले आप केवल संपत्तियों से जुड़ सकते हैं, इसलिए आपको गेटटर और सेटर जोड़ने की आवश्यकता है।

public static bool is_verifying { get; set; } 

अगला आप या तो अपने फार्म की DataContext सेट यहाँ वर्ग हो, और एक सरल के साथ बाध्य करने के लिए कर सकते हैं:

"{Binding is_verifying}" 

या प्रपत्र के संसाधनों में अपने वर्ग के लिए एक संदर्भ बना सकते हैं और इसका संदर्भ लें:

<Window.Resources> 
    <local:Login x:Key="LoginForm"/> 
</Window.Resources> 
... 

<TextBox Text="{Binding Source={StaticResource LoginForm}, Path=is_verifying}"/> 
+0

धन्यवाद, मैंने आपका पहला उदाहरण इस्तेमाल किया और पूरी तरह से काम किया :) – Travv92

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

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