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

时间:2012-11-28 08:48:02

标签: c# .net wpf xaml propertychanged

喜;有源文件框和目标文本框txttarget有一个绑定到txtsource。当在txtsource中写一些东西时,txttarget就会改变。一切都很好。但是在txttarget上写道,我在txttarget上看不到任何变化?有TwoWay模式。 Twoway模式还不够?我可以在不使用“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 个答案:

答案 0 :(得分:19)

只要绑定的源(txtTarget.Text)发生更改,

txtSource.Text就会更新。

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

如果您希望目标绑定在更改时更新源绑定,则必须使用 Binding.UpdataSourceTrigger = OnPropertyChanged,否则当txtTarget失去焦点时,您将更新绑定源(默认行为)。

答案 1 :(得分:15)

UpdateSourceTrigger的默认TextBoxLostFocus(请参阅Binding.UpdateSourceTrigger)。如果您没有将PropertyChanged指定为UpdateSourceTrigger,那么在txtTarget失去焦点之前,您在txtSource中输入的内容将不会写入txtTarget(即您关闭它)