다음을 통해 공유


방법: TextBox 텍스트의 소스를 업데이트하는 시점 제어

이 항목에서는 UpdateSourceTrigger 속성을 사용하여 바인딩 소스 업데이트의 타이밍을 제어하는 방법을 설명합니다. 이 항목에서는 TextBox 컨트롤을 예제로 사용합니다.

예제

TextBox.Text 속성에는 LostFocus의 기본 UpdateSourceTrigger 값이 있습니다. 이는 응용 프로그램에 데이터 바인딩된 TextBox.Text 속성이 있는 TextBox가 있는 경우 TextBox에 입력한 텍스트는 TextBox에서 포커스를 잃을 때까지(예: TextBox 바깥쪽을 누르는 경우) 소스를 업데이트하지 않음을 의미합니다.

입력할 때 소스가 업데이트되도록 하려면 바인딩의 UpdateSourceTriggerPropertyChanged로 설정합니다. 다음 예제에서는 TextBoxTextBlock 둘 다에 대한 Text 속성이 같은 소스 속성에 바인딩됩니다. TextBox 바인딩의 UpdateSourceTrigger 속성은 PropertyChanged로 설정됩니다.

<Label>Enter a Name:</Label>
<TextBox>
  <TextBox.Text>
    <Binding Source="{StaticResource myDataSource}" Path="Name"
             UpdateSourceTrigger="PropertyChanged"/>
  </TextBox.Text>
</TextBox>

<Label>The name you entered:</Label>
<TextBlock Text="{Binding Source={StaticResource myDataSource}, Path=Name}"/>

따라서 다음 샘플의 스크린샷에서 설명한 대로 TextBlock에는 사용자가 TextBox에 텍스트를 입력할 때와 같은 텍스트(소스가 변경되므로)가 표시됩니다.

간단한 데이터 바인딩 샘플 스크린 샷

대화 상자나 사용자 입력 가능한 폼에 사용자가 필드 편집을 마치고 "확인"을 클릭할 때까지 소스 업데이트를 지연하려는 경우 다음 예제와 같이 바인딩의 UpdateSourceTrigger 값을 Explicit로 설정할 수 있습니다.

<TextBox Name="itemNameTextBox"
         Text="{Binding Path=ItemName, UpdateSourceTrigger=Explicit}" />

UpdateSourceTrigger 값을 Explicit로 설정하면 응용 프로그램에서 UpdateSource 메서드를 호출할 때만 소스 값이 변경됩니다. 다음 예제에서는 itemNameTextBox의 UpdateSource를 호출하는 방법을 보여 줍니다.

Me.itemNameTextBox.GetBindingExpression(TextBox.TextProperty).UpdateSource()
Me.bidPriceTextBox.GetBindingExpression(TextBox.TextProperty).UpdateSource()
// itemNameTextBox is an instance of a TextBox
BindingExpression be = itemNameTextBox.GetBindingExpression(TextBox.TextProperty);
be.UpdateSource();
참고참고

다른 컨트롤의 속성에 대해 동일한 기법을 사용할 수 있지만 대부분의 다른 속성은 PropertyChanged의 기본 UpdateSourceTrigger 값을 갖습니다.자세한 내용은 UpdateSourceTrigger 속성 페이지를 참조하십시오.

참고참고

UpdateSourceTrigger 속성은 소스 업데이트를 처리하므로 TwoWay 또는 OneWayToSource 바인딩에 대해서만 관련이 있습니다.TwoWayOneWayToSource 바인딩이 작동하려면 소스 개체에서 속성 변경 알림을 제공해야 합니다.자세한 내용은 이 항목에 표시된 샘플을 참조하십시오.또한 방법: 속성 변경 알림 구현을 참조할 수 있습니다.

참고 항목

기타 리소스

데이터 바인딩 방법 항목