낭만 프로그래머

[WPF] TextBox에서 포커스를 잃지 않으면 바인딩 업데이트가 되지 않는 문제 해결 본문

C#

[WPF] TextBox에서 포커스를 잃지 않으면 바인딩 업데이트가 되지 않는 문제 해결

조영래 2021. 3. 5. 10:54

WPF에서 바인딩 로직을 작성했는데도 불구하고 바인딩 업데이트가 되지 않는 문제가 발생하였다. 확인해 본 결과 TextBox에서 포커스를 잃었을 경우에만 업데이트가 되었다.
구글을 검색해 보니 TextBox 바인딩 업데이트에 대한 옵션을 넣을 수가 있었다.

1. TextBox 값이 변경되는 즉시 업데이트
 - UpdateSourceTrigger="PropertyChanged" 를 사용

<TextBox x:Name="height" Grid.Row="5" Grid.Column="1" Width="150" HorizontalAlignment="Left" Margin="5" TextWrapping="Wrap" VerticalAlignment="Center" >
	<TextBox.Text>
    	<Binding Path="Model.height" Mode="TwoWay"
        	UpdateSourceTrigger="PropertyChanged"/>
    </TextBox.Text>
</TextBox>

 

2. 사용자가 업데이트를 수동으로 원할 경우
 - UpdateSourceTrigger="Explicit" 를 사용

// 코드에서 수동으로 업데이트 메소드 호출
// itemNameTextBox is an instance of a TextBox
BindingExpression be = itemNameTextBox.GetBindingExpression(TextBox.TextProperty);
be.UpdateSource();
0 Comments
댓글쓰기 폼