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
'VisualStudio > WPF' 카테고리의 다른 글
[WPF] Win32 api 사용하여 윈도우 창 제어하기 max창 드레그 및 축소화 (0) | 2023.01.09 |
---|---|
[WPF] 무료 Icon Nuget 및 사이트 (0) | 2023.01.09 |
[WPF] Margin 마진 순서 (0) | 2023.01.06 |
[WPF] 다양한이벤트처리방법 Nuget XamlBehaviorsWpf (0) | 2023.01.05 |
[WPF] 사용자 정의컨트롤 디펜던시프로퍼티(DependencyProperty) (0) | 2023.01.05 |