2009-10-23 3 views
27

바인딩 I 형 열매 개체를 저장하는 기본 특성을 갖는다.데이터는 텍스트 상자

this.Food을 수정하면 올바르게 업데이트됩니다. 프로그래밍 방식으로 UI를 수정하면

this.textBox.Text = "NewFruit" 등이 업데이트되지 않습니다. 음식.

왜 이럴 수 있습니까? Fruit.Name에도 INotifyPropertyChanged을 구현했지만 여전히 동일합니다.

답변

54

는 당신이에서 INotifyPropertyChanged를 구현하고이에 데이터 바인딩 코드를 변경 추천 :

this.textBox.DataBindings.Add("Text", 
           this.Food, 
           "Name", 
           false, 
           DataSourceUpdateMode.OnPropertyChanged); 

그 문제를 해결할 수 있습니다.

기본값 인 DataSourceUpdateModeOnValidation이므로 OnPropertyChanged을 지정하지 않으면 유효성 검사가 완료 될 때까지 모델 개체가 업데이트되지 않습니다.

+0

고마워요 ♥ –

-2

속성에 데이터 바인딩 한 다음 명시 적으로 databound 속성에 값을 할당 할 수 없습니다.

+0

감사합니다.하지만 왜 이것이 가능하지 않습니까? 나는 그것이 2 가지 방법이라고 생각 했는가? –

+0

Joan, WPF에서 (많이 개선 된) 바인딩입니다. WinForms는 비교적 간단합니다. –

+0

감사합니다 Henk, Winforms에서이 작업을 수행하는 방법을 알고 있습니까? 불행히도이 프로젝트에서는 wpf를 사용할 수 없습니다. –

1

중개자 역할을하고 바인딩을 지원하려면 bindingsource 개체가 필요합니다. 그런 다음 사용자 인터페이스를 업데이트하는 대신 밑줄이있는 모델을 업데이트하십시오.

var model = (Fruit) bindingSource1.DataSource; 

model.FruitType = "oranges"; 

bindingSource.ResetBindings(); 

Windows Forms에 대한 BindingSource 및 간단한 데이터 바인딩을 참조하십시오.

0

우리는 코드

textBox1.DataBindings.Add("Text", model, "Name", false, DataSourceUpdateMode.OnPropertyChanged); 

를 사용할 수 있습니다 어디

  • "Text" -
  • model 텍스트 상자
  • 의 자산 - 모델 객체 여기에 코드
  • "Name" 입력 - 모델의 값을하는 텍스트 상자를 바인딩합니다.