Comment définir le Focus à un Contrôle WPF utilisant MVVM?
Je suis de la validation de la saisie de l'utilisateur dans mon viewmodel et de lancer un message de validation en cas de validation échoue pour l'une des valeurs.
J'ai juste besoin de mettre le focus sur le contrôle particulier pour lequel la validation a échoué.
Une idée de comment réaliser cela ?
Concept: Faire un AttachedBehavior ou d'un Contrôle Personnalisé - ont une nouvelle propriété de dépendance qui lorsque défini à true, vous vous concentrez que le contrôle et le ramener à de faux, de sorte que vous êtes prêt pour la prochaine fois qu'elle est définie à true.
Pour la saisie de l'utilisateur, le contrôle a le focus, droit? Pour programmatiques changements de valeurs de contrôle, comment vous assurez-vous que seul un contrôle de l'échec de la validation? Si plusieurs contrôles serait un échec de la validation, ce qui serait choisie pour obtenir le focus?
Une meilleure mise en œuvre de cette question peut être trouvée ici: stackoverflow.com/a/7972361/9758687
Pour la saisie de l'utilisateur, le contrôle a le focus, droit? Pour programmatiques changements de valeurs de contrôle, comment vous assurez-vous que seul un contrôle de l'échec de la validation? Si plusieurs contrôles serait un échec de la validation, ce qui serait choisie pour obtenir le focus?
Une meilleure mise en œuvre de cette question peut être trouvée ici: stackoverflow.com/a/7972361/9758687
OriginalL'auteur user2519971 | 2013-10-29
Vous devez vous connecter pour publier un commentaire.
Généralement, lorsque l'on veut utiliser une INTERFACE utilisateur de l'événement, tout en respectant les MVVM méthodologie, nous avons créer un
Attached Property
:Cette propriété est utilisée comme ceci:
Alors nous pouvons nous concentrer les
TextBox
à partir de la vue du modèle, en changeant laIsFocused
propriététrue
:comment vous faites référence typeof(TextBoxProperties)? Je veux dire ce que l'espace de noms requis pour accéder à ce
Pour une explication complète, veuillez lire le Propriétés Attachées vue d'ensemble de la page sur MSDN... pour la petite explication, c'est la classe que j'ai défini cette propriété dans.
Attached
est l'espace de noms de la classe. C'est pourquoi la propriété est accessible comme ceci:Attached:TextBoxProperties.IsFocused
.Vous êtes les bienvenus. Si cette réponse a fourni une solution acceptable à votre problème, pourriez-vous s'il vous plaît laissez les autres utilisateurs connaissent par sélectionner comme accepté de répondre à, comme il est de coutume sur ce site?
Vous avez besoin d'importer de la propriété attachée par définir un espace de noms XAML (dans le cas de cet exemple, le préfixe d'espace de noms que j'ai utilisé était
Attached
, doncAttached:TextBoxProperties
).OriginalL'auteur Sheridan