다음을 통해 공유


Windows Forms 데이터 바인딩의 변경 알림

Windows Forms 데이터 바인딩의 가장 중요한 개념 중 하나는 변경 알림입니다. 데이터 원본 및 바인딩된 컨트롤에 항상 최신 데이터가 있는지 확인하려면 데이터 바인딩에 대한 변경 알림을 추가해야 합니다. 특히 바인딩된 컨트롤이 해당 데이터 원본에 적용된 변경 내용에 대해 알림을 받고 데이터 원본에 컨트롤의 바인딩된 속성에 대한 변경 내용에 대한 알림을 받도록 하기를 원합니다.

데이터 바인딩의 종류에 따라, 다양한 종류의 변경 알림이 있습니다.

  • 단순 바인딩. 단일 컨트롤 속성이 개체의 단일 인스턴스에 바인딩됩니다.

  • 목록 기반 바인딩. 목록의 항목 속성에 바인딩된 단일 컨트롤 속성 또는 개체 목록에 바인딩된 컨트롤 속성을 포함할 수 있습니다.

또는 데이터 바인딩에 사용하려는 Windows Forms 컨트롤을 생성하는 경우, PropertyNameChanged 패턴을 컨트롤에 적용하여, 컨트롤의 바인딩된 속성 변경 사항이 데이터 원본에 전파되도록 해야 합니다.

단순 바인딩에 대한 변경 알림

단순 바인딩의 경우, 비즈니스 개체는 바인딩된 속성의 값이 변경될 때 변경 알림을 제공해야 합니다. 비즈니스 개체의 각 속성에 대한 PropertyNameChanged 이벤트를 노출시키고 BindingSource 또는 비즈니스 개체가 INotifyPropertyChanged 인터페이스를 구현하고 속성 값이 변경될 때 PropertyChanged 이벤트를 제기하는 원하는 방법으로 비즈니스 개체를 컨트롤에 바인딩하면 됩니다. 자세한 내용은 방법: INotifyPropertyChanged 인터페이스 구현을 참조하세요. INotifyPropertyChanged 인터페이스를 구현하는 개체를 사용할 때는 개체를 컨트롤에 바인딩하기 위해 반드시 BindingSource를 사용해야 하는 건 아니지만, BindingSource 사용이 권장됩니다.

목록 기반 바인딩에 대한 변경 알림

Windows Forms는 바인딩된 목록에 따라 속성 변경(목록 항목 속성 값 변경) 및 목록 변경(항목이 삭제되거나 목록에 추가됨) 정보를 바인딩된 컨트롤에 제공합니다. 따라서, 데이터 바인딩에 사용된 목록은 IBindingList를 구현해야 합니다. 이것은 두 가지 유형의 변경 알림을 모두 제공합니다. BindingList<T>IBindingList의 일반 구현이며 Windows Forms 데이터 바인딩과 함께 사용하도록 설계되었습니다. INotifyPropertyChanged를 구현하는 비즈니스 개체 유형을 포함하는 BindingList<T>를 생성할 수 있으며 목록은 PropertyChanged 이벤트를 자동으로 ListChanged 이벤트로 변환합니다. 바인딩된 목록이 IBindingList가 아닌 경우, BindingSource 구성 요소를 사용하여 개체의 목록을 Windows Forms로 바인딩해야 합니다. BindingSource 구성 요소는 BindingList<T>의 변환과 유사한 속성-목록 변환을 제공합니다. 자세한 내용은 방법: BindingSource와 INotifyPropertyChanged 인터페이스를 사용하여 변경 내용 알림 발생을 참조하세요.

사용자 지정 컨트롤에 대한 변경 알림

마지막으로, 컨트롤 측에서 데이터에 바인딩되도록 설계된 각 속성에 대해 PropertyNameChanged 이벤트를 노출시켜야 합니다. 그러면 컨트롤 속성의 변경 사항이 바인딩된 데이터 원본으로 전파됩니다. 자세한 내용은 방법: PropertyNameChanged 패턴 적용을 참조하세요.

참고 항목