Alessandro Del Sole's Blog

{ A programming space about Microsoft® .NET® }
posts - 1909, comments - 2047, trackbacks - 352

My Links

News

Your host

This is me! Questo spazio è dedicato a Microsoft® .NET®, di cui sono molto appassionato :-)

Cookie e Privacy

Microsoft MVP

My MVP Profile

Microsoft Certified Professional

Microsoft Specialist

Xamarin Certified Mobile Developer

Il mio libro su VB 2015!

Pre-ordina il mio libro su VB 2015 Pre-ordina il mio libro "Visual Basic 2015 Unleashed". Clicca sulla copertina per informazioni!

Il mio libro su WPF 4.5.1!

Clicca sulla copertina per informazioni! E' uscito il mio libro "Programmare con WPF 4.5.1". Clicca sulla copertina per informazioni!

These postings are provided 'AS IS' for entertainment purposes only with absolutely no warranty expressed or implied and confer no rights.
If you're not an Italian user, please visit my English blog

Le vostre visite

I'm a VB!

Guarda la mia intervista a Seattle

Follow me on Twitter!

Altri spazi

GitHub
I miei progetti open-source su GitHub

Article Categories

Archives

Post Categories

Image Galleries

Privacy Policy

Windows Phone: forzare il binding delle TextBox prima di perdere il focus

In Windows Phone, quando una TextBox è collegata in data-binding a una proprietà di un oggetto, il suo aggiornamento viene fatto quando la stessa perde il focus. Come conseguenza, questa impostazione di default obbliga a fare un qualcosa che faccia perdere il focus al controllo prima di poter fare altre azioni.

Un esempio: tocco un pulsante sull'app bar per elaborare il valore di una TextBox, ma poiché questa non ha perso il focus esplicitamente, il valore non è aggiornato.

Sfortunatamente lo XAML di Windows Phone non prevede l'opzione UpdateSourceTrigger=PropertyChanged come in WPF e Silverlight, quindi l'alternativa è innanzitutto impostarlo come Explicit:

<TextBox Text="{Binding MiaProprietà, Mode=TwoWay, UpdateSourceTrigger=Explicit}" 
         TextChanged="TextBox_TextChanged_1"/>

Dopodiché, in un gestore di evento TextChanged si ottiene l'istanza del binding per la dependency property di interesse e si forza l'update:

    Private Sub TextBox_TextChanged_1(sender As Object, e As TextChangedEventArgs)
        If TypeOf (sender) Is TextBox Then
            Dim tb = CType(sender, TextBox)
            Dim binding = tb.GetBindingExpression(TextBox.TextProperty)
            If binding IsNot Nothing Then binding.UpdateSource()
        End If
    End Sub

In questo modo il problema è risolto.

Alessandro

Print | posted on lunedì 21 gennaio 2013 17:45 | Filed Under [ Silverlight e Windows Phone ]

Powered by:
Powered By Subtext Powered By ASP.NET