Microsoft MVP성태의 닷넷 이야기
ObservableCollection 에서 INotifyPropertyChanged 구현해야하나요? [링크 복사], [링크+제목 복사],
조회: 6207
글쓴 사람
윤길
홈페이지
첨부 파일
 

WPF 질문 좀 드립니다

회원목록 데이터 Members를 DataGrid 에 표시하고 Members 와 DataGrid 를 TwoWay 로 바인딩하여
Members 데이터를 변경하면 DataGrid 에서도 변경되도록하고
DataGrid 에서 데이터를 변경하면 Members 도 변경이 되도록 양쪽을 동기화 하도록 만들었습니다

Members 클래스는 ObservableCollection 를 상속하여 만들었습니다.
class Member : INotifyPropertyChanged
{
  ...
}

class Members : ObservableCollection<Member>
{
  ...
}





여기서 한가지 궁금한것은

ObservableCollection 에서도 INotifyPropertyChanged 를 상속 받는다는것입니다
Memeber 에 이미 통지 기능을 구혔했는데
ObservableCollection 에서도 INotifyPropertyChanged 가 또 필요한건가요?

일단 작동은 잘되긴 하는데
ObservableCollection 에서도 INotifyPropertyChanged 를 상속하는것을 보면서 좀 혼란스럽습니다


아니면 Member 에서 INotifyPropertyChanged 를 구현하는게 아니라
ObservableCollection 을 상속 받는 Members 에서 INotifyPropertyChanged 를 구현하는게 맞는 설계인가요?





감사합니다








[최초 등록일: ]
[최종 수정일: 2/7/2023]


비밀번호

댓글 작성자
 



2023-02-07 04시30분
ObservableCollection에 INotifyPropertyChanged가 구현돼 있는 것은, 그 목록이 담고 있는 "개별 요소들의 변화"를 위한 것이 아니고, ObservableCollection 인스턴스 자체의 변화를 알리기 위한 것입니다.

따라서 제시하신 코드에서 Members 같은 경우에는 기본적으로는 PropertyChanged 알림을 사용할 필요는 없습니다. 단지, Members 타입 나름대로 추가한, 예를 들어 Team이라는 공용 속성을 추가해 그것을 외부로 데이터바인딩 시켜 제공하고 싶다면 Team에 대해 PropertyChanged 알림을 적용하면 됩니다.
정성태
2023-02-07 04시43분
[윤길] 아.. Members 가 담고있는 개별 Member 요소에 대한 통지가 아니라 Members 콜렉션 객체 자체의 변경 통지 기능이었군요
아 이해가 됐습니다
전 이게 통지 기능을 Member, Members 둘중에 하나만 구현해도 작동은 되긴 되나보다하고 그냥 넘어가려고했는데
질문 작성하길 잘한것같습니다

답변 정말 감사합니다 ^^
[guest]

1  2  3  [4]  5  6  7  8  9  10  11  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
5879guest4/4/20238026Async method의 에러 표시 [3]
5878guest4/3/20238533C#으로 CMOS 설정 변경가능한지요? [4]
5875guest4/2/20239044성태님 책을 완독 하고 Static [7]
5874민성4/1/20238420안녕하세요 질문 하나만 드릴깨요~ [1]
5873guest3/31/20238422제어판에서 삭제불가 MS Edge ---> 레지스트리 편집기에서도 안보임 [6]파일 다운로드1
58723/31/20237796web config 파일 확인부탁드려요 [6]
58713/31/20237755web config 파일 수정이요 [2]파일 다운로드1
5870guest3/30/20238141.NET Core SDK 삭제 시 주의 사항 [4]파일 다운로드1
5869guest3/30/20238407Dictionary의 Update 그리고 Foreach [7]
5868guest3/29/20238102Speech Recognition과 Form1 그리고 정확도 [4]파일 다운로드1
5866월급쟁이3/28/20237786cmake 크로스 컴파일 관련하여 질문이 있습니다 [1]
5865guest3/28/20237506Github Copilot과 코딩실력 향상? [1]
5864guest3/27/20238107System.NullReferenceException - 개체참조가 개체의 인스턴스... [6]파일 다운로드1
5863guest3/24/20238126이벤트 핸들러 사라짐 현상 - Button [4]
5862guest3/21/20238279세계최초 hts와 싱글스레드 [8]
5861다크파이썬3/21/20239026WPF를 사용하려고 하려고 도서 문의합니다. [2]
5860guest3/21/20237681인텔코어 i5 CPU와 스레드 [4]
5859guest3/21/20237285개발 일지 어떻게 관리하시나요? 이런 프로그램 없나요? [3]
5858김태원3/18/20237645안녕하세요! [5]
5857guest3/17/20237510귀도 반 로썸을 보고 [4]
5856guest3/17/20237384Form1_FormClosing에 closing time을 Sqlite 저장하는 법? [6]파일 다운로드1
5855욜로3/17/20236630C# 메타데이터에서 불러오는 참조 정의가 안됨 [1]
5854민성3/16/20237042안녕하세요 asp.net mvc using문 관련하여 [1]
5853pa3/16/20237020오피스 2016 업데이트 후 파일 출력 불가 [1]
5852guest3/16/20236897입력 foreach 검색/출력 foreach [3]
5851guest3/15/20237406foreach내 list변경 [10]
1  2  3  [4]  5  6  7  8  9  10  11  12  13  14  15  ...