2012-11-21 123 views
6

如何將TextBoxes文本綁定到XAML中的類中的全局變量? 這是用於Windows Phone的方式。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標記擴展綁定到它。

但結合靜態屬性需要一些技巧,因爲它們需要或者創建類的實例虛擬或使其成爲一個單可能不會工作你的情況。此外,我認爲至少在Windows手機7 x:Static不可用。因此,您可能需要考慮將該屬性設置爲實例屬性,也可以將其設置爲單獨的ViewModel,然後將其設置爲DataContext

+0

謝謝你!我已經在KDiTraglia的解決方案方面取得了一些成功,但您的答案提供了一些有用的見解!另外,在VS2012和Windows Phone應用程序的XAML中,似乎沒有「x:static」,只有「x:Null」和「x:StaticResource」。 – Travv92

+0

@ Travv92我剛發現至少WP7不支持x:Static。我在答案結尾添加了一個替代方案(和IMO更好)解決方案。關於INotifyPropertyChanged/DependencyProperty的觀點仍然適用於這一點。 – Botz3000

13

首先你只能綁定屬性,所以你需要添加一個getter和setter。

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