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

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

예제

TextBox.Text속성의 UpdateSourceTrigger 기본값은 LostFocus 입니다. 즉, 애플리케이션에 있는 경우는 데이터 바인딩된 속성을 사용 하 여 TextBox TextBox.Text 입력 하는 텍스트는 TextBox 원본을 업데이트 하지 않습니다는 포커스를 잃을 때까지 TextBox (예를 들어 클릭할 때는 TextBox ).

입력할 때 소스를 업데이트하려면 바인딩의 를 로 UpdateSourceTrigger PropertyChanged 설정합니다. 다음 예제에서 강조 표시된 코드 줄은 Text 및 의 속성이 TextBox 동일한 소스 속성에 바인딩되어 있음을 보여 TextBlock 줄입니다. UpdateSourceTrigger TextBox 바인딩의 속성은 로 PropertyChanged 설정됩니다.

<Window
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:src="clr-namespace:SDKSample"
  xmlns:system="clr-namespace:System;assembly=mscorlib"
  SizeToContent="WidthAndHeight"
  Title="Simple Data Binding Sample">

  <Window.Resources>
    <ObjectDataProvider x:Key="myDataSource" ObjectType="{x:Type src:Person}">
      <ObjectDataProvider.ConstructorParameters>
        <system:String>Joe</system:String>
      </ObjectDataProvider.ConstructorParameters>
    </ObjectDataProvider>
    <Style TargetType="{x:Type Label}">
      <Setter Property="DockPanel.Dock" Value="Top"/>
      <Setter Property="FontSize" Value="12"/>
    </Style>
    <Style TargetType="{x:Type TextBox}">
      <Setter Property="Width" Value="100"/>
      <Setter Property="Height" Value="25"/>
      <Setter Property="DockPanel.Dock" Value="Top"/>
    </Style>
    <Style TargetType="{x:Type TextBlock}">
      <Setter Property="Width" Value="100"/>
      <Setter Property="Height" Value="25"/>
      <Setter Property="DockPanel.Dock" Value="Top"/>
    </Style>
  </Window.Resources>

  <Border Margin="25" BorderBrush="Aqua" BorderThickness="3" Padding="8">
    <DockPanel Width="200" Height="100">
      <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}"/>
    </DockPanel>
  </Border>
</Window>

결과적으로, 는 TextBlock 샘플의 다음 스크린샷과 같이 사용자가 에 텍스트를 입력할 때와 동일한 텍스트(소스가 변경되기 때문에)를 표시합니다. TextBox

간단한 데이터 바인딩을 보여 주는 스크린샷.

대화 상자 또는 사용자가 편집할 수 있는 양식이 있고 사용자가 필드 편집을 완료하고 "확인"을 클릭할 때까지 소스 업데이트를 연기하려는 경우 UpdateSourceTrigger 다음 예제와 같이 바인딩 값을 로 설정할 수 있습니다. Explicit

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

설정 하는 경우는 UpdateSourceTrigger 값을 Explicit , 소스 값만 변경 애플리케이션 호출 하는 UpdateSource 경우는 메서드. 다음 예제에서는 에 대해 를 호출하는 방법을 UpdateSource 보여줍니다. itemNameTextBox

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

참고

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

참고

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

추가 정보