VisualStudio/WPF

[WPF] 바인딩(onetime, oneway, twoway, onewaytosource)

usingsystem 2023. 1. 9. 10:18
728x90

C#에서 인터페이스에 나타나는 값을 동적으로 표현할때 데이터바인딩을 사용한다.

 

<Window.DataContext>

   <local:ViewModel/>

</Window.DataContext>

XAML의 내용이 <TEXTBOX TEXT={BINDING name MODE=~~~}></TEXTBLOCK> 이렇게 선언하면

 

TEXTBOX안에 표시되는 내용이 ViewModel이라는 뷰모델 클래스의 name이라는 요소와 연결되게 된다.

 

여기서 설정하는 MODE는 onetime, oneway, twoway, onewaytosource 중에 하나로 설정하는데,

 

-onetime

만약에 현재 뷰모델의 name이라는 요소가 string타입의 "사과"라고 저장되어 있다고 하자.

만약 MODE를 onetime으로 연결 한다면, 인터페이스의 텍스트블록 안에 "사과"라는 글자가 뜨게 된다.

하지만, 이때 단 한번만 바인딩이 되고 이후로는 연결이 끊어지게 되서

뷰모델 안의 string name을 바꿔도 텍스트 박스의 값이 영향을 받지 않고

텍스트박스안에 "바나나"를 입력해도 뷰모델의 name은 바뀌지 않는다.

-oneway

MODE가 oneway라면 이는 소스의 값 -> 인터페이스의 값 한 방향으로만 바인딩을 허용한다는 것이다.

뷰모델의 string이 "바나나"로 변하면, 텍스트박스의 값도 "바나나"로 바뀔 것이다.

그러나, 텍스트박스에 내가 "수박"을 입력해도 뷰모델의 "바나나"는 "수박"으로 바뀌지 않는다.

-twoway

위에 두 가지를 이해했다면, twoway는 따로 설명 할 필요도 없을 것 같다.

텍스트 박스의 값을 바꾸면 소스의 값도 바뀌고, 소스의 값을 바꾸면 텍스트박스의 값도 바뀌는 양 방향 바인딩이다.

-onewaytosource

oneway의 정 반대라고 보면 된다.

인터페이스 -> 소스 방향의 oneway라고 생각하면 된다.

 

출처 - https://hihaoun.tistory.com/entry/C-%EB%B0%94%EC%9D%B8%EB%94%A9-onetime-oneway-twoway-onewaytosource

728x90