XAML数据绑定到全局变量?

时间:2012-11-21 14:03:20

标签: c# silverlight xaml data-binding windows-phone-8

如何将TextBoxes Text绑定到XAML中我的类中的全局变量? 顺便说一句,这适用于Windows Phone。

以下是代码:

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

    }

我想将Textboxes文本绑定到“is_verifying”。

感谢。

2 个答案:

答案 0 :(得分:15)

首先,您只能绑定到属性,因此您需要添加一个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}"/>

答案 1 :(得分:3)

您无法绑定到某个字段,您需要将其设为属性,然后,除非您实现某种通知机制,否则您将不会收到有关更改的通知。通过实施INotifyPropertyChanged或将属性设为DependencyProperty

当您拥有某个属性时,通常可以使用x:Static标记扩展名绑定它。

但是绑定到静态属性需要一些技巧,这可能不适用于您的情况,因为它们需要创建类的虚拟实例或使其成为单例。另外我认为至少在Windows Phone 7中x:Static不可用。因此,您可能需要考虑将该属性设置为实例属性,可以在单独的ViewModel上设置为DataContext