이전 포스팅에서 데이터바인딩이란 기본적으로 Source에서 특정값을 입력하고, 그 값이 Target으로 출력된다라는걸 배웠습니다.
하지만,
꼭 그렇지는 않습니다.
이게 무슨 말이냐구요?
1) Mode의 기본 개념
아래와 같이 간단한 바인딩을 이용한 ui를 만들어 보았습니다.
![[c# wpf] 데이터바인딩에서 mode 사용법 - 1) Mode의 기본 개념 [c# wpf] 데이터바인딩에서 mode 사용법 - 1) Mode의 기본 개념](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
당연히 txt2가 Target을 의미하니까 아래와 같이 Source에 값을 입력하고 Target에 나오는 모습이 너무나도 자연스럽죠.
![[c# wpf] 데이터바인딩에서 mode 사용법 - 1) Mode의 기본 개념 [c# wpf] 데이터바인딩에서 mode 사용법 - 1) Mode의 기본 개념](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
하지만 아래와 같이 Target에서 Source로의 방향도 가능합니다.
![[c# wpf] 데이터바인딩에서 mode 사용법 - 1) Mode의 기본 개념 [c# wpf] 데이터바인딩에서 mode 사용법 - 1) Mode의 기본 개념](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
이게 어떻게 가능할까요?
우리가 명시적으로 적진 않았지만 Mode 속성으로 TowWay 즉 양방향이 디폴트값으로 설정되어있기 때문입니다.
ToWay라는 단어에서 느낄 수 있듯이 Source => Target, Target=> Source 이 두방향이 다 가능하다는 뜻입니다.
이러한 Mode 속성으로는 총 4가지있는데요
![[c# wpf] 데이터바인딩에서 mode 사용법 - 1) Mode의 기본 개념 [c# wpf] 데이터바인딩에서 mode 사용법 - 1) Mode의 기본 개념](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
간단하게 설명하자면,
1. OneWay = 소스에서 타겟방향으로만 가능
2. ToWay = 소스에서 타겟방향 가능 , 타겟에서 소스방향 가능
3. OneTime = 소스에서 타겟방향,하지만 단 한번만 가능
4. OneWayToSource = 타겟에서 소스 방향만 가능
2) PropertyChanged는 언제 사용할까?
눈치가 빠르신분은 눈치채겠지만, Target에서 Source로 이동하는 부분에서 뭔가 부자연스러움을 느끼셨을겁니다.
![[c# wpf] 데이터바인딩에서 mode 사용법 - 2) PropertyChanged는 언제 사용할까? [c# wpf] 데이터바인딩에서 mode 사용법 - 2) PropertyChanged는 언제 사용할까?](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
왜냐하면 타겟의 변화가 즉각적으로 반영되지 않고, 소스부분을 클릭해야만 했기 때문입니다.
그 이유는 UpdateSourceTrigger 속성 값이 디폴트로 LostFocus가 설정 되어 있었기 때문입니다.
![[c# wpf] 데이터바인딩에서 mode 사용법 - 2) PropertyChanged는 언제 사용할까? [c# wpf] 데이터바인딩에서 mode 사용법 - 2) PropertyChanged는 언제 사용할까?](https://blog.kakaocdn.net/dna/bSki5V/btrDyGCTrjj/AAAAAAAAAAAAAAAAAAAAABH9UO7rqHJ71nBH60nTR_cdhfBPFHNTAB4y1lZhVOIo/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1756652399&allow_ip=&allow_referer=&signature=6vcPvyIhveaHikFa61B%2B3%2BVvjxI%3D)
이 부분을 PropertyChanged로 변경하면 해당값이 바뀌면 즉각적으로 반영이 되는걸 확인 할 수 있습니다.
![[c# wpf] 데이터바인딩에서 mode 사용법 - 2) PropertyChanged는 언제 사용할까? [c# wpf] 데이터바인딩에서 mode 사용법 - 2) PropertyChanged는 언제 사용할까?](https://blog.kakaocdn.net/dna/d5fu4G/btrDuvQah4n/AAAAAAAAAAAAAAAAAAAAAH6w-vwCYP_AevKJvfvrBOAMtDRlzgABqRSmD6GLgm-m/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1756652399&allow_ip=&allow_referer=&signature=Fwuovc8RawQHjwqQFjPmj0PG5Sg%3D)
![[c# wpf] 데이터바인딩에서 mode 사용법 - 2) PropertyChanged는 언제 사용할까? [c# wpf] 데이터바인딩에서 mode 사용법 - 2) PropertyChanged는 언제 사용할까?](https://blog.kakaocdn.net/dna/bmLLle/btrDyFKKMky/AAAAAAAAAAAAAAAAAAAAAAoEiM1RucsrKdWi3F5ZvGyf42aI4yN78GavzVmt0Lw3/img.webp?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1756652399&allow_ip=&allow_referer=&signature=Dcnr2XCDlkQKyqQL86RIzF%2F%2FJjM%3D)
이 UpdateSourceTrigger는 타겟에서 소스로 데이터를 변경할때 사용되는것이니 헷갈리지 마시기 바랍니다!
'c# > wpf' 카테고리의 다른 글
[c# wpf] Style 상속 방법(with BasedOn) (0) | 2022.05.31 |
---|---|
[c# wpf] Style 태그 사용 방법 (2) | 2022.05.31 |
[c# wpf] StaticResource란? (DynamicResource 비교) (1) | 2022.05.30 |
[c# wpf] 데이터 바인딩 기초 개념/ 예제 완벽 정리 (3) | 2022.05.27 |
[c# wpf] 새로운 창(윈도우) 여는 법 (0) | 2022.05.24 |
댓글