2010-11-12 7 views
0

Ceci est mon champ de saisie:WPF: Databinding et les gestionnaires keypress

<TextBox TextAlignment="Right" Text="{Binding PriorityScore, StringFormat=N2}"  
     Name="PriorityScoreBox" TextChanged="PriorityScoreBox_TextChanged" /> 

Lorsque je clique sur le bouton Enregistrer tout fonctionne bien.

Lorsque j'appuie sur Control-S, les modifications en attente ne sont pas enregistrées dans la zone de texte. Ceci est fait via un gestionnaire de pression de touche au niveau de la page.

Je ne peux pas utiliser UpdateSourceTrigger=PropertyChanged car cela interfère avec la mise en forme des chaînes. (L'utilisateur tape "4" et la boîte passe automatiquement à "4,00".)

Peut-être existe-t-il un moyen de valider les modifications en attente dans un événement de presse de touche?

Répondre

0
Private Sub PriorityScoreBox_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Input.KeyEventArgs) 
    If e.Key = Input.Key.S And CBool(e.KeyboardDevice.Modifiers And ModifierKeys.Control) Then 
     Dim bx As BindingExpression = CType(sender, TextBox).GetBindingExpression(TextBox.TextProperty) 
    bx.UpdateSource() 
End If 
End Sub