XAML数据绑定到全局变量?

Tra*_*v92 8 c# data-binding silverlight xaml 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;
        }
      }

    }
Run Code Online (Sandbox Code Playgroud)

我想将Textboxes文本绑定到"is_verifying".

谢谢.

Kev*_*lia 15

首先,您只能绑定到属性,因此您需要添加一个getter和setter.

public static bool is_verifying { get; set; }
Run Code Online (Sandbox Code Playgroud)

接下来,您可以在DataContext此处将表单设置为您的类,并使用简单的绑定:

"{Binding is_verifying}"
Run Code Online (Sandbox Code Playgroud)

或者在表单的资源中创建对类的引用,并像这样引用它:

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

<TextBox Text="{Binding Source={StaticResource LoginForm}, Path=is_verifying}"/>
Run Code Online (Sandbox Code Playgroud)


Bot*_*000 4

您无法绑定到字段,您需要将其设为属性,并且仍然不会通知您更改,除非您实现某种通知机制,这可以通过例如实现来实现INotifyPropertyChanged通过该财产 a DependencyProperty.

当您拥有房产时,通常可以使用x:Static标记扩展来绑定到它。

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