티스토리 뷰

WPF - Data Binding (데이터 바인딩)
 INotifyPropertyChanged

지금부터 설명하는(WPF)는 C#,html,sql 에 대한 기본적인 선행학습이 필요합니다.

 앞서 설명한 데이터 바인딩은 사실 C#코드에서 데이터 원본을 바꿔주게 되면 UI에 업데이트가 되지 않는 문제점이있습니다. 이는 코드에서 데이터 변경시 UI에도 알림으로써 변경하도록 해주는 작업이 필요합니다.

 놀랍게도 이 또한 이미 구현되어있습니다. 바로 INotifyPropertyChanged라는 인터페이스를 구현하면 되는데요? 어떻게 하면 되는건지 지금부터 살펴보도록하겠습니다.

INotifyPropertyChanged

  프로퍼티변경시 알림은 위와 같이 인터페이스(interface)를 구현하면 되는데 INotifyPropertyChanged 인터페이스는 이벤트핸들러인 PropertyChanged를 가지고있습니다. 우리는 그저 프로퍼티가 변경되면 PropertyChanged이벤트를 발생시키면 됩니다. 끝입니다!

인터페이스

 위와 같이 프로퍼티 내부에서는 set에서 데이터 변경이 이루어 지기때문에 Set에 이벤트를 발생시키는 코드를 삽입해준 모습입니다. 이러한 코드를 보니 왜 굳이 바인딩시 프로퍼티를 사용하는지에 대한 궁금증이 풀리는 군요!

 이때 넘겨주는 Args는 즉 PropertyChangedEventArgs는 속성값으로 초기화를 해주며 넘겨주어야합니다. 이 것 또한 약속이니 받아들이도록 합시다. PropertyChangedEventArgs("Name") 이런식으로 프로퍼티 이름을 넘김으로써 이벤트를 발생시키면 WPF BindingEngine 이 자동으로 등록해준 이벤트가 발생하게되겠죠.

 if문에서 null검사를 해준 이유가 바로 그것입니다. 즉. 코드상에서는 우리가 서버이며 이벤트를 등록한 (플는한 ,+=한) 녀석은 바로 WPF 바인딩엔진이 되겠죠! 그게 뭐든 우리는 알 수 없지만, 그저 getter에서 이벤트를 발생시키면서 바뀌었다는 상황을 알리는 겁니다. 정말 편리하죠?

버튼이벤트발생

 추가 버튼을 클릭하면 발생되는 이벤트입니다. +=으로 프로퍼티에 *문자를 추가하고 있습니다. 그럼 어떻게 된다고요? 바로 PropertyChanged 이벤트가 발생합니다. 이로써 코드에서 변경된 프로퍼티 또한 동기화 되었네요. 

-소스 코드는 저번 포스팅에 첨부된 솔루션을 참고하시기 바랍니다.

댓글
댓글쓰기 폼
네이버 이웃추가
«   2019/10   »
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    
글 보관함