2010-12-11 4 views
0

내가 만든 클래스의 다양한 필드를 표시하기 위해 일부 텍스트 상자를 데이터 바인딩하려고합니다.클래스 개체에 데이터 바인딩을 사용할 수 있습니까?

다음 코드를 시도했습니다.

MyClass ClassObj = new MyClass(); 
    DataContext = ClassObj; 

    // Create a new binding 
    // Val1 is a variable of type String in MyClass class 
    Binding myNewBindDef = new Binding("Val1"); 

    myNewBindDef.Mode = BindingMode.TwoWay; 
    myNewBindDef.Source = ClassObj; 

    // txtBox1is a TextBlock object that is the binding target object 
    BindingOperations.SetBinding(txtBox1, TextBox.TextProperty, myNewBindDef); 

나는 System.Windows.Data 및 System.ComponentModel에 대한 사용 을 추가 한, 그리고 MyClass에가에서 INotifyPropertyChanged를 구현합니다. 그러나 응용 프로그램을 실행하고 ClassObj.Val1의 값을 업데이트해도 아무 것도 영향을 미치지 않으면 텍스트 상자가 비어 있습니다.

누락 된 단계가 있습니까? 아니면 더 좋은 방법이 있습니까?

감사

답변

0

아아, 공개 변수를 먼저 Val1로 만들어야한다는 것을 알았습니다.

1

에서 INotifyPropertyChanged에 대한 대안은 MyClass에가 DependencyObject에서 상속 확인하고 DependencyProperty.Register() 함수를 사용 val1을위한 DependencyProperty에를 생성하는 것입니다. DependencyProperty는 MyClass의 공용 레벨 정적 멤버에 저장되어야합니다. 그런 다음 Valter 속성에 대한 Getter 및 Setter에서 GetValue() 및 SetValue()를 사용하여 DependencyProperty에 액세스합니다.

관련 문제