2010-01-23 5 views
4

C# : 몇 가지 GUI 클래스간에 공유되는 데이터 클래스가 있습니다. 일부 GUI가 변경되면이를 사용하는 모든 GUI 클래스에 알림이 표시되므로 GUI를 최신 상태로 유지할 수 있습니다.Gui에게 데이터 클래스가 변경되었음을 알립니다.

몇 가지 속성에서 GUI 클래스가 업데이트를 수신 할 수있는 대리인을 추가했습니다. 이것은 잘 작동하는 것 같습니다.

내가 가진 문제는 점점 더 많은 속성에 GUI 알림이 필요하다는 것입니다. 그런 일이 발생하면 더 많은 대의원을 추가해야합니다. 또한 이것이 관리해야하는 데이터 클래스에 대한 추가 책임을 추가하는 것으로 보입니다.

이 클래스를 모니터링하여 데이터 클래스에서이 알림 기능을 추출하는 데 사용할 수있는 공통 패턴이 있습니까?

+0

이 인터페이스에 대해 알고 좋은,하지만 여전히 책임의 많은 나뭇잎 데이터 클래스에서.데이터 클래스에서 세 번째 클래스를 파생시킨 다음이 인터페이스를 구현하는 것이 좋습니다. – MattR

답변

1

내장 된 System.EventHandler을 사용할 수 있습니다. 그것은 꽤 표준적인 패턴입니다. 모니터링하려는 각 속성에 대해 이벤트를 정의해야하지만 별도의 대리자는 필요하지 않습니다.

2

사용중인 GUI 프레임 워크 (WinForms, WPF)는 알려지지 않았지만 INotifyPropertyChanged 인터페이스가 있습니다. MSDN에도 How to 가이드가 있습니다.

6

일반적인 방법은 데이터 클래스가 INotifyPropertyChanged을 구현하는 것입니다.

EDIT : 속성이 많은 경우 데이터 클래스에 매우 반복적 인 코드가 표시 될 수 있으며 UI에 바인딩하는 경우 AOP 방식을 사용하고 속성 호출을 차단하는 것이 가장 좋습니다 당신이 통보하고 싶어하는 것. 대부분의 IoC 컨테이너는 이런 종류의 것을 지원합니다.

0

Windows Forms에는 데이터 바인딩을 사용하여 일부 속성이 chaged 될 때 GUI에 알리는 몇 가지 방법이 있습니다.

Windows Forms에는 몇 가지 유형의 데이터 바인딩이 있습니다. PROPERTYNAME 당신이 GUI에서 업데이 트를 원하는 모든 속성을 변경 : 바인딩 간단한 데이터 (하나의 제어에 하나의 오브젝트 boud와 데이터 소스) 당신이에서 INotifyPropertyChanged를 사용하거나이 형식으로 이벤트를 추가 할 수 있습니다 들어

  1. . 그리고 Binding.ControlUpdateMode 속성을 OnPropertyChanged로 설정해야합니다. 바인딩 복잡한 데이터 모든 (1)에서 사용해야하고 BindingSource 또는 BindingList 또는 수동으로이 IBindingList을 구현 사용해야합니다 (즉, 많은 개체를 표시 할 수 있습니다 컨트롤에 바인딩 많은 개체와 데이터 소스)에 대한

  2. ;

자세한 내용은 당신이 볼 수이 위대한 책 : 크리스 판매하여

Windows Forms 2.0 Programming 브라이언 노이스에 의해 Data Binding with Windows Forms 2.0: Programming Smart Client Data Applications with .NET

관련 문제