tous. J'ai un usercontrol "NumericTextBox" qui autorise seulement les entrées numériques. J'ai besoin d'afficher un autre comportement spécialisé, c'est-à-dire que j'en ai besoin pour pouvoir le lier à une valeur VM OneWayToSource et avoir seulement la valeur VM mise à jour quand j'appuie sur enter tout en focalisant la zone de texte. J'ai déjà un événement EnterPressed qui se déclenche quand j'appuie sur la touche, j'ai juste du mal à trouver un moyen de provoquer cette action pour mettre à jour la liaison ...Zone de texte WPF qui met uniquement à jour la liaison lorsque vous appuyez sur Entrée
9
A
Répondre
11
Dans votre expression de liaison, définissez le UpdateSourceTrigger Expliquer
Text="{Binding ..., UpdateSourceTrigger=Explicit}"
Ensuite, lors de la manipulation de l'événement EnterPressed, appelez UpdateSource sur l'expression de liaison, cela poussera la valeur de la zone de texte à la propriété liée réelle.
BindingExpression exp = textBox.GetBindingExpression(TextBox.TextProperty);
exp.UpdateSource();
3
Si vous utilisez MVVM vous pouvez utiliser une combinaison de l'approche de decastelijau avec une propriété attachée personnalisée qui appelle UpdateSource sur la zone de texte lorsque PreviewKeyUp.
public static readonly DependencyProperty UpdateSourceOnKey = DependencyProperty.RegisterAttached(
"UpdateSourceOnKey",
typeof(Key),
typeof(TextBox),
new FrameworkPropertyMetadata(false)
);
public static void SetUpdateSourceOnKey(UIElement element, Key value)
{
//TODO: wire up specified key down event handler here
element.SetValue(UpdateSourceOnKey, value);
}
public static Boolean GetUpdateSourceOnKey(UIElement element)
{
return (Key)element.GetValue(UpdateSourceOnKey);
}
Ensuite, vous pouvez faire:
<TextBox myprops:UpdaterProps.UpdateSourceOnKey="Enter" ... />
7
Voici une version complète de l'idée fournie par Anderson Imes:
public static readonly DependencyProperty UpdateSourceOnKeyProperty =
DependencyProperty.RegisterAttached("UpdateSourceOnKey",
typeof(Key), typeof(TextBox), new FrameworkPropertyMetadata(Key.None));
public static void SetUpdateSourceOnKey(UIElement element, Key value) {
element.PreviewKeyUp += TextBoxKeyUp;
element.SetValue(UpdateSourceOnKeyProperty, value);
}
static void TextBoxKeyUp(object sender, KeyEventArgs e) {
var textBox = sender as TextBox;
if (textBox == null) return;
var propertyValue = (Key)textBox.GetValue(UpdateSourceOnKeyProperty);
if (e.Key != propertyValue) return;
var bindingExpression = textBox.GetBindingExpression(TextBox.TextProperty);
if (bindingExpression != null) bindingExpression.UpdateSource();
}
public static Key GetUpdateSourceOnKey(UIElement element) {
return (Key)element.GetValue(UpdateSourceOnKeyProperty);
}
Questions connexes
- 1. UpdatePanel ne se déclenche pas lorsque vous appuyez sur Entrée
- 2. Fermer un contrôle lorsque vous appuyez sur Entrée
- 3. Texte à l'intérieur d'une zone de texte qui doit être effacée lorsque vous cliquez sur
- 4. VB.NET: La boîte de dialogue se ferme-t-elle lorsque vous appuyez sur Entrée?
- 5. La liaison de données C# ne se met pas à jour WPF
- 6. Appuyez sur Entrée pour continuer
- 7. La liaison de données WPF ne se met pas à jour
- 8. Pourquoi la liaison WPF met-elle à jour les chaînes mais pas les objets?
- 9. Appuyez sur Entrée pour continuer dans C
- 10. ASP.NET: Appeler la méthode codebehind sur Entrée Appuyez sur la touche dans le formulaire
- 11. WPF CommandParameter dans la zone de texte
- 12. De quel événement ai-je besoin pour supprimer IE de "Dinging" lorsque j'appuie sur Entrée dans une zone de texte?
- 13. Zone de texte entrée cible iframe
- 14. Silverlight - Zone de texte multiligne - Alt + Entrée Numéro
- 15. WPF Refresh Modèle sur la liaison
- 16. Qu'arrive-t-il à la vue racine dans UINavigationViewController lorsque vous appuyez sur une nouvelle vue?
- 17. Problème de mise à jour de ligne Gridview avec la zone de texte
- 18. Définir le focus dans la zone de texte WPF
- 19. Flex 3: Comment modifier le curseur de la souris lorsque vous passez la souris sur une entrée de texte?
- 20. wpf: Mousedoubleclick pour la zone de texte
- 21. WPF a perdu la liaison de données
- 22. Imprimer uniquement une zone de texte
- 23. Impossible de mettre à jour la propriété de zone de texte à l'aide de DataBinding
- 24. Update SubmitChanges() - ne met pas à jour
- 25. Animate WPF Texte lors de la mise à jour des liens, comment?
- 26. Mise à jour de liaison de données lorsque la valeur change, pas en cas de tabulation
- 27. Problème de liaison WPF avec la mise à jour des valeurs
- 28. ASP.NET: Liaison de la zone de texte maxlength à la constante Class en HTML
- 29. XAML: liaison de la zone de texte maxlength à la constante Class
- 30. DateTimePicker met à jour la valeur un peu trop tôt