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

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]

... 46  47  48  49  50  51  [52]  53  54  55  56  57  58  59  60  ...
NoWriterDateCnt.TitleFile(s)
2559로손5/6/201518537    답변글 [답변]: VB6.0의 ActiveX(OCX) 와 .Net에서 만든 COM DLL의 차이점 ??
2557Guest4/24/201517200Serialize , DeSerialize 관련 질문입니다! [3]
1558민식짱4/23/201518496FFmpeg.exe 를 이용한 C# 동영상 인코더 예제를 보고 질문드립니다 [1]파일 다운로드1
1555김응규4/22/201522905WCF net.tcp 관련해서 질문 드립니다. [2]
1556김응규4/22/201520869    답변글 [답변]: WCF net.tcp 관련해서 질문 드립니다. [1]파일 다운로드1
1554(삭제)4/19/201521036안드로이드 에뮬레이터에서 특정 앱 구동불가할때! [2]
1552spow...4/18/201528116마이크로세컨드 단위의 Sleep이 필요한데 찾질 못하겠습니다. [5]
1553spow...4/18/201520416    답변글 [답변]: 마이크로세컨드 단위의 Sleep이 필요한데 찾질 못하겠습니다. [1]
1551인디언기...4/16/201519574iisnode에 대해서 글 올리셨던데 질문이 있습니다 [1]
1549김선아4/15/201519956.net framework 4.5와 c++ dll에 관한 질문입니다 [1]
1550김선아4/15/201518220    답변글 [답변]: .net framework 4.5와 c++ dll에 관한 질문입니다 [2]
1547문명식4/3/201520588IWebBrowser Key Event 관련 [2]
1545나종식3/25/201519466internet explorer dns cache flush [2]
1543이용원3/23/201518627hyper-v 질문드려요! [1]
1544이용원3/24/201518186    답변글 한가지만 더 여쭤볼게요! [1]
1541임기성3/20/201525437Microsoft.Office.Core dll관련 문제 [1]
1539펜플3/17/201518547asp.net 질문입니다. [1]
1540113/17/201518608    답변글 [답변]: asp.net 질문입니다. [1]
1538열공합시닷3/13/201519603중계서버 질문드립니다 [1]
1537김재영3/11/201521393asp.net의 빌드 유휴시간 이후의 리빌드 작업을 컨트롤 할 수 있습니까? [2]
1536솔솔3/9/201519016mac address얻으려고 하는데요.. [1]
1535Stud...3/4/201519200C#엔 MFC의 theApp 과 같은 기능을 하는것이 없나요? [3]
1534김동진3/4/201518963C#에서 BHO로 Windows Explorer에서의 동작이 가능할지요 [2]
1533김동현3/3/201519198컴파일 된 프로그램에 코드 삽입(?) 관련입니다. [1]
1532반가워요3/3/201522377C# 소켓연결에 packet송수신... [8]
1531강현수3/2/201521313C# com 등록 시 GUID 변경 관련 문의 [1]
... 46  47  48  49  50  51  [52]  53  54  55  56  57  58  59  60  ...