2012-11-28 11 views
6

Hallo; Es gibt Quell- und Zieltextbox. txttarget hat eine Bindung an txsource. wenn man etwas in die txtquelle schreibt, wird txttarget geändert. Alles ist gut. Aber wenn ich auf txttarget schreibe, sehe ich keine Änderungen bei txttarget? Es gibt einen TwoWay-Modus. Twoway-Modus ist nicht genug? kann ich schreiben, ohne "UpdateSourceTrigger = PropertyChanged" zu verwenden?Warum verwende ich UpdateSourceTrigger = PropertyChanged, TwoWay ist nicht genug?


    <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> 

Antwort

14

txtTarget.Text wird aktualisiert, wenn sich die gebundene Quelle (txtSource.Text) ändert.

Der Bindungsmodus ist TwoWay, was bedeutet, dass Änderungen an txtTarget.Text in der gebundenen Quelle widergespiegelt werden. Wann? Es hängt von der Binding.UpdataSourceTrigger Eigenschaft ab.

Wenn Ihre Zielbindung die Quellbindung beim Ändern aktualisieren soll, müssen Sie Binding.UpdataSourceTrigger = OnPropertyChanged verwenden. Andernfalls aktualisieren Sie die Bindungsquelle, wenn txtTarget den Fokus verliert (Standardverhalten).

12

Der Standard UpdateSourceTrigger für eine TextBox ist LostFocus (siehe Binding.UpdateSourceTrigger). Wenn Sie PropertyChanged nicht als UpdateSourceTrigger angeben, wird das, was Sie in eingeben, nicht in txtSource geschrieben, bis den Fokus verliert (das ist ein Tab davon).