WPF 데이터바인딩, InotifyPropertyChanged 인터페이스, PropertyChanged 이벤트를 통한 데이터 바인딩
9 InotifyPropertyChanged 인터페이스, PropertyChanged 이벤트를 통한 데이터 바인딩
n 의존 프로퍼티를 정의하는 것은 데이터 바인딩의 소스로서 역할을 수행하는데 이 방법이 유일한 방법은 아니다. 전통적인 방법은 이벤트를 만드는 것인데 이벤트를 특정한 방법으로 정의하면 WPF내의 데이터 바인딩 로직이 이벤트를 사용할 수 있다.
n WPF의 데이터 바인딩 로직은 이벤트가 INotifyPropertyChanged 인터페이스를 구현한 클래스안에 정의되어 있으면 이벤트를 찾는다. 이 인터페이스를 상속받아 구현하면 PropertyChangedEventHandler 델리게이트를 기본으로 하는 PropertyChanged 이벤트를 정의해야 한다.
n DateTime 프로퍼티를 아래와 같이 수정하자.
n TimerOnTick 메소드를 수정하자.
n PropertyChanged 이벤트를 발생시킬 때의 처음인자는 this이며 두번째 인자는 PropertyChangedEventArgs 타입의 객체이다. PropertyChangedEventArgs는 EventArgs를 상속받아 추가적인 string 타입의 PropertyName 이라는 프로퍼티를 정의하는데 이 프로퍼티는 변경될 프로퍼티를 구별하기 위해 사용한다. 또한 PropertyChangedEventArgs는 string 인자를 가진 생성자를 통해 PropertyName을 설정한다.
n 클래스에서 DateTime 이라는 프로퍼티를 정의했다면 DateTime이 변경될 때 PropertyChanged 이벤트가 발생되어야 하는데 아래 코드를 통해 가능하다.
n 이 방법이 다수의 프로퍼티를 다루는 좋은 방법이다. 하나의 PropertyChanged 이벤트가 이들을 다 처리하기 때문이다. 아래는 전체 소스코드이니 ClockTicker2.cs를 만들고 MainWindow.xaml를 수정해서 확인해 보자.
n ColckTicker2.cs
n INotifyPropertyChanged 인터페이스를 이용한 데이터 바인딩 예제2
프로젝명 : LoginWindow
댓글 없음:
댓글 쓰기