Mon réglage est celui décrit ci-dessous :
- Application WPF 4
- Cadre MVVM Lite
- Une fenêtre "Ajouter un élément" est affichée au-dessus de la fenêtre principale en mode dialogue (en utilisant view.ShowDialog() ;)
- La boîte de dialogue comporte un certain nombre de champs de saisie et le bouton "Enregistrer" dont la propriété IsDefault est définie sur True.
- Le bouton "Enregistrer" est géré par une liaison avec une commande.
- La liaison de données est définie entre les champs d'entrée dans le XAML de la vue et les propriétés correspondantes dans le ViewModel (une façon, pour l'interface utilisateur, de mettre à jour le ViewModel, avec Mode=OneWayToSource).
Le problème est que lorsque j'appuie sur la touche Entrée du clavier, la valeur que j'ai fournie dans le dernier champ de saisie n'est pas poussée vers la propriété sous-jacente du ViewModel.
Je pense que cela a quelque chose à voir avec le fait que le champ de saisie n'a pas perdu le focus avant la fermeture de la fenêtre (et donc que toutes les liaisons sont "dissoutes"). À titre de comparaison, si je cliquez sur le bouton "Enregistrer" (au lieu de laisser son clic être géré par la fenêtre lors de la saisie), la valeur es mis à jour dans la propriété. De plus, si j'ajoute (horreur ! horreur !) un gestionnaire d'événement à l'événement Click du bouton, et que j'appelle button.Focus() dans le code-behind, tout fonctionne !
Quel peut être le remède ?
Je ne veux évidemment pas gérer les événements de fermeture de fenêtre, et récupérer "manuellement" les valeurs manquantes... Cela irait à l'encontre du concept MVVM :-(
De meilleures suggestions ?
Merci, Alex