2013-05-01 2 views
0

Converter 아래의 주석이 달린 코드처럼 바인딩을 어떻게 사용할 수 있습니까?클래스에 속성에 바인딩

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    {ABC = new ABCClass();  
    InitializeComponent(); 
     //Binding binding = new Binding(); 
     //binding.Source = this; 
     //binding.Path = new PropertyPath("ABC"); 
     //binding.Mode = BindingMode.OneWay; 
     //txtKey.SetBinding(TextBox.TextProperty, binding); 
    Binding binding = new Binding(); 
    binding.Source = this; 
    binding.Path = new PropertyPath("ABC"); 
    binding.Mode = BindingMode.OneWay; 
    binding.Converter = new ABCTypeConverter(); 
    txtKey.SetBinding(TextBox.TextProperty, binding); 
} 

클래스와 Converter : 사이트 편집기는 "대부분의 코드"를 허용하지 않기 때문에 Converter 코드를 제거

public ABCClass ABC { get; set; } 
} 


public class ABCClass 
{ 
    public int A = 1; 
    public int B = 2; 
    public int C = 3; 

    public override string ToString() 
    { 
     return (A + B + C).ToString(); 
    } 
} 

. 이 코드에는 "모드 세부 정보"가 필요하지 않습니다.

답변

1

WPF는 필드 바인딩을 지원하지 않습니다. 단지 Properties : 그건 그렇고, 당신은 XAML에서 바인딩을 생성해야되지 절차 적 코드에 의해

public class ABCClass 
{ 
    public int A {get;set;} 
    public int B {get;set;} 
    public int C {get;set;} 

    public override string ToString() 
    { 
     return (A + B + C).ToString(); 
    } 

    public ABCClass() 
    { 
     A = 1; 
     B = 2; 
     C = 3; 
    } 
} 

:

은 수업이 들어

public class ABCClass 
{ 
    public int A = 1; 
    public int B = 2; 
    public int C = 3; 

    public override string ToString() 
    { 
     return (A + B + C).ToString(); 
    } 
} 

변경

.

나중에 A,B,C의 값을 수정하려는 경우 Implement INotifyPropertyChanged을 적절하게 설정하지 않으면 이러한 변경 사항이 반영되지 않습니다. 이 같은 "이집트 중괄호"퍼팅

그리고, C 번호 표기에 익숙해하십시오 :

대신

public class MyClass 
{ 
     //...Etc 
} 

나 때문에 유사성의 구토 싶 올바른 방법의

public class MyClass { 
    //...Etc  
} 

진절머리 나는 자바 물건. 당신이 ABCClassToString 값이 txtKey라는 TextBox에 표시하려고 노력하는 것처럼

0

는 것 같습니다. 이 경우 Binding의 기본 동작은 문자열이 아닌 개체가 문자열 속성 (이 경우 TextBox.Text)에 바인딩되어있는 경우 ToString 값을 사용하기 때문에 변환기가 필요하지 않습니다.

A,B,C 값을 사용하여이 시나리오를 지원하는 속성을 사용할 필요는 없지만 일반적으로 공개 필드를 사용하는 것이 바람직하지 않으므로 공개 필드를 비공개로 만들거나 속성으로 래핑하는 것이 좋습니다.