2012-11-21 1 views
6

XAML 클래스의 전역 변수에 TextBoxes Text를 바인딩하려면 어떻게해야합니까? 이것은 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 : 정적", "x : Null"및 "x : StaticResource"만있는 것 같지 않습니다. – Travv92

+0

@ Travv92 방금 WP7이 x : Static을 지원하지 않는다는 것을 알았습니다. 내 답변 끝에 대체 (및 IMO 더 나은) 솔루션을 추가했습니다. INotifyPropertyChanged/DependencyProperty에 대한 요점은 여전히 ​​그것에 적용됩니다. – Botz3000

13

먼저 속성에만 바인딩 할 수 있으므로 getter 및 setter를 추가해야합니다. 당신도 여기에 클래스, 그리고 간단한과 결합하는 양식의 DataContext을 설정할 수 있습니다

public static bool is_verifying { get; set; } 

다음 :

"{Binding is_verifying}" 

를 또는 양식의 자원 클래스에 대한 참조를 만들고 그것을 이렇게 참조하십시오 :

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

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

감사합니다. 저는 첫 번째 예를 사용했고 완벽하게 작동했습니다. :) – Travv92