이전 포스팅에서 데이터바인딩이란 기본적으로 Source에서 특정값을 입력하고, 그 값이 Target으로 출력된다라는걸 배웠습니다.
하지만,
꼭 그렇지는 않습니다.
이게 무슨 말이냐구요?
1) Mode의 기본 개념
아래와 같이 간단한 바인딩을 이용한 ui를 만들어 보았습니다.
당연히 txt2가 Target을 의미하니까 아래와 같이 Source에 값을 입력하고 Target에 나오는 모습이 너무나도 자연스럽죠.
하지만 아래와 같이 Target에서 Source로의 방향도 가능합니다.
이게 어떻게 가능할까요?
우리가 명시적으로 적진 않았지만 Mode 속성으로 TowWay 즉 양방향이 디폴트값으로 설정되어있기 때문입니다.
ToWay라는 단어에서 느낄 수 있듯이 Source => Target, Target=> Source 이 두방향이 다 가능하다는 뜻입니다.
이러한 Mode 속성으로는 총 4가지있는데요
간단하게 설명하자면,
1. OneWay = 소스에서 타겟방향으로만 가능
2. ToWay = 소스에서 타겟방향 가능 , 타겟에서 소스방향 가능
3. OneTime = 소스에서 타겟방향,하지만 단 한번만 가능
4. OneWayToSource = 타겟에서 소스 방향만 가능
2) PropertyChanged는 언제 사용할까?
눈치가 빠르신분은 눈치채겠지만, Target에서 Source로 이동하는 부분에서 뭔가 부자연스러움을 느끼셨을겁니다.
왜냐하면 타겟의 변화가 즉각적으로 반영되지 않고, 소스부분을 클릭해야만 했기 때문입니다.
그 이유는 UpdateSourceTrigger 속성 값이 디폴트로 LostFocus가 설정 되어 있었기 때문입니다.
이 부분을 PropertyChanged로 변경하면 해당값이 바뀌면 즉각적으로 반영이 되는걸 확인 할 수 있습니다.
이 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 |
댓글