2012-11-28 2 views
6

안녕하세요; 소스 및 대상 텍스트 상자가 있습니다. txttarget에는 txtsource에 대한 바인딩이 있습니다. txtsource에 뭔가를 작성할 때, txttarget는 changed.Everything 좋은입니다. 그러나 txttarget에 쓰기, 내가 txttarget에서 변경 사항을 참조 해달라고? TwoWay 모드가 있습니다. Twoway 모드로는 충분하지 않습니까? "UpdateSourceTrigger = PropertyChanged"를 사용하지 않고 작성할 수 있습니까?왜 내가 UpdateSourceTrigger =하여 PropertyChanged를 사용하고, 양방향는 충분하지 않다?


    <Grid> 
     <TextBox Height="23" HorizontalAlignment="Left" Margin="155,62,0,0" Name="txtSource" VerticalAlignment="Top" Width="120" /> 
     <TextBox Height="23" HorizontalAlignment="Left" 
       Text="{Binding ElementName=txtSource,Path=Text,Mode=TwoWay}" 
       Margin="155,113,0,0" Name="txtTarget" VerticalAlignment="Top" Width="120" /> 
    </Grid> 

답변

14

txtTarget.Text은 때마다 바인딩 소스 (txtSource.Text) 변경 업데이트됩니다.

바인딩 모드는 TwoWay이며 이는 txtTarget.Text의 변경 사항이 바인딩 된 소스에 반영됨을 의미합니다. 언제? 그것은 Binding.UpdataSourceTrigger 특성에 따라 달라집니다.

변경할 때 대상 바인딩에서 소스 바인딩을 업데이트하려면 Binding.UpdataSourceTrigger = OnPropertyChanged을 사용해야합니다. 그렇지 않으면 txtTarget에서 포커스를 잃을 때 바인딩 소스가 업데이트됩니다 (기본 동작).

12

TextBox의 기본 UpdateSourceTrigger은 (Binding.UpdateSourceTrigger 참조) LostFocus입니다. UpdateSourceTrigger로 PropertyChanged을 지정하지 않으면 에 입력 한 내용이 에서 포커스를 잃을 때까지 txtSource에 쓰여지지 않습니다. 즉, 탭에서 벗어납니다.