본문 바로가기

Development/WPF

Set Binding Source Update Timing Using UpdateSourceTrigger

Introduction

이번시간에는 Data Binding을 구현할 때 Source Update Timing을 지정하는 방법에 대해 소개합니다. 일반적인 경우 Source Update Timing을 지정하지 않아도 해당 객체의 기본적인 Timing Rule에 따라 자동으로 지정되기 때문에 신경쓰지 않아도 되지만 간혹 Binding Timing지정을 필요한 상황이 이 있습니다.

대표 적인 예로 TextBox를 이용한 Data Binding을 구현할 때 일어나는 상황을 이야기 할 수 있습니다.

위 코드와 같이 두개의 TextBox에 DataBinding을 구현 했을때의 실행을 시켜보면 아래 동영상과 같이 TextBox에서 Focus가 사라진 후 Binding Source가 Update되는 것을 확인 할 수 있습니다.



TextBox의 경우 Binding Source Update Timing이 LostFocus이기 때문에 위와 같은 상황이 발생하는 것으로, 만약 텍스트가 입력되는 상황에서 실시간으로 데이터의 내용이 변경되기를 원한다면, DataBinding을 구현할 때 UpdateSourceTrigger를 직접 명시해주는 것으로 Timing을 지정할 수 있습니다. 아래 코드는 UpdateSourceTrigger를 PropertyChanged로 지정하여 Property의 내용이 갱신될 때마다 Source를 Update하도록 지정한 코드입니다.

그리고 아래 동영상은 UpdateSourceTrigger를 PropertyChanged로 지정했을때의 동작을 나타냅니다.



포커스를 잃지 않아도 TextBox에 내용이 변경될때마다 출력 내용이 갱신되는것을 확인하실 수 있습니다. TextBox의 경우 기본값이 LostFocus로 지정되어 있으며, 일반적인 DependencyProperty의 기본 UpdateSourceTrigger 속성은 PropertyChanged입니다.

만약 직접 구현한 DependencyProperty의 기본 UpdateSourceTrigger를 지정하고자 한다면 아래 코드와 같이FrameworkPropertyMetadata에서 DefaultUpdateSourceTrigger를 이용해 지정 할 수 있습니다.