Objective-c/cocoa는 컨트롤의 속성 (즉, 텍스트 상자의 텍스트)을 개체의 속성에 바인딩 할 수있는 바인딩 양식을 제공합니다. C# w/.Net 3.5에서이 기능을 복제하려고합니다.C#의 개체에 데이터 바인딩
나는 파일 MyClass.cs에 다음과 같은 매우 간단한 클래스를 만들었습니다
class MyClass
{
private string myName;
public string MyName
{
get
{
return myName;
}
set
{
myName = value;
}
}
public MyClass()
{
myName = "Allen";
}
}
가 나는 또한 1 텍스트 박스 1 개 버튼으로 간단한 양식을 만들었습니다. 폼 코드 안에 Myclass의 인스턴스 하나를 초기화하고 프로젝트를 만들었습니다. Vs2008의 DataSource Wizard를 사용하여 개체를 기반으로 데이터 소스를 만들고 MyClass 어셈블리를 선택했습니다. 이것은 데이터 소스 개체를 만들었습니다. 나는이 데이터 소스로 텍스트 상자의 데이터 바인딩을 변경했다. 그러나 예상 된 결과 (텍스트 상자의 내용이 "allen")는 달성되지 않았습니다. 또한 텍스트를 텍스트 상자에 넣는 것은 개체의 이름 속성을 업데이트하지 않습니다.
나는 여기에 근본적인 것이 빠져 있다는 것을 알고있다. 어떤 시점에서 나는 폼 코드 내에서 텍스트 박스로 초기화 된 MyClass 클래스의 인스턴스를 묶어야하지만 발생하지 않았다. 내가 온라인에서 보았던 모든 것은 DataBinding을 객체와 함께 사용하여 광택을 보일 것입니다. 그래서 모든 도움이 정말 감사합니다.
편집 : 그 주석 경우
this.myClassBindingSource.DataSource = typeof(BindingTest.MyClass);
및 대체 :
내가 답변에서 배운 것을 활용하여, 나는 비주얼 스튜디오에 의해 생성 된 코드를보고, 다음이 있었다
this.myClassBindingSource.DataSource = new MyClass();
예상되는 동작이 나타납니다. VS에서 생성 된 기본 코드는 왜 그런 것입니까? 이 방법이 작동하는 방법보다 정확하다고 가정하면 VS가 생성 한 범위 내에서 작동하도록 코드를 수정해야합니까?
기본 코드는 디자인 타임에 모든 컨트롤이 데이터 바인딩에 사용할 수있는 다양한 유형의 속성을 알 수 있도록 처리됩니다. 하지만 런타임에는 실제 인스턴스가 필요합니다. 자동 생성 된 코드를 제거하지 말고 폼에서 새 값을 설정하십시오. –