바인딩 I 형 열매 개체를 저장하는 기본 특성을 갖는다.데이터는 텍스트 상자
this.Food
을 수정하면 올바르게 업데이트됩니다. 프로그래밍 방식으로 UI를 수정하면
this.textBox.Text = "NewFruit"
등이 업데이트되지 않습니다. 음식.
왜 이럴 수 있습니까? Fruit.Name에도 INotifyPropertyChanged
을 구현했지만 여전히 동일합니다.
바인딩 I 형 열매 개체를 저장하는 기본 특성을 갖는다.데이터는 텍스트 상자
this.Food
을 수정하면 올바르게 업데이트됩니다. 프로그래밍 방식으로 UI를 수정하면
this.textBox.Text = "NewFruit"
등이 업데이트되지 않습니다. 음식.
왜 이럴 수 있습니까? Fruit.Name에도 INotifyPropertyChanged
을 구현했지만 여전히 동일합니다.
는 당신이에서 INotifyPropertyChanged를 구현하고이에 데이터 바인딩 코드를 변경 추천 :
this.textBox.DataBindings.Add("Text",
this.Food,
"Name",
false,
DataSourceUpdateMode.OnPropertyChanged);
그 문제를 해결할 수 있습니다.
기본값 인 DataSourceUpdateMode
은 OnValidation
이므로 OnPropertyChanged
을 지정하지 않으면 유효성 검사가 완료 될 때까지 모델 개체가 업데이트되지 않습니다.
속성에 데이터 바인딩 한 다음 명시 적으로 databound 속성에 값을 할당 할 수 없습니다.
감사합니다.하지만 왜 이것이 가능하지 않습니까? 나는 그것이 2 가지 방법이라고 생각 했는가? –
Joan, WPF에서 (많이 개선 된) 바인딩입니다. WinForms는 비교적 간단합니다. –
감사합니다 Henk, Winforms에서이 작업을 수행하는 방법을 알고 있습니까? 불행히도이 프로젝트에서는 wpf를 사용할 수 없습니다. –
중개자 역할을하고 바인딩을 지원하려면 bindingsource 개체가 필요합니다. 그런 다음 사용자 인터페이스를 업데이트하는 대신 밑줄이있는 모델을 업데이트하십시오.
var model = (Fruit) bindingSource1.DataSource;
model.FruitType = "oranges";
bindingSource.ResetBindings();
Windows Forms에 대한 BindingSource 및 간단한 데이터 바인딩을 참조하십시오.
우리는 코드
textBox1.DataBindings.Add("Text", model, "Name", false, DataSourceUpdateMode.OnPropertyChanged);
를 사용할 수 있습니다 어디
"Text"
- model
텍스트 상자"Name"
입력 - 모델의 값을하는 텍스트 상자를 바인딩합니다.
고마워요 ♥ –