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

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)
5587이완호12/17/20219768C# SharpDX 화면 캡쳐 관련해서 질문 드립니다. [1]
5586조미김12/16/20218692윈폼에서 메인 스레드와 UI 스레드의 차이점 질문드립니다 [4]
5585김준희12/16/20219696C# 윈폼 TCP/IP 데이터 연속으로 보낼때 [1]
5583난인간이다12/10/20218301.net 6 dynamic pgo 활성화 및 예상되는 문제 [1]
5582김준희12/9/202117670C# TCP/IP 통신시 연결 끊김 에러 [1]
5581김시준12/9/20219198닷넷에서 파일 delete 함수는 왜 비동기가 없는 것인가요? [2]
5580카짜프로...12/7/202110666패턴매칭 -튜퓰비교에 관한 오류사항과 궁금증 [1]파일 다운로드1
5579카짜프로...12/6/20211028611.12 메서드 중복정의에 대한 질문 [1]
5577감사합니...11/30/20218975visual studio 2015 update 3를 다운받을려고 하는데 x64/x86 차이점이 뭘까요? [2]
5576노홍구11/29/20218757C# 으로 USB 스캐너 프린터 리셋하기 입니다. [1]
5575베라11/23/20218659event handler 관련 문의 [2]
5574박원웅11/22/20219020닷넷 프레임워크 산출물의 배포시 해당 환경에 프레임워크 버전이 설치되어 있지 않는 경우를 고려한 배포방법은? [3]
5573mijin11/21/20218739System.NullReferenceException 에 대한 질문 [1]
5572김현진11/21/20218889C# list.Clear() 호출에 대한 문의 드립니다. [4]
5571한예지 donator11/18/20219100무설치 프로그램 원리가 궁금합니다. [2]
5570초보11/16/20219511주식데이터 초당 수신 건수를 구하고 있는데 처리속도가 느려서요 [2]
5569카짜프로...11/14/202110685381페이지 UTC에대한 언급이 그리니치 천문대 시간으로 되어있는게 맞나요? [1]
5568카짜프로...11/14/202110706그림 5.20, 그림 5.22 언급 오류 [1]
5567Edun11/2/20219146쿼리문을 코드로 어떻게 처리할 수 있을까요? [2]
5566민성10/26/20218949Linq에 관해서 [1]
5565pass...10/25/202110212wpf에서 Cefsharp를 AnyCPU로 작업 했는데 실행이 되지 않습니다. [4]
5564초보10/21/20218446오버라이드 관련 질문드립니다 [2]
5562서지훈10/20/20218448win32 api 문의 드립니다. (EnableMenuItem) [5]
5561Edun10/15/20218951도와주세요!! 팝업 띄우는 더블클릭 이벤트!! 부탁드립니다 ㅠㅠ [4]파일 다운로드1
5560Edun10/13/20219143C#초보자 개념이해 도와주세요!! [4]
5559최가운10/5/20219608C# debugging 중에 Thread Pool Worker들이 사라지는데요 [3]
1  2  3  4  5  6  7  8  9  10  11  12  13  14  [15]  ...