저는 닷넷 데이터 바인딩 스키마와 정말 사랑에 빠져 있습니다 ...하지만 분명히 거기에 몇 가지 잡티가 있습니다. 내 클래스에 double 형 멤버 변수 Susan
이 있다고 가정 해 보겠습니다. 음 속성 때문에 바인딩 외모 뭔가C# 클래스 변수의 데이터 바인딩
SusanText.DataBindings.Add("Text",datasource,"Property")
그리고 Susan
다음과 같이 텍스트 상자 SusanText
에 Susan
을 결합 할 즉각적인 방법은없는가없는 것 같다. 그래서 나는 Susan
을 공공 재산으로 만들 수 있습니다. 그러나 그것은 다소 냄새가납니다 ... 내가 계속 Susan
을 숨기고 싶다면 어떻게해야합니까? (나는 내부 클래스의 private 인스턴스의 공개 속성 인 Susan
을 만들 수 있다고 생각합니다.하지만 이것은 작은 double을위한 많은 작업입니다.) 그러나 더 큰 문제가 발생했습니다. 따라서 인수를 위해 이 작업을 수행하십시오.
private double Susan_;
public double Susan{ get; set;}
...
SusanText.DataBindings.Add("Text",this,"Susan")
처음에는 모든 것이 예상대로 작동하는 것 같습니다. SusanText
을 변경하면 그에 따라 Susan
이 변경됩니다. 그러나 Susan
을 직접 변경하면 문제가 발생합니다. SusanText
을 자동으로 업데이트하고 싶습니다. 따라서 Susan
을 IBindable 인터페이스를 구현하는 double의 하위 클래스로 만들어야한다고 생각합니다. Susan
이 SusanText
으로 데이터 바인딩되면 해당 이벤트가 등록되고 Susan
은 수정되면 다른 사용자에게 알립니다.
Susan
내가 그녀가하고 싶은 일을하는 가장 간단한 방법은 무엇입니까?
감사합니다.
"자동 구현 속성을 사용할 수 없습니다"잘, 당신은, 당신은 단지 설정 후 INPC을 발사 할 수 있습니다
와 XAML에서 재산. 약간 이상하게 보일 지 모르지만 의사 트랜잭션의 일부로 여러 속성을 업데이트하려는 경우와 같이 때로는 유용한 패턴입니다. – Will
@ 윌,하지만 소비 클래스 (B)가 데이터 바인딩 된 클래스 (A)에 메서드를 호출하여 (A) 이벤트를 발생시키고 냄새를 풍기게 할 수 있습니다. .NET의 이벤트는 클래스 내부에서 해고 될 의도로 만들어 졌기 때문에 특별한 위임자입니다. 외부 구성 요소를 사용하여 이벤트를 트리거해야 사람들이 잊어 버릴 수 있습니다. IMO 추가 작업을 수행하고 databound 클래스를 자체 이벤트를 발생시킬 수있게 만드는 것이 좋습니다. – STW
@stw 그냥 옵션, 그냥 옵션. 나는 DependencyObjects를 어떻게 든 사용하고 있습니다. 자신이 가진 바운드 속성을 쉽게 처리 할 수 있습니다. – Will