Forzare il binding di un TextBox su WP7
Scritto da
Nicolò Carandini il
venerdì 3 febbraio 2012
•
Linguaggio:
• Livello: 100
Generalmente il binding two-way di una textbox aggiorna la
proprietà a cui è bindata quando il controllo perde il focus.
Poiché però i pulsanti posizionati nel menu non spostano il focus
della pagina, un eventuale pulsante di conferma ivi posizionato fa
si che ciò che l'utente ha inserito nella textbox non venga
trascritto nella sorgente. Per forzare il binding si può eseguire
il seguente codice, da inserire nel codice associato all'evento
prodotto dal pulsante:
//Force two-way binding of the editing field
object focusObj = FocusManager.GetFocusedElement();
if (focusObj != null && focusObj is TextBox)
{
var binding = (focusObj as TextBox).GetBindingExpression(TextBox.TextProperty);
binding.UpdateSource();
}
Se poi oltre alle textbox abbiamo anche una o più PasswordBox,
allora occorre estendere il codice in questo modo:
// Force two-way binding of the editing field
object focusObj = FocusManager.GetFocusedElement();
if (focusObj != null && (focusObj is TextBox || focusObj is PasswordBox))
{
BindingExpression binding;
if (focusObj is TextBox)
{
binding = (focusObj as TextBox).GetBindingExpression(TextBox.TextProperty);
}
else
{
binding = (focusObj as PasswordBox).GetBindingExpression(PasswordBox.PasswordProperty);
}
binding.UpdateSource();
}
Tags: wp7,Windows Phone 7