2012-11-21 16 views
6

Bir TextBoxes Metni XAML'deki sınıfımdaki genel bir değişkene nasıl bağlarım? Bu, Windows Phone içindir.XAML verileri global değişkene bağlanıyor mu?

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; 
     } 
     } 

    } 

Ve ben "is_verifying" Bir metin kutularının metin bağlamak istiyorum: Burada

kodudur.

Teşekkürler.

cevap

1

Bir alana bağlamak olamaz, bunu bir Mülkiyet yapmanız gerekir ve örneğin elde edilebilir bildirim mekanizmasının bir çeşit uygulamak sürece hala, o zaman değişikliklerden haberdar olmayacak INotifyPropertyChanged uygulayarak veya özelliği DependencyProperty yaparak. Eğer bir özelliğe sahip olduğunda

, genellikle kendisine bağlamak için x:Static biçimlendirme uzantısını kullanabilirsiniz.

Ama statik özellik bağlanma onlar da sınıfının bir kukla örneğini oluşturarak veya bunu a tek yapım gerektiren beri sizin durumda işe yaramayabilir bazı numaralar gerektirir. Ayrıca en azından Windows Phone 7 x:Static mevcut değildir düşünüyorum. Bu nedenle, mülkün bir örnek özelliğini, belki de DataContext olarak ayarlayabileceğiniz ayrı bir ViewModel üzerinde yapmayı düşünebilirsiniz.

+0

Bunun için teşekkürler! KDiTraglia'nın çözümü ile zaten bir takım başarılar elde ettim ama cevabınız bazı faydalı bilgiler içeriyor! Ayrıca, VS2012 ve Windows Phone uygulamaları için XAML'de bir "x: static", sadece "x: Null" ve "x: StaticResource" gibi görünüyor. – Travv92

+0

@ Travv92 En azından WP7'nin x'i desteklemediğini öğrendim: Statik. Cevabımın sonunda bir alternatif (ve IMO daha iyi) çözümü ekledim. INotifyPropertyChanged/DependencyProperty ile ilgili nokta yine de bunun için geçerlidir. – Botz3000

13

İlk olarak yalnızca özelliklere bağlanabilirsiniz, bu nedenle bir alıcı ve ayarlayıcı eklemeniz gerekir. Ya burada sınıf olmak ve basit ile bağlamak için formun DataContext ayarlayabilirsiniz

public static bool is_verifying { get; set; } 

Sonraki:

"{Binding is_verifying}" 

Veya formun kaynaklarda Sınıfınızda bir referans oluşturmak ve Bu şekilde başvurunuz:

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

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

Teşekkürler, ilk örneğinizi kullandım ve mükemmel çalıştım :) – Travv92