2011-08-27 3 views
3

BindingList<Person{Name, age}> 클래스와 목록을 호스팅하는클래스가 있다고 가정합니다. 응용 프로그램에서 모든 컨트롤은 사람 목록을 조작하거나 업데이트하기 위해 사람 목록에 배치됩니다. 예 : 사람의 이름이있는 목록 상자, 선택한 사람의 나이를 업데이트하는 컨트롤 등데이터 컨테이너에 "저장해야합니까?"메커니즘을 구현하려면 어떻게해야합니까?

이 작업을 수행하려면 "저장해야합니까?"메커니즘을 구현하고 싶습니다. 어쨌든, 사용자는 PersonManager가 저장되도록 변경되었는지 여부를 알아야합니다.

Person이 PersonChangedEvent를 발생시킬 때 발생하는 PersonManager에서 이벤트를 구현하고 작성하는 INotifyPropertyChanged 이벤트를 잡아내는 것이지만. 이벤트 전달 메커니즘과 같은 것입니다.

이것은 오류가 발생하는 것 같습니다. 더 나은 방법에 대한 제안?

답변

1

BindingList의 항목이 INotifyPropertyChanged를 구현하면 PropertyChanged 이벤트 항목 중 하나가 발생하면 BindingList의 ListChanged 이벤트가 실행됩니다.

그러므로 PersonManager에서 BindingList의 ListChanged 이벤트를 처리하고 더티 부울 플래그 (더티는 부실하거나 저장되지 않은 데이터의 일반적인 표시 자임)를 설정하면됩니다. 그런 다음, 응용 프로그램은 PersonManager에 데이터가 더러운 지 여부를 묻습니다. 응용 프로그램이 데이터를 저장하면 PersonManager에 더티 플래그를 재설정하도록 지시합니다. PersonManager가 데이터 저장을 처리하면 자신의 플래그를 재설정 할 수 있습니다.

희망이 도움이됩니다.

관련 문제