2010-12-13 14 views
7
<TextBlock Name="txtName" Text="{Binding Name, UpdateSourceTrigger=PropertyChanged}" /> 

"Nome" è la proprietà di un oggetto associato a TextBlock in fase di esecuzione. Ho implementato INotifyPropertyChanged in modo che il codice funzioni correttamente. La mia domanda è: se sostituisco PropertyChanged su Default funzionerà ancora? Qual è la differenza tra loro?UpdateSourceTrigger's Default vs PropertyChanged?

risposta

10

Secondo MSDN, valore di default s' il UpdateSourceTrigger è PropertyChanged per la maggior parte delle proprietà e LostFocus per la proprietà TextBox.Text.

Nel tuo caso, probabilmente stai vincolando a una proprietà per cui il valore predefinito è già impostato su PropertyChanged, quindi non vedrai alcuna differenza.

1

PropertyChanged sta dicendo a Binding che ogni volta che si riceve la notifica PropertyChanged per quella proprietà, aggiornare il suo valore sulla destinazione.

Per alcuni controlli, come TextBox, utilizzando Default, si aggiorna solo la destinazione vincolante quando, ad esempio, perde lo stato attivo. Quando si imposta UpdateTrigger='PropertyChanged' su di esso, si aggiornerà la destinazione del binding mentre si sta digitando.

0

Per controllo TextBox Quando si utilizza UpdateSourceTrigger = Default indica quando l'oggetto di origine perde lo stato attivo, il valore nella destinazione verrà aggiornato. Quando usiamo UpdateSourcetrigger = PropertyChanged significa che quando il testo dell'oggetto sorgente cambia (anche quando scriviamo un singolo carattere) immediatamente il cambiamento si rifletterà nella destinazione. Sopra il caso per il controllo TextBox come predefinito per la maggior parte del controllo è solo PropertyChanged

Problemi correlati