2012-11-28 35 views
6

hi;ソーステキストとターゲットテキストボックスがあります。txttargetにはtxtsourceへのバインディングがあります。 txtsourceに何かを書くとき、txttargetが変更されます。しかし、txttargetに書いてみると、txttargetの変更は見られませんか? TwoWayモードがあります。 Twowayモードでは不十分ですか?私は "UpdateSourceTrigger = PropertyChanged"を使わずに書くことができますか?なぜ私はUpdateSourceTrigger = PropertyChangedを使用していますか、TwoWayで十分ではありませんか?


    <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を指定しないと、に入力する内容はに書き込まれ、がフォーカスを失うまで(つまり、そのタブから外れています)書き込まれません。

関連する問題