为什么我要使用UpdateSourceTrigger=PropertyChanged,而TwoWay不够?

16

你好; 这里有源文本框和目标文本框,txttarget与txtsource绑定。当在txtsource中输入内容时,txttarget会自动变化。一切都很好。但是当在txttarget中写入时,txttarget没有任何变化。这里采用了双向模式(TwoWay mode)。 双向模式不够用吗?我是否可以不使用“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>
2个回答

27

txtTarget.Text会在绑定的源(txtSource.Text)发生变化时进行更新。

绑定模式为TwoWay,这意味着对txtTarget.Text的更改将反映到绑定源。什么时候呢?这取决于Binding.UpdataSourceTrigger属性。

如果你想让目标绑定在更改时更新源绑定,你必须使用Binding.UpdataSourceTrigger = OnPropertyChanged,否则当txtTarget失去焦点时(default behavior)才会更新绑定源。


18

TextBox的默认UpdateSourceTriggerLostFocus(参见Binding.UpdateSourceTrigger)。如果您没有将PropertyChanged指定为UpdateSourceTrigger,那么您输入到txtTarget中的内容直到txtTarget失去焦点(即您从其上切换)之前不会写入txtSource中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接